2011-08-20 7 views
1

ANTLR文法でデフォルトのトークンチャネルと非表示のトークンチャネルを切り替えることはできますが、3番目のチャネルが必要です。どのようにして、新しいトークンチャンネルをその文法で定義できますか?たとえば、「代替」という名前のチャンネルが必要だとします。ANTLR:新しいチャネルを文法で定義する

答えて

1

をあなたが使用できるターゲット

//This must be assigned somewhere 
@lexer::context { 
    ANTLR3_UINT32 defaultChannel; 
} 

TOKEN : 'blah' {$channel=defaultChannel;}; 

これは、すべてのルールの後にリセットされるので、チャンネルの割り当てがルール間で持続するようにするには、nextTokenStr()をオーバーライドする必要があります。

+0

もちろん、どこかで 'ALTERNATIVE'の型を定義しなければなりません... –

関連する問題