无法理解lex程序中的错误来计算令牌数

时间:2013-10-07 18:33:16

标签: lex

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

1 个答案:

答案 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);
}