2009-04-04 8 views
13

Widzę wszystkie te nowe języki dla .NET i JVM. Jak można zacząć?Jak utworzyć język .Net lub JVM?

Nie mogę znaleźć żadnej dobrej dokumentacji dotyczącej specyfikacji JVM lub MSIL.

Edit

już wiem, jak analizować, jestem bardziej zainteresowany tym, jak istnieje tak wiele osób dokonujących nowych języków, które są oparte na tych platformach.

Odpowiedz

7

Masz trochę szczęścia. W przypadku platformy .NET opracowywana jest eksplozja języków i istnieją artykuły/zasoby skierowane do osób takich jak Ty (nie tylko duże korporacje z ogromną ilością pieniędzy do zainwestowania).

Wyszukaj "dynamiczne środowisko uruchomieniowe języka" i przejdź z tego miejsca.

Oto kilka linków:

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

Urządzenie Java Virtual Machine Specifications, Second Edition jest dostępne online.

Można kierować JVM przez posiadające napisanie kompilatora, który produkuje kodu bajtowego Javy (który jest zdefiniowany w specyfikacji JVM).

Albo, poprzez wykorzystanie istniejących bibliotek takich jak Apache BCEL, można produkować prawidłowe class plików poprzez program w języku Java bez konieczności faktycznego modyfikowania kodu bajtowego na poziomie bajtów.

3

MSIL nie nazywa MSIL więcej, jako standard publicznego To CIL (Common Intermediate Language), część CLI (Common Language Infrastruc ture) standard.

Oto standardowa specyfikacja ECMA-335 CLI.

0

Dla .NET można używać drzewek wyrażeń DLR, a nawet kompilować je do istniejącego języka wysokiego poziomu, takiego jak C# lub Java, a następnie skompilować. Niektóre wysokopoziomowe języki inne niż VM (Liek Haskell i Eiffel) kompilują do C. Jeśli chcesz skompilować do kodu bajtowego MSIL lub JVM, możesz użyć funkcji Mono.Cecil lub BCEL, aby ułatwić to.

1

Odpowiedź na zaktualizowanej pytania:

już wiem, jak analizować, jestem bardziej zainteresowany jak istnieje tak wiele osób dokonujących nowych języków, które są oparte na tych platformach.

To, co umożliwia tak wielu ludziom rozwijanie języków dla tych platform, to prawdopodobnie dostępność kilku bardzo kompletnych przykładów z publicznie dostępnym kodem źródłowym.

Specyfikacje platform są dostępne do pobrania, a osoby mające już doświadczenie z pisaniem kompilatorów nie potrzebowały wiele czasu na tworzenie nowych kopii zapasowych dla swoich istniejących kompilatorów, które byłyby przeznaczone dla nowych platform.

Microsoft samodzielnie opublikował numer Rotor, jest też oczywiście Mono. Istnieje również wiele popularnych technik generowania kodu runtime, które na bieżąco budują proste klasy wrapperów - to także są mini kompilatory.

Kompilator C# jest dość szybki i eksponuje większość obiektów CLR w sposób bezpośredni, więc można napisać kompilator, który po prostu tworzy tymczasowe pliki C#, a następnie dostał kompilator C#, aby zakończyć pracę.

Powiązane problemy