Что такое хороший VM для разработки языка хобби?

Я думаю о записи моего собственного небольшого языка.

Я нашел несколько опций, но не стесняйтесь предлагать больше.

  • JVM
  • Попугай
  • OSA

Много языков использует JVM, но если Вы не пишете язык выхода Java, все питание, которое stdlib дает Вам, собирается чувствовать себя ужасным; это не очень хорошо в динамическом материале также.

Попугай кажется хорошим VM для разработки языков, но это имеет немного заброшенного/незаконченного/хобби запаха проекта к нему.

OSA - то, какие полномочия Applescript, не особенно известный VM, но я использую Mac, и он предлагает хорошую системную интеграцию.

CLR+Mac не кажется хорошей комбинацией...

Мой язык будет ориентируемым функциональным параллельным языком потока данных объекта со строгим контролем типов и соединением синтаксиса Lisp и Python. Хорошие звуки, а?

[править]
Я принял Python на данный момент, но я хотел бы услышать больше о OSA и Попугае.

8
задан Seki 13 June 2015 в 10:46
поделиться

3 ответа

Один из подходов, с которым я играл, является использование модуля Python AST для создания абстрактного синтаксического дерева, представляющего код для запуска. Функция Python Compile может компилировать AST в Bytecode Python, который может выполняться . Это немного более высоким уровнем, чем непосредственно генерирующим байткодом, но вам придется иметь дело с некоторыми причудливыми чисками языка Python (например, фундаментальная разница между утверждениями и выражениями).

При этом я также написал «депрецвет» модуль, который пытается преобразовать AST обратно в эквивалентный исходный код Python, просто для отладки. Вы можете найти код в Psil репозиторий, если вы заинтересованы.

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

посмотреть на LLVM . Это не чистая виртуальная виртуальная вирция как таковая, скорее рамки с собственным ИК, что позволяет создавать VMS высокого уровня. Имеет хорошие вещи, такие как статический анализ кода и поддержка JIT

4
ответ дан 5 December 2019 в 14:03
поделиться
  • Lua имеет небольшую, хорошо написанную и быструю виртуальную машину VM
  • Python - вы можете прикрепить новый язык, если хотите. Или пишите (используйте?) Что-то вроде Tinypy, что является небольшим и простым реализацией VM Python VM.

Обе варианты выше, имеют доступ к полезным стандартным библиотекам, которые будут сэкономить вас работать и кодироваться в относительно чистой и модульной C, поэтому им нельзя сложно подключаться.

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

2
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

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