私は flex/bison を理解しようとしていますが、ドキュメンテーションは私にとって少し難しく、おそらく何かをひどく誤解しています。ここにテストケースがあります: http://namakajiri.net/misc/bison_charlit_test/
ファイル "a" には 1 文字の "a" が含まれています。「foo.y」には、次のような簡単な文法があります。
%%
file: 'a' ;
生成されたパーサーはファイル "a" を解析できません。構文エラーが発生します。
文法「bar.y」はほぼ同じですが、名前付きトークンの文字リテラルを変更しただけです。
%token TOK_A;
%%
file: TOK_A;
そして、bar.lex で:
a { return TOK_A; }
これはうまく機能します。
ドキュメントのように、文字リテラルをバイソン端末として直接使用しようとすると、何が間違っていますか?
文法を「statement: selector '{' property ':' value ';'」のようにしたい '}'" ではなく、"ステートメント: セレクター LBRACE プロパティ COLON 値 SEMIC RBRACE"...
debian wheezy で bison 2.5 と flex 2.5.35 を実行しています。