免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2614 | 回复: 4
打印 上一主题 下一主题

为什么编译lex产生的文件出错?请高手指点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-09 16:25 |只看该作者 |倒序浏览
%{
     int count;
%}
        digit [0­-9]
%%
        {digit}        {count++ }
%%
int yywrap(void){
return 1;
}
int main(void) {
     count=0;
     yyin = fopen("input", "r");
     yylex();
     printf("\nThe number of digit is:%d\n",count);
     fclose(yyin);
}

编译用lex产生lex.yy.c文件出现一下问题.请大牛帮忙解决,现谢谢了
test.lex:6: 错误: 程序中有游离的‘\255’
test.lex: 在函数‘yylex’中:
test.lex:9: 错误: ‘digit’未声明(在此函数内第一次使用)
test.lex:9: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其


我用的是ubuntu 9.04. gcc版本是4.3.3

论坛徽章:
0
2 [报告]
发表于 2010-03-09 17:14 |只看该作者
本帖最后由 qtdszws 于 2010-03-09 17:18 编辑

  1. %{
  2.      int count;
  3. %}
  4. digit [0-9]
  5. %%
  6. digit        {count++; }
  7. %%
  8. int yywrap(void){
  9. return 1;
  10. }
  11. int main(void) {
  12.      count=0;
  13.      yyin = fopen("input", "r");
  14.      yylex();
  15.      printf("\nThe number of digit is:%d\n",count);
  16.      fclose(yyin);
  17. }  
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-09 18:07 |只看该作者
回复 2# qtdszws


    digit和{digit}应该不同吧.digit不是字符串"digit",{digit}代表数字?

论坛徽章:
0
4 [报告]
发表于 2010-03-09 21:48 |只看该作者
嗯,是错了,应该更正为{digit}

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2010-03-09 23:58 |只看该作者
含有一些本可应该存在的不可见字符吧,再者
digit [0­-9] 应该顶着一行的开头写
cout++后面打分号,别的没问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP