t021hoist.g
来自「antlr最新版本V3源代码」· G 代码 · 共 46 行
G
46 行
/** Demonstrates how semantic predicates get hoisted out of the rule in * which they are found and used in other decisions. This grammar illustrates * how predicates can be used to distinguish between enum as a keyword and * an ID *dynamically*. :) * Run "java org.antlr.Tool -dfa t.g" to generate DOT (graphviz) files. See * the T_dec-1.dot file to see the predicates in action. */grammar t021hoist;options { language=Python;}/* With this true, enum is seen as a keyword. False, it's an identifier */@parser::init {self.enableEnum = False}stat returns [enumIs] : identifier {enumIs = "ID"} | enumAsKeyword {enumIs = "keyword"} ;identifier : ID | enumAsID ;enumAsKeyword : {self.enableEnum}? 'enum' ;enumAsID : {not self.enableEnum}? 'enum' ;ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;INT : ('0'..'9')+ ;WS : ( ' ' | '\t' | '\r' | '\n' )+ {$channel=HIDDEN} ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?