Построение компилятора или интерпретатора с использованием Python

Сейчас я пишу свое предложение PhD для создания языкового процессора для нового языка спецификации для Java (cf. JML, или SpeС# для С#), и нужно приложить инструмент внедрения, чтобы начать разработку. Исследовательские аспекты языка (синтаксис, семантика, теоретические результаты) ортогональны моему выбору реализации, поэтому я бы хотел использовать Python (2.6+) по моим собственным причинам. Конечным продуктом будет либо компилятор, либо интерпретатор, способный проверять некоторые определенные свойства для программ, написанных на Java.

Какая лучшая структура/библиотека для создания компиляторов/интерпретаторов в Python? Включены ли "батареи" для этой проблемы?

Бонусные баллы, присуждаемые решениям, имеющим ссылочные компиляторы для Java 6 +.

Ответ 1

Возможно, вы хотите взглянуть на this

Ответ 2

Я лично терпеть не могу antlr, я использую lex/yacc в качестве генератора парсера. Вот реализация Python http://www.dabeaz.com/ply/, которую вы могли бы использовать.

Это просто касается синтаксического анализа, хотя на самом деле даже не начинается построение вашего интерпретатора. Для этого вы, вероятно, будете строить его с нуля - я никогда не слышал о библиотеке, специально ориентированной на это (я был бы рад увидеть некоторых из них, пожалуйста, напишите мне там в комментариях, если вы знаете какие-либо).

Отправляйте этот SO-сообщение как начать писать очень простой язык программирования, он имеет хорошие идеи.

Ответ 3

Можно ли предложить antlr с его привязкой к python?