1

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」ファイルを扱うときにこの演習を行う方法が見つかりません。

4

1 に答える 1

2

これに対処する最も簡単な方法は、Bison ファイルを 2 つの別々のディレクトリに置くことです。次に、コードを生成するときに、ファイルの各セットが対応する Bison ファイルと同じ場所に生成されると仮定すると、ファイルは競合しません。

于 2013-02-16T00:44:42.637 に答える