0

私は ANTLR4 を使用しており、文法内に「インポート」ステートメントがあります。

ANTLR4 には、ビジター内で行うのではなく、入力ファイルを自動的に開いて解析するオプションがありますか (「インポート」宣言ごとに別のパーサー/レクサーとビジターを作成します) ?

「かわいい」確かにもう見たことはあるけど、もう見つけられない。

私の文法の中で:

importStatement : 'import' ID ';' // Here ? an action (Java code)
                                  // to prepend an AST to my current AST ?

入力ファイル内:

Import test;
4

1 に答える 1

1

これには組み込み機能はありません。これは主に、それを必要とするすべての言語に、それを行う方法に関する独自のルール セットがあるためです。さらに、これにより、プロジェクト全体の解析操作が O(n) から O(n²) にすばやく移行します (つまり、各ファイルを 1 回解析してから、各ファイルのプロジェクト全体を解析するようになります)。

インポートを解決する前に言語で正しい解析ツリーを構築できる場合 (たとえば、インポートに#define表示される可能性のある任意のステートメントがない場合)、C/C++ ではなく、事前に各ファイルを個別に解析する必要があります。インポートステートメントを解決します。

于 2013-05-21T13:19:19.493 に答える