ある種類の文法用のパーサーを既に持っているアプリケーションがあり、別の目的のために別の文法を追加する必要があります。
複数持つことは可能ですか?
もしそうなら、どうやって別のエントリポイントを取得しますか?
ありがとう
デビッド・アラン・フィンチ
ある種類の文法用のパーサーを既に持っているアプリケーションがあり、別の目的のために別の文法を追加する必要があります。
複数持つことは可能ですか?
もしそうなら、どうやって別のエントリポイントを取得しますか?
ありがとう
デビッド・アラン・フィンチ
--name-prefix
これは、Bison の--prefix
オプションと Flexのオプションを使用することで実現できると思います。
どちらの場合でも、yy
生成された関数で使用されるデフォルトの " " プレフィックスを、独自に選択したプレフィックスに置き換えることができます。
はい、可能です。
yaccには-pフラグが必要です。このフラグでは、デフォルトの「yy」の代わりに別のプレフィックスを指定できます。
lexによって生成されたファイルには、外部で使用される1つのシンボルyylexのみが含まれます。たとえば、-Dyylex=mySecondLexを使用してコンパイルできます。
直接的な答えではありませんが、汎用エンジンを使用して、文法から生成された LALR および DFA テーブルを処理できる、 GoldParserなどのより汎用的なアプローチの使用を検討することをお勧めします。
この方法では、同じアプリケーションで任意の数の異なる文法を使用できます。文法を変更しても、新しいソース コードは作成されず、新しいテーブル ファイルが作成されるだけです (埋め込みリソースなどとして含めることができます)。
標準の lex と yacc にはそれを行う方法がありません。他のいくつかの実装と同様に、Flex と Bison も同様です。(コメントで) flex と bison を使用していないとおっしゃいましたが、lex と yacc のどのバージョンを使用していますか?