0

我编写了 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
4

1 回答 1

1

您在 lex 规范的定义部分中的初始化不太正确。它应该是一个语法正确的 C 语句,缩进。此外,您要递增的代码count 必须与它所使用的模式位于同一行。所以你想要这样的东西:

    int count = 0;
digit [0-9]
letter [A-Z][a-z]
%%
{letter}|({letter}|{digit})*    count++; 
%%
int main()
{
    yylex();
    printf("no. of identifier=%d",count);
}
于 2013-10-08T13:16:14.977 回答