2

私の言語のASTを作成するパーサー/レクサーを正常に構築しました。うん!!私は今、「通訳」の段階にいます。手続き型言語のように実際には実行されていないため、言語は宣言型であるため、通訳を引用符で囲んで言います。これは、後でアプリケーションの実行で使用されるJavaオブジェクトに変換されています。

ASTを歩いているときに、ツリーノードをJavaオブジェクトに変換する必要があります。これらのJavaオブジェクトは、私のプログラムの他の場所で使用されます。Javaオブジェクトを作成するアクションを作成する方法を理解していますが、アクションの結果をメインプログラムに戻すにはどうすればよいですか?

@members {}タグを使用して、そこにgetterメソッドを記述しますか?

4

1 に答える 1

1

@members {}タグを使用して、そこにgetterメソッドを記述しますか?

はい、それはオプションです。ただし、(ツリー)文法ルールはカスタムオブジェクトを返すことができるため、ツリーウォーカー(またはパーサー)のエントリポイントを呼び出すと、次のカスタムオブジェクトが返されます。

文法

tree grammar YourTreeWalker;

...

walk returns [CustomObject obj]
 : ... 
   {
     $obj = ...
   }
 ;

...

コードの他の場所

...
YourTreeWalker walker = new YourTreeWalker(...); 
CustomObject obj = walker.walk();  
于 2012-08-10T21:11:48.143 に答える