Что такое хорошая виртуальная машина для развития хобби?

StackOverflow https://stackoverflow.com/questions/2167610

Вопрос

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

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

  • Сразу
  • Попугай
  • Osa.

Много языков используют JVM, но если вы не напишите язык java-ish, вся сила stdlib дает вам ощущаться уродливым; Это не очень хорошо в динамическом материале.

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

  • У Луа есть маленькая, хорошо написанная и быстрая виртуальная машина
  • Python VM - Вы действительно можете прикрепить новый язык, если хотите. Или пишите (используйте?) Что-то вроде Tinypy, которое представляет собой небольшую и простую реализацию VM Python VM.

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

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

Вы считаете выпью? Из того, что я прочитал, в дополнение к тому, чтобы быть компилятором Python Jit, он также имеет возможность обрабатывать другие языки. Например, есть Учебник что объясняет, как создать компилятор JIT Brainfuck JIT, используя Pypy.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top