Lex错误无法识别的规则

时间:2014-02-16 16:03:08

标签: lex flex-lexer

您好我是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;
}

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

1 个答案:

答案 0 :(得分:2)

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

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