1

次のような解析ツリーを生成しました。

afs = new AntlrFileStream(fn);
lexer = new Verilog2001Lexer(afs);
cts = new CommonTokenStream(lexer);
parser = new Verilog2001Parser(cts);
tree = parser.source_text();

HIDDEN チャネルのトークンから新しいノードを作成し、解析ツリーに追加したいと考えています。トークンから新しいノードを作成する方法を教えてください。次に、解析ツリー内の目的の場所にそれらを追加するにはどうすればよいでしょうか? 私は IParseTree インターフェイスと Context オブジェクトを見てきましたが、まだ理解できていません。

4

1 に答える 1

2

ANTLR 4.1 の時点では、ランタイムでこれを直接サポートしていません。さらに、構文木は、特定の文法のコンテキストで常に有効であることを意図しています。元々HIDDENチャネルにあったトークンからノードを追加すると、この不変条件が壊れます。

解析ツリー自体を変更する代わりに、使用している各プロパティのインスタンスを定義して追加情報を解析ツリー ノードにアタッチし、特定のインスタンスParseTreeProperty<T>にプロパティ値を割り当てる必要があります。ParseTree

于 2013-11-13T00:32:43.163 に答える