2012-03-01 10 views
0

ANTLR仕様を行っています。私が代わりに+ PLUSで、ASTの代わりに、* ASTERISKに提示する書き換えルールを実行する必要がありANTLRの書き換え規則

characters ('*'^|'+'^|'?'^)? 

との代わりに:私のASTでは私はこのいずれかを実行する必要がありますか? QMARKノード? |

characters '*' 

それは

^(ASTERISK characters) 

として書き換え中することができますが、私はに対処する方法を知ってはいけない:

は、私たちはこのようなものを持っているかどうことを知っていますオペレーター?

答えて

2

はこれを試してみてください:ここ

grammar T; 

// options ... 

tokens { 
    ASTERISK; 
    PLUS; 
    QMARK; 
} 

// @header and/or @members ... 

rule 
: (characters -> characters) ('*' -> ^(ASTERISK characters) 
           | '+' -> ^(PLUS characters) 
           | '?' -> ^(QMARK characters) 
          )? 
; 

キーはオプション*+または?ない存在する場合、charactersはちょうど書き換えルールによってcharactersに滞在することです:(characters -> characters)

関連する問題