我正在使用antlr 4解析语法。我添加了一个ExceptionListener,它扩展了org.antlr.v4.runtime.BaseErrorListener并覆盖:
@Override
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine,
String msg, RecognitionException e) {
errors.add(new ParserError(rowPosition, cellPosition, cellValue));
}
我的语法如下:
cell: operator value;
value: STRING;
WS: [ ]+ -> skip;
operator: GT|LT|EQ;
GT: '>';
LT: '<';
EQ: '=';
STRING: [0-9a-zA-Z ]+;
现在,我的问题是我无法访问发生错误的上下文。因此,例如,当我传入类似“>”的字符串时,它将错过该值;如果我传入“结果”,则它将错过该运算符。 有没有办法找出错误侦听器中缺少/错误的地方?