1

私のlexコードにいくつかのエラーがあります。誰かが私がどこを間違えたか知っているかもしれません...

16    %%
17    {ws}  {/*no action and no return */}
18    {}    
19    {newline} {lineo++;}
20    {number}  {tokenval=atoi(yytext); return(NUM);}
21    {id}      {
22          int p = 0;
23          p = lookup(yytext);
24          if (p == 0) 
25          p = insert (yytext, ID);
26      tokenval = p;
27      return symtable[p].token;
28    
29    }
30    
31    <<EOF>>   {return DONE;}
32      {tokenval = NONE; return yytext[0];}
33    
34    
35    %%

私はこの種のテクノロジーの初心者であり、多くの時間を費やしていますが、良い結果はありません. コンソールからの以下のエラー:

new.l:21: unrecognized rule
new.l:28: unrecognized rule
new.l:28: unrecognized rule
new.l:36: EOF encountered inside an action
new.l:36: unrecognized rule
new.l:36: fatal parse error
make: *** [lex.yy.c] Error 1

悪いコード行 (行: 21-32) を削除すると、次のエラーが発生します。

new.l:19:2: エラー: 'lineo' が宣言されていません (この関数で最初に使用) {newline} {lineo++;}

4

1 に答える 1