2011-08-20 42 views
1

我知道可以在ANTLR語法中在默認和隱藏令牌通道之間切換,但可以說我想要第三個通道。我如何在Gramar中定義一個新的令牌頻道?例如,可以說我想要一個名爲ALTERNATIVE的頻道。ANTLR:在語法中定義新通道

回答

1

對於C你可以使用的目標

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

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

這會得到每一個規則後重置,所以如果你想要一個頻道分配可以在不同規則之間持續存在,您可能需要重寫nextTokenStr()。

+0

您必須在某處定義「ALTERNATIVE」類型,當然...... –