3

次のルールがあると想像してください。オプションにしたいTYPE_IDのですが、欠落している場合はASTのデフォルト値に置き換えます。

assignment : TYPE_ID? ID '->' expression 
TYPE_ID : ('A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9')* ;

たとえば、上記のルールを前提として、解析する次のコードがあります。これは必要に応じてexpression機能すると想定しています。

monday -> 1.
Number tuesday -> 2.

ASTに、次のツリーに表示されるのと同じ場所のツリーの前に何かを配置してもらいたいです。mondayNumber

検索して検索しましたが、これを行う方法がわかりませんか?

4

1 に答える 1

3

次のことができます。

tokens {
  EMPTY;
}

 assignment :   TYPE_ID ID  '->' expression -> ^( TYPE_ID ID '->' expression)
            |   ID          '->' expression -> ^( EMPTY ID '->' expression)
            ;
于 2012-11-15T10:46:09.367 に答える