我编写了lex程序来计算linux中使用gedit的令牌数。但它没有运行。我是新的。我也无法在代码中找出问题。
这是程序代码:
count=0
digit [0-9]
letter [A-Z][a-z]
%%
{letter} | ({letter}|{digit})*
count++
%%
int main()
{
yylex()
printf("no. of identifier=%d",count);
}
错误信息是:
scanner.l:9: error: expected declaration specifiers before ‘yylex’
scanner.l:10: error: expected ‘{’ at end of input
答案 0 :(得分:1)
您在lex规范的Definitions部分中的初始化不太正确。它应该是一个语法正确的C语句,缩进。此外,您的代码将count
must be on the same line增加为其所使用的模式。所以你想要这样的东西:
int count = 0;
digit [0-9]
letter [A-Z][a-z]
%%
{letter}|({letter}|{digit})* count++;
%%
int main()
{
yylex();
printf("no. of identifier=%d",count);
}