2

私は次のANTLRルールを持っています:

procedure
 : ('int' | 'char') IDENT '(' args ')' body -> ^(PROCEDURE IDENT (args)* body)
 ;

('int' | 'char')ASTの部分をキャプチャしたいです。ご覧のとおり、右側には表示されていませんが、どのように選択する'int''char'、ASTに表示するかはわかりません。'int'または'の部分をルートchar'の下のツリーのに配置したいと思います。PROCEDUREIDENT

4

1 に答える 1

3

ペアにラベルを付けてから、書き換えでラベルを参照できます。

procedure
    : primType=('int' | 'char') IDENT '(' args ')' body
      -> ^(PROCEDURE $primType IDENT args body)
    ;
于 2013-03-20T20:47:38.673 に答える