Я обнаружил, что могу перехватывать ошибки во время синтаксического анализа, перезаписывая displayRecognitionError, но как мне найти родительский "узел" этой ошибки?
ех. если у меня есть грамматика:
prog: stat expr;
стат: STRING;
expr: INTEGER;
И введите ему «abc def».
Тогда я получу ошибку в "def", которая должна быть целым числом. В этот момент я хочу получить родителя, который является «expr» (так как он терпит неудачу внутри части INTEGER), и его родительский «прога». Вроде как трассировка стека печати в Java.
Я попытался посмотреть на узел из RecognitionException, проанализированный до displayRecognitionError, но он равен null, а с помощью CommonErrorNode родительский элемент равен null.
Должен ли я придерживаться совершенно другого подхода?