2011-08-20 69 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”类型,当然...... –