0

{"action"}問題は、文法内のブロック内の現在のツリー ノードにアクセスする方法についてです。

私はJavaターゲットについて話しているので、生成されたルールメソッド内でオブジェクトにアクセスしたいと思いますroot_1(以下を参照してください、標準生成コード、SUBJECTこれが私の文法内のトークンです、それは問題ではありません):

  {
    Object root_1 = (Object)adaptor.nil();
    root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SUBJECT, "SUBJECT"), root_1);
    adaptor.addChild(root_1, stream_noun.nextTree());
    adaptor.addChild(root_0, root_1);
  }

文法の中で私は次のようなことをする能力が欲しいです:

subject :   noun -> ^(SUBJECT noun) { ... place code here to work with `root_1` object ... } ;

誰かがアイデアを提案できますか?ありがとう。

4

2 に答える 2

1

物件を探していると思います$tree

于 2013-03-27T16:32:13.737 に答える
0

さて、私はいくつかの醜い方法を見つけました。構築を使用して、言及されたroot_1オブジェクトへのアクセスを取得し、オブジェクトへのアクセスを取得できます。@afterroot_0

subject
@after{
    // ...((CommonTree)root_0).getChild(0)... - this is `root_1` object.
}
    :   noun -> ^( SUBJECT noun);

しかし、誰かがより適切な方法を提案してくれれば、それは歓迎されます。

UPD:親愛なる280z28が述べたように、これは set((CommonTree)root_0)に置き換えることができます。$treeoptions{ASTLabelType=CommonTree;}

于 2013-03-27T15:35:14.400 に答える