私の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++;}