0

Linuxでgeditを使用してトークンの数を計算するlexプログラムを作成しました。しかし、それは実行されていません.imこれは新しいです。また、コードの問題を見つけることができません。

これはプログラムコードです:

    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 に答える