Boolean in ANTLR4? -


this code :

grammar test; assignstatement : id '=' bool ';' ; id : id_letter (id_letter | digit)* ;   fragment id_letter : [a-z] | [a-z] | '_' ; fragment digit : [0-9] ; bool : 'true' | 'false' ; ws  : [ \t\r\n]+ -> skip;  

but when test sentence :

x = true ; 

it has error :

mismatched input 'true' expecting bool 

why did have error ? how fix ? appreciated .

the lexer match id rule first because order matters. therefore, move bool rule above fix this:

assignstatement : id '=' bool ';' ;  fragment id_letter : [a-z] | [a-z] | '_' ; fragment digit : [0-9] ;  bool : 'true' | 'false' ; id : id_letter (id_letter | digit)* ;  ws  : [ \t\r\n]+ -> skip; 

Comments