У меня (наконец) завершен синтаксический анализатор, который обрабатывает мою DSL и переводит ее на мои объекты домена. Теперь я хочу добавить правильную обработку ошибок, и я хочу добавить номера строк к ошибкам, сообщаемым синтаксическим анализатором.Добавление номеров строк к ошибкам синтаксического анализа без прямого позиционирования
Приведенные примеры и ответы here и here, похоже, указывают, что я должен изменить объекты своего домена, чтобы расширить scala.util.parsing.input.Positional
. Пример слишком упрощен для моего случая, и (из-за моей неопытности) кажется, что мое дело не совсем подходит этой парадигме.
Основная проблема, с которой я сталкиваюсь, заключается в том, что я не хочу, чтобы мои объекты домена напрямую расширялись Positional
. Они используются в других местах программы, которые не имеют никакого отношения к разбору (синтаксический анализатор - это просто расширение программы для создания другого способа ввода данных). Кроме того, я не знаю, как обрабатывать случаи, которые выводят String
(или другие классы, к которым у меня нет никакого контроля). Также есть проблема, что объекты моего домена уже расширяют другие объекты программы, я не могу просто изменить иерархию таким образом.
Есть ли альтернативный способ справиться с этим, не изменяя объекты домена и связывая их с Positional
? (Извиняюсь, если я прошу что-то тривиальное, что связано с внедрением черт и т.д., потому что я еще новичок в Scala)
Как это использовать в моем парсере? У меня есть парсер около 300 строк (довольно сложный BNF). Что я могу изменить, чтобы интегрировать это? – jbx