grammar t021hoist; | |
options { | |
language=JavaScript; | |
} | |
/* With this true, enum is seen as a keyword. False, it's an identifier */ | |
@members { | |
this.enableEnum = false; | |
} | |
stat returns [enumIs] | |
: identifier {enumIs = "ID"} | |
| enumAsKeyword {enumIs = "keyword"} | |
; | |
identifier | |
: ID | |
| enumAsID | |
; | |
enumAsKeyword : {this.enableEnum}? 'enum' ; | |
enumAsID : {!this.enableEnum}? 'enum' ; | |
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* | |
; | |
INT : ('0'..'9')+ | |
; | |
WS : ( ' ' | |
| '\t' | |
| '\r' | |
| '\n' | |
)+ | |
{$channel=HIDDEN;} | |
; |