Синтаксический анализатор Scalas/Haskells combinators достаточен?

Текст ошибки Er is een onverwachte fout opgetreden. исходит от сервера AFAS, однако весь трассировочный стек ошибки не передается через API. Следовательно, вы должны проверить в Profit Windows в Omgevingslogboek, что влечет за собой полный стек трассировки ошибки. Зайдите в Startmenu F4 / Algemeen / Omgeving / Beheer / Omgevingslogboek

Не стесняйтесь зарегистрироваться в Центре поддержки AFAS или connect.afas.nl, если вам нужна дополнительная помощь.

РЕДАКТИРОВАТЬ: Проверьте этот репозиторий на GitHub с библиотекой plug-and-play для AFAS AppConnector.

8
задан Zifre 8 July 2009 в 18:15
поделиться

6 ответов

Синтаксический анализатор Scala - это синтаксический анализатор с возвратом, поэтому он может иметь дело практически с любыми BNF или EBNF. Однако это также означает, что есть крайние случаи, когда ввод может быть очень медленным для чтения.

Если грамматику можно изменить на LL (1) грамматику , вы можете использовать ~! , чтобы свести к минимуму возврат.

Грамматика, вероятно, МОЖЕТ быть преобразована в LL (1), но, как написано, это не так. См., Например, что у Expression и Statement есть конфликты «первый / первый» (см. Это в конце связанной статьи).

В любом случае, для академического проекта этого достаточно. Для реальных компиляторов вам потребуются более быстрые парсеры.

4
ответ дан 5 December 2019 в 05:57
поделиться

Я никогда не использовал Scala, но существование категорического BNF делает это легким.

Тривиально переведенный в текст Haskell. ParserCombinators. Парсек:

goal = do c <- mainClass
          cs <- many classDeclaration
          eof
          return $ c:cs
mainClass = do token "class"
               name <- identifier
               ...

и т.д. перевод PArrows довольно тривиален также. Вы, вероятно, найдете легче иметь отличную lexing фазу перед синтаксическим анализатором, но можно обойтись без также.

11
ответ дан 5 December 2019 в 05:57
поделиться

Я использую синтаксический анализатор Scala combinators для парсинга МН / кода SQL, он работает как очарование.

6
ответ дан 5 December 2019 в 05:57
поделиться

Программирование в Scala (p. 647), говорит:

Это [синтаксический анализатор Scala combinator платформа] намного легче понять и адаптироваться, чем парсер-генератор, и различие в скорости часто не имело бы значения на практике, если Вы не хотите проанализировать очень большие исходные данные.

Поскольку я не классифицировал бы исходный код как очень большой вход (идеально), это должно быть достаточно.

2
ответ дан 5 December 2019 в 05:57
поделиться

По крайней мере, Парсек имеет встроенный лексический анализатор для подобных Java языков:

lexer = makeTokenParser javaStyle

Необходимо определить зарезервированные слова сами.

5
ответ дан 5 December 2019 в 05:57
поделиться

Я не имел дело с синтаксическим анализатором Scala или Haskell combinator библиотеки, но похоже, что грамматика должна быть прекрасной.

0
ответ дан 5 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: