numberrange returns [String value]
: numberrangesub
{
String numberRange = ($numberrangesub.text);
String [] v = numberRange.split(",");
if (Integer.parseInt(v[0].trim()) < Integer.parseInt(v[1].trim())) $value =numberRange;
else throw new RecognitionException();
}
;
Обратите внимание на приведенный выше код ANTLR. В этом я хочу бросить удобное сообщение об ошибке, например "from value should be less than to value in BETWEEN clause"
. Я так ожидаю RecognitionException("from value should be less than to value in BETWEEN clause");
Но antlr не принимал, как указано выше.получение пользовательских сообщений об ошибках с использованием antlr3
В классе java, где я вызываю сгенерированный класс java от Antlr. Я обращаюсь так, как следует.
try
{
parser.numberRangeCheck();
}
catch (RecognitionException e)
{
throw createException("Invalid Business logic syntax at " + parser.getErrorHeader(e) + ", " + parser.getErrorMessage(e, null), Level.INFO, logger);
}
Любая помощь будет назначена.
Не могли бы вы использовать код форматирования кода ANTLR? Это облегчит чтение. – Jorn
numberrange returns [String value] : numberrangesub { Номер строкиRange = ($ numberrangesub.text); Строка [] v = numberRange.split (","); if (Integer.parseInt (v [0] .trim())
Ashok
Я использую форматировщик кода, но он появляется неформатированным после того, как я разместил его. Я не знаю, почему это происходит? – Ashok