您好我是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;
}
我也看到了其他问题,但可以在此代码中找到错误。请帮助。
答案 0 :(得分:2)
您错误地定义了id
。 Flex正在寻找名为letter|digit
的字符类,但无法找到它。您需要将正则表达式从{
}
对中分解出来。
id {letter}({letter}|{digit})*