【问题标题】:Lex error Unrecognized ruleLex 错误无法识别的规则
【发布时间】:2014-02-16 16:03:08
【问题描述】:

您好,我是 lex 的新手,一直在尝试编写一个程序来提取标识符。但它在第 9 行显示错误

{id} {printf("%s:IDENTIFIER",yytext);} 

“无法识别的规则” 代码如下:

%{
#include<stdio.h>
%}
digit [0-9]
letter [a-zA-Z]
id {letter}{letter|digit}*
%%
{id} {printf("%s:IDENTIFIER",yytext);}
%%
int main()
{
yylex();
return 0;
}

我也看到了其他问题,但可以在此代码中找到错误。请帮助。

【问题讨论】:

    标签: lex flex-lexer


    【解决方案1】:

    您错误地定义了id。 Flex 正在寻找一个名为letter|digit 的字符类,但找不到。您需要将您的正则表达式从 { } 对中分解出来。

    id {letter}({letter}|{digit})*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多