bison を実行すると、「stack.hh」にスタック クラスが作成されます。ファイル名は固定されていますが、内容は選択した名前空間にラップされます。
bison を使用して 2 つの個別の文法 (つまり 2 つの *.y ファイル) を生成し、C++ モードを使用すると、「stack.hh」ファイルが競合して上書きされます。
自動生成される「location.hh」および「position.hh」クラスでも同様のことが起こりますが、bison 2.7 では回避策があります。
%define api.location.type "foo::location"
foo
これにより、文法名前空間で文法名前空間を再利用できますbar
。
しかし、「stack.hh」ファイルを扱うときにこの演習を行う方法が見つかりません。