Я пишу синтаксический анализатор выражений для приложения, написанного в основном на Scala. Я построил объекты AST на Scala, и теперь мне нужно написать парсер. Я слышал о встроенных комбинаторах синтаксического анализатора Scala, а также об ANTLR3, и мне интересно: что обеспечит лучшую производительность и простоту написания кода? Уже:
Профи ANTLR
- Хорошо известный
- Быстрый
- Внешний DSL
- ANTLRWorks (отличная IDE для отладки / тестирования парсера грамматики)
Минусы ANTLR
- На основе Java (взаимодействие со Scala может быть проблематичным, есть опыт?)
- Требуется большая зависимость во время выполнения
Плюсы синтаксического комбинатора
- Часть Scala
- На один шаг сборки меньше
- Нет необходимости в зависимости от времени выполнения; например уже включен в библиотеку времени выполнения Scala
Минусы синтаксического комбинатора
- Внутренний DSL (может означать более медленное выполнение?)
- Нет ANTLRWorks (предоставляет хорошие функции тестирования парсера и визуализации)
Есть предположения?
РЕДАКТИРОВАТЬ: этот синтаксический анализатор выражений анализирует алгебраические / математические выражения. Он будет использоваться в приложении Magnificalc для Android, когда оно будет завершено.