在Java Antlr错误监听器中获取错误上下文

时间:2019-07-02 13:46:02

标签: antlr4

我正在使用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 ]+;

现在,我的问题是我无法访问发生错误的上下文。因此,例如,当我传入类似“>”的字符串时,它将错过该值;如果我传入“结果”,则它将错过该运算符。 有没有办法找出错误侦听器中缺少/错误的地方?

0 个答案:

没有答案