Отладка грамматики ANTLR4

Я новичок в ANTLR и добился больших успехов, пытаясь запустить парсер ASN.1 в ANTLR4. В настоящее время я нахожусь на стадии, когда я передаю входной файл для grun и вижу ошибки типа «строка 1: 12029 нет жизнеспособной альтернативы на входе ...»

Я пытаюсь связать это с какой-то проблемой с моими правилами, но найти неправильный ввод по количеству символов - проблема. Нормально ли для парсера ANTLR видеть ввод как одну строку, или я не могу распознать EOL из-за проблемы с правилом (я использую систему OSX)? Если вход в виде одной длинной строки - это нормально, может ли кто-нибудь порекомендовать инструмент для определения местоположения данной позиции символа в файле?


person kerlyn    schedule 24.01.2013    source источник


Ответы (1)


В вашем коде используются только \r окончания строк? ANTLR 4 увеличивает счетчик строк и сбрасывает позицию символа только тогда, когда используется символ \n. Если вам нужно обрабатывать простые \r окончания строк, вам нужно переопределить LexerATNSimulator.consume для выполнения этой проверки.

Проверка полного набора окончаний строк намного дороже, чем проверка только \n, поэтому, поскольку \r окончания строк встречаются редко, реализация по умолчанию использует \n для максимальной производительности.

person Sam Harwell    schedule 24.01.2013
comment
Спасибо! Я снова разблокирован. Я должен был попробовать преобразовать терминаторы строки во входном файле, прежде чем спрашивать ... - person kerlyn; 24.01.2013