Я сейчас пытаюсь импровизировать / исправить ошибку в существующей грамматике, созданной кем-то другим.
У нас есть собственный язык, для которого мы создали редактор. Мы используем eclipse ide.
Некоторые примеры грамматики, такие как
calc : choice INTEGER INTEGER
choice : add|sub|div|mul
INTEGER : ('0'..'9')+
Так что в моем редакторе, если я наберу
calc add 2 aaa
Таким образом, анализатор ошибок antlr распознает его как ошибку, так как он ожидает целое число, и мы ввели строку и выдают сообщение об ошибке, например
extraneous input 'aaa' expecting {'{', INTEGER}"
(у меня мой класс расширяет BaseErrorListener, где я создаю маркеры для этих ошибок)
Точно так же у меня есть такая грамматика для моего редактора.
Теперь вопрос: для всего этого он определяет, что что-то не так в синтаксисе, и выдает ошибки, но что за синтаксис, который не является частью грамматики, такой как
Если я введу какое-либо значение мусора, например
abc add 2 3
или
just_type_junk_in_editor
не выдает никакой ошибки, поскольку ‘abc’
или ‘just_type_junk_in_editor‘
не входит в мою грамматику
так что есть способ, которым для ключевых слов, которые не являются частью грамматики, анализатор ошибок antlr должен анализировать его как ошибку.