ANTLR4 中的布尔值?
Boolean in ANTLR4?
这是我的代码:
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;
但是当我用句子测试它时:
x = true ;
它有一个错误:
mismatched input 'true' expecting BOOL
为什么我有这个错误?如何解决?您的帮助将不胜感激。
词法分析器将首先匹配 ID 规则,因为顺序很重要。因此,将您的 BOOL 规则移至其上方以解决此问题:
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;
这是我的代码:
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;
但是当我用句子测试它时:
x = true ;
它有一个错误:
mismatched input 'true' expecting BOOL
为什么我有这个错误?如何解决?您的帮助将不胜感激。
词法分析器将首先匹配 ID 规则,因为顺序很重要。因此,将您的 BOOL 规则移至其上方以解决此问题:
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;