Я думаю о записи моего собственного небольшого языка.
Я нашел несколько опций, но не стесняйтесь предлагать больше.
Много языков использует JVM, но если Вы не пишете язык выхода Java, все питание, которое stdlib дает Вам, собирается чувствовать себя ужасным; это не очень хорошо в динамическом материале также.
Попугай кажется хорошим VM для разработки языков, но это имеет немного заброшенного/незаконченного/хобби запаха проекта к нему.
OSA - то, какие полномочия Applescript, не особенно известный VM, но я использую Mac, и он предлагает хорошую системную интеграцию.
CLR+Mac не кажется хорошей комбинацией...
Мой язык будет ориентируемым функциональным параллельным языком потока данных объекта со строгим контролем типов и соединением синтаксиса Lisp и Python. Хорошие звуки, а?
[править]
Я принял Python на данный момент, но я хотел бы услышать больше о OSA и Попугае.
Один из подходов, с которым я играл, является использование модуля Python AST для создания абстрактного синтаксического дерева, представляющего код для запуска. Функция Python Compile
может компилировать AST в Bytecode Python, который может выполняться
. Это немного более высоким уровнем, чем непосредственно генерирующим байткодом, но вам придется иметь дело с некоторыми причудливыми чисками языка Python (например, фундаментальная разница между утверждениями и выражениями).
При этом я также написал «депрецвет» модуль, который пытается преобразовать AST обратно в эквивалентный исходный код Python, просто для отладки. Вы можете найти код в Psil репозиторий, если вы заинтересованы.
посмотреть на LLVM . Это не чистая виртуальная виртуальная вирция как таковая, скорее рамки с собственным ИК, что позволяет создавать VMS высокого уровня. Имеет хорошие вещи, такие как статический анализ кода и поддержка JIT
Обе варианты выше, имеют доступ к полезным стандартным библиотекам, которые будут сэкономить вас работать и кодироваться в относительно чистой и модульной C, поэтому им нельзя сложно подключаться.
Это сказано, я не согласен, что попугай заброшен / хобби. Это довольно зрело, и есть некоторые очень сильные разработчики, работающие над этим. Кроме того, в частности, VM, предназначенный для того, чтобы быть нацеленным на несколько динамических языков. Таким образом, был разработан с учетом гибкости.