【发布时间】:2021-12-30 03:31:09
【问题描述】:
在我的 ANTLR4 语法中允许在字符串中使用分号时遇到了一些问题。
我的语法应该接受这个:
prop_name@Default:'Building 3;100'
我的语法是这样的:
grammar BoitFilter;
filter : ';'* expression ( ';'+ expression )* ';'*;
expression : field boitOperator boitValueExpression;
field : ( parent '.' )? field_name;
parent : IDENTIFIER;
field_name : IDENTIFIER;
IDENTIFIER : [a-zA-Z0-9_@\[\]\.]+;
boitInOperator : ':(' boitValueExpression ( ','+ boitValueExpression )* ')';
boitOperator : ( ':' | '<' | '>' | '<:' | '>:' | boitInOperator );
boitValueExpression : QUOTE boitValue QUOTE;
boitValue : VALUE_STRING_CHARACTER+;
VALUE_STRING_CHARACTER : [\ \:\;åäöÅÄÖa-zA-Z_0-9\*\-];
QUOTE : '\'';
我认为我的 VALUE_STRING_CHARACTER 语法可能是错误的,但我不确定为什么。
在我的 Java 代码中,我有一个 boitValue 的侦听器:
@Override
public void enterBoitValue(BoitFilterParser.BoitValueContext ctx) {
String textValue = ctx.getText();
// Do something with the text
}
在这里,我希望 textValue 变量是“'Building 3;100'”,但它的值是“'Building 3
我的语法似乎无法接受分号作为字符串的一部分。
知道我做错了什么吗?
【问题讨论】: