我已经以这种方式重新定义了STRING终端
terminal STRING : ('.'|'+'|'('|')'|'a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
因为我必须识别STRING没有用“或”
分隔问题在于,尽管生成的解析器有效,但它会截断识别的字符串的第一个和最后一个字符。我错过了什么?
答案 0 :(得分:1)
如果您自定义STRING规则,则还必须调整相应的值转换器。
这样的东西必须绑定在运行时模块中:
public class MyStringValueConverter extends STRINGValueConverter {
@Override
protected String toEscapedString(String value) {
return value;
}
public String toValue(String string, INode node) {
if (string == null)
return null;
return string;
}
}
有关详细信息,请参阅文档。