Antlr4:使用两个相同的词法分析器规则使语法工作
Antlr4: Make grammar work with two identical lexer rules
我有语法:
grammar qwe;
query
: COLUMN OPERATOR value EOF
;
COLUMN
: [a-z_]+
;
OPERATOR
: ('='|'>'|'<')
;
STRING_LITERAL
: [a-zA-Z_]+
;
value
: STRING_LITERAL
;
WS : [ \t\r\n]+ -> skip ;
示例查询:total_sales>qwe
.
问题在于 COLUMN
和 value
词法分析器规则是相同的。这会导致错误:
如何重写语法以使其在没有错误消息的情况下运行?
当然,您不能有两个相同的词法分析器规则。在这种情况下,您似乎应该删除 COLUMN 规则并将其视为一个值,如果真的没有什么可以区分它们的话。
另一种选择是考虑为 COLUMN 使用 reserved words 的规则(如果适用的话)。
我有语法:
grammar qwe;
query
: COLUMN OPERATOR value EOF
;
COLUMN
: [a-z_]+
;
OPERATOR
: ('='|'>'|'<')
;
STRING_LITERAL
: [a-zA-Z_]+
;
value
: STRING_LITERAL
;
WS : [ \t\r\n]+ -> skip ;
示例查询:total_sales>qwe
.
问题在于 COLUMN
和 value
词法分析器规则是相同的。这会导致错误:
如何重写语法以使其在没有错误消息的情况下运行?
当然,您不能有两个相同的词法分析器规则。在这种情况下,您似乎应该删除 COLUMN 规则并将其视为一个值,如果真的没有什么可以区分它们的话。
另一种选择是考虑为 COLUMN 使用 reserved words 的规则(如果适用的话)。