ルールの例:
%token TOKEN
%%
foo: TOKEN;
%%
TOKEN が語彙トークンであると考えると、解析すると:
tokken
これを変更する方法があることが示されるSyntax error expected TOKEN recive tokken
ので、 TOKEN 名が語彙に挿入されたとは言いSyntax error expected token recive tokken
ません。
いくつかの深い調査の後、私はそれを見つけました。
トークンの宣言について:
パーサー.y:
%token TOKEN "token"
%%
foo : TOKEN
tokken
エラーメッセージの代わりに書くと、この maketoken
は、tokken 宣言の文字列 ( %token TOKEN "token"
) で見つかったものを示します。私はより良い例を作ります:
パーサー.y:
%token TOKEN "token"
%token PYC ";"
%%
foo : TOKEN PYC
プログラムが次の場合token.
、エラーはunexpected "." expecting ";"
次のようになります。「;」なし 行で %token PYC ";"
は、エラーはunexpected "." expecting PYC
理解しにくいものになります。