Я играл с antlr, чтобы сделать своего рода проверку формулы Excel. Antlr выглядит довольно хорошо, однако у меня есть некоторые сомнения по поводу того, как это работает.
Представьте, что у меня есть грамматика, которая уже знает обо всех видах токенов, необходимых для проверки формулы Excel (ссылки на правила, операции и т. Д.). В этой грамматике нет действительного токена для символов валюты (€, £ и т. Д.), Хотя у меня есть токен 'ERROR_CHAR', который соответствует чему-либо: ERROR_CHAR: .;
Вот что я хочу знать о примере ввода: =€€€+SUM(1,2)
- Формула недействительна
- Все токены после
€€€
действительны и для них есть правила -> +SUM(1,2)
Мой анализатор знает только, что €
недопустим, но не знает о последовательности ERROR_CHAR, как и €€€
, и поэтому все входные данные неверны, и все последующие токены перехватываются прослушивателем ошибок. Я предполагаю, что это потому, что, основываясь на моих правилах синтаксического анализа, я не говорю, что ERROR_CHAR может присутствовать в любом месте ввода.
Я не хочу пропускать эти токены, потому что я хотел бы выделить позицию ошибки, и я уже пропускаю пробелы.
У вас есть идеи, как я могу справиться с этим?