反例による証明:
%%
nonterminal1: 'a' nonterminal2 'b';
nonterminal1: '{' nonterminal2 '}';
nonterminal2: '.' | '!';
バイソンは文句なしにそれをコンパイルします。Yacc の他の 3 つの変種を試しました。すべてが文句なしにそれをコンパイルしました。a/b 行なしでもコンパイルできます。bison
ファイルで実行する限りテストしました。その上で C コンパイラをテストしませんでしたが、Bison によって生成されたコードが有効でない場合は驚くべきことです。
問題は、あなたが縮小したものほど単純ではありません。そのため、Bison からのエラー メッセージとともに、何がうまくいかないかの実際の SSCCE ( Short, Self-Contained, Correct Example ) を提供してください。に指定しているオプションがあれば、それもbison
教えてください。bison
(C ファイル) からの出力をオブジェクト ファイルにコンパイルするときに問題が発生する場合は、そのことも記載する必要があります。
(記録として、Bison のバージョンは 2.3 で、Mac OS X 10.7.5 で動作していました。)
'
プログラミング以外の特定のエディタを使用している場合、引用文字が ASCII (39; Unicode U+0027)以外のものに変更されている可能性があることに注意してください。これは物事を台無しにするでしょう。ただし、一方の行が変更され、もう一方の行が変更されなかった理由は明らかではありません。問題を解決するには、エラー メッセージを表示する必要があります。