2009-04-04 3 views
13

Я вижу все эти новые языки для .NET и JVM. Как это сделать?Как создать язык .Net или JVM?

Я не могу найти хорошую документацию по спецификациям JVM или MSIL.

Редактировать

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

ответ

7

Вы вроде как повезло. Существует взрыв языков, которые разрабатываются для .NET, и есть статьи/ресурсы, предназначенные для таких людей, как вы сами (а не только крупные корпорации с тоннами денег для инвестиций).

Поиск «динамического языкового исполнения» и переход оттуда.

Вот некоторые ссылки:

Blog of the guy who is the brain behind IronPython

The home of the Dynamic Language Runtime

An article about how IronPython was implemented

A blog posting talking about abstract syntax trees and the DLR

4

Java Virtual Machine Specifications, Second Edition доступен онлайн.

можно целевой виртуальной машины Java, имея написания компилятора, который производит Java байт-код (который определен в спецификации JVM.)

Или, используя существующие библиотеки, такие как Apache BCEL, можно производить действительные class файлы через Java-программу без фактического манипулирования байт-кодом на уровне байта.

3

MSIL не называется MSIL больше, как общественный стандарт это CIL (Common Промежуточный язык), часть CLI (Common Language Infrastruc ture) стандарт.

Вот спецификация ECMA-335 CLI.

0

Для .NET вы можете использовать деревья выражений DLR или даже скомпилировать существующий высокоуровневый langauge, такой как C# или Java, и затем скомпилировать это. Некоторые высокоуровневые языки без VM (liek Haskell и Eiffel) скомпилируются с C. Если вы хотите скомпилировать байт-код MSIL или JVM, вы можете использовать Mono.Cecil или BCEL, чтобы сделать это проще.

1

Ответ на обновленный вопрос:

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

Что позволяет так много людей разрабатывать языки для этих платформ, вероятно, доступно несколько очень полных примеров с общедоступным исходным кодом.

Характеристики платформ доступны для загрузки, и людям, уже имеющим опыт написания компиляторов, не потребовалось много времени для создания новых бэкэндов для существующих компиляторов, предназначенных для новых платформ.

Microsoft самостоятельно опубликовала Rotor, есть также Mono конечно. Существует также множество популярных методов генерации кода времени выполнения, которые на лету строят простые классы-оболочки - это тоже мини-компиляторы.

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

 Смежные вопросы

  • Нет связанных вопросов^_^