2014-02-16 149 views
1

嗨我是lex的新手,一直在尝试编写一个程序来提取标识符。但它表明在第9行Lex错误无法识别的规则

{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; 
} 

我所看到的其他问题,但也能找到这个code.Please帮助的错误。

回答

2

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

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