2014-02-16 162 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})*