Я пытаюсь улучшить сообщения об ошибках antlr и замечает, что синтаксические предикаты кажутся корнем сообщений о плохих ошибках.Улучшить сообщения об ошибках синтаксического предиката?
Это я сейчас работаю. Вот пример структуры грамматики. Извините, что я не могу предоставить фактическую грамматику. Надеюсь, это иллюстрирует это.
defs
: (a) => a | b
;
a
: A B c
;
//b is actually much further down the chain and due to ordering can't be moved up.
b
: A c
;
Проблема в том, что, например, если у вас есть жетоны «A B D». Сообщение об ошибке, которое вы получаете, указано в правиле 'b'. Я хочу, чтобы сообщение об ошибке было из правила 'a'. Значение, если «A B» соответствует, тогда я хочу ошибку, если «c» не сопоставляется.
Я думал, может быть, вы могли бы сделать это
a
: (A B) => A B c | {EmitErrorMessage("error");}
;
Да, я мог бы поклясться, что пробовал это раньше, и это не сработало. Хотя я просто попробовал это сейчас, и он работает. Благодаря! – Will