Java antlr4 parsecancellationException игнорируетсяJAVA

Программисты JAVA общаются здесь
Anonymous
Java antlr4 parsecancellationException игнорируется

Сообщение Anonymous »

Я работаю над проектом Mini Compiler, и я пытался бросить ParsecancellationException в классе Parselistener или аналогичное исключение, чтобы остановить анализ при столкновении с фатальной ошибкой, однако это просто игнорируется во время выполнения. br /> мне было интересно, знал ли кто -нибудь способ успешно остановить анализ после выброса исключения. быть игнорируемым. Я также попытался бросить runtimeexceptions вместо этого, безрезультатно. Br /> Вот код моего метода, у меня возникают проблемы с: < /p>

Код: Выделить всё

 @Override
public void exitAddExpr(BasicLangParser.AddExprContext ctx) {
Util.Value left = stack.pop();
Util.Value right = stack.pop();

if (left.datatype==right.datatype) {
String result = switch (left.datatype) {
case INT, FLOAT -> String.valueOf((Double)left.getValue() + (Double)right.getValue());
case STRING, CHAR -> (String)left.getValue() + (String)right.getValue();
default -> throw new ParseCancellationException("Addition Error - Invalid Datatype ("+left.datatype.toString()+","+right.datatype.toString()+")");
};
stack.push(Util.Value.newValue(result));
} else {
throw new ParseCancellationException("Addition Error - Mismatched Datatypes ("+left.datatype.toString()+","+right.datatype.toString()+")");
}

super.exitAddExpr(ctx);
}

Поскольку этот код фактически бросает исключение, 12 -я строка (stack.push) не работает, и поэтому позже в своей программе я столкнулся с вышеупомянутым исключением пустого стека.
Редактировать:
Я сейчас не пытаюсь поймать ParsecancellationException в моем коде; Я просто поймал это исключение, используя отладчик IntelliJ и включил точки останова исключительных исключений.
Я не заблокировал распространение исключений в моем коде, хотя я не осознаю, делает ли Antlr4 это, отсюда и мой вопрос. < /p>
Единственное другое исключение - пойманное Исключение, где я пытаюсь проанализировать строку как двойной, чтобы определить, численная она.

Подробнее здесь: https://stackoverflow.com/questions/794 ... on-ignored

Вернуться в «JAVA»