2013-07-24 3 views
1

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

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

+2

Из моего опыта кривая обучения Киамы действительно довольно крутая. Тем не менее, он поставляется с множеством хороших примеров, иллюстрирующих, среди прочего, использование таблиц символов. Я только реализовал интерфейс для небольшого языка, но действительно наслаждался использованием Kiama. –

+0

Вы пробовали играть с шаблоном g8? https://github.com/inkytonik/kiama.g8 –

+1

Kiama красивый. Я работал только с основанным на стратегии модулем терминов-переписывания, но это был огромный отрыв от работы с логическими преобразованиями первого порядка. –

ответ

3

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

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

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

+0

Спасибо, с нетерпением жду этого. Кроме того, я не смог присоединиться к группе google, которая всегда реагирует на отсутствие разрешения. – FUD

+0

Извините, просто увидел это сообщение. Группа google требует, чтобы вы подавали заявку на членство, чтобы не выпускать спамеров и т. Д., Но я обычно отвечаю очень быстро. Вы подали заявку на членство? – inkytonik