2016-05-03 16 views
-1

デフォルトコンテキストオブジェクトを生成することは可能ですか?antlr4 - デフォルトコンテキストオブジェクト

寄付以下の単純化された文法

class { 
    method* constructor? 
} 

と解析されたテキスト:

SomeClass { 
} 

は、それが作るANTLRコンストラクタがあったかのように、入力されたテキストを解釈することは可能でしょうか?

私は、クラスコンテキストリスナーでいくつかのハックを実行してコンストラクタを追加できますが、非常に面倒です。コンテキストオブジェクトが可能な最低レベルで提供されていない場合、デフォルトの "テキスト"を生成する方法があるのだろうかと思います。

答えて

0

ベーシックコースAntlr。 メソッド(enter(rulename)またはexit(rulename))を持つ(文法名)BaseListenerと呼ばれるANTLRリスナーによって生成されます。 私はそれがメソッドが呼び出されるときundestandableだと思います。 コンストラクタルールがある場合など、コンストラクタを呼び出して、必要な処理を行うメソッドを上書きすることができます。次に、このリスナーをパーサーに追加します。

+0

コンストラクタが存在しない場合、リスナーは呼び出されません。それが私の要点です。 antlrが構文解析ツリーが構築される前に、(明示的に指定されていない場所で)デフォルトのコンテキストオブジェクトを追加する方法。 – user3364192

+1

通常の使用法ではありません。コンテキストインスタンスをmanuelly作成することはできません。ありがとう-1 –