为什么编译lex产生的文件出错?请高手指点

发布于 2022-09-18 11:22:54 字数 843 浏览 15 评论 0

%{
     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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

墨小墨 2022-09-25 11:22:54

本帖最后由 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. }  

复制代码

薆情海 2022-09-25 11:22:54

回复 2# qtdszws

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

も星光 2022-09-25 11:22:54

嗯,是错了,应该更正为{digit}

愁以何悠 2022-09-25 11:22:54

含有一些本可应该存在的不可见字符吧,再者
digit [0­-9] 应该顶着一行的开头写
cout++后面打分号,别的没问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文