библиотеки для внешней оценки DSL в Scala

Какие шаги необходимы для оценки внешнего DSL в scala и какие библиотеки для этого доступны?

Покопавшись, я могу создать AST вне классов, используя комбинаторы синтаксического анализатора. Каковы следующие шаги в этом процессе? Я посмотрел на kiama (https://code.google.com/p/kiama/) но из документации кажется неясным (может быть, из-за моих ограниченных знаний в области обработки языка), как поддерживать таблицы символов, как привязывать действия к операторам dsl и т. д.


person FUD    schedule 24.07.2013    source источник
comment
По моему опыту, кривая обучения Kiama действительно довольно крутая. Тем не менее, он поставляется с множеством хороших примеров, иллюстрирующих, среди прочего, как использовать таблицы символов. Я только реализовал интерфейс для небольшого языка, но мне очень понравилось использовать Kiama.   -  person Malte Schwerhoff    schedule 24.07.2013
comment
Вы пробовали играть с шаблоном g8? github.com/inkytonik/kiama.g8   -  person Ionuț G. Stan    schedule 24.07.2013
comment
Киама красивая. Я работал только с модулем переписывания терминов на основе стратегии, но это был огромный шаг вперед в работе с логическими преобразованиями первого порядка.   -  person Randall Schulz    schedule 24.07.2013


Ответы (1)


Я согласен, что было бы хорошо иметь больше документации в стиле учебника для задач обработки общего языка в Kiama. Мы работаем над этим, но пока мне нечего сообщить конкретно.

А пока все, что я могу предложить, — это примеры из дистрибутива Kiama. В частности, пример minijava — достаточно доступный компилятор для нетривиального подмножества Java. Он выполняет анализ имен и типов (см. SemanticAnalysis.scala) и генерирует байт-код JVM. Семантический анализ использует простую модель перехода среды от объявлений к использованию имен. Не стесняйтесь обращаться к нам здесь или в списке рассылки Kiama, если у вас есть конкретные вопросы о том, как работает пример.

Пример Oberon-0 также является полным компилятором с императивного языка на C, включая семантический анализ.

person inkytonik    schedule 25.07.2013
comment
Спасибо с нетерпением жду. Также я не смог присоединиться к группе Google, которая всегда отвечает, что у меня нет разрешения. - person FUD; 25.07.2013
comment
Извините, только что увидел это сообщение. Группа Google требует, чтобы вы подали заявку на членство, чтобы не допустить спамеров и т. д., но я обычно отвечаю очень быстро. Вы подали заявку на членство? - person inkytonik; 23.10.2013