.NETとJVMのこれらの新しい言語がすべて表示されています。どのようにして1つを作り始めますか?.NetまたはJVM言語の作成方法
JVMまたはMSILの仕様に関する適切なドキュメントが見つかりません。
編集
私はすでに、私はこれらのプラットフォームに基づいており、新しい言語を作るので、多くの人々がどのように、より興味を持って、解析する方法を知っています。
.NETとJVMのこれらの新しい言語がすべて表示されています。どのようにして1つを作り始めますか?.NetまたはJVM言語の作成方法
JVMまたはMSILの仕様に関する適切なドキュメントが見つかりません。
編集
私はすでに、私はこれらのプラットフォームに基づいており、新しい言語を作るので、多くの人々がどのように、より興味を持って、解析する方法を知っています。
あなたは運が良心的です。 .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
Java Virtual Machine Specifications, Second Editionはオンラインで入手できます。
一つは、Javaバイトコード生成コンパイラ書くことによってJVMをターゲットにすることができます(JVM仕様で定義されています。)
あるいは、そのようApache BCELなどの既存のライブラリを利用することにより、一つはまで有効class
ファイルを生成することができます実際にバイトレベルでバイトコードを操作する必要はありません。
MSILが、それはCIL(共通の公開標準として、任意のより多くのMSILと呼ばれていません中級言語)、CLIの一部(Common Language Infrastruc )。
ここにはECMA-335 CLIの標準仕様があります。
.NETの場合、DLRの式ツリーを使用したり、C#やJavaのような既存の高水準のランゲージをコンパイルしてコンパイルすることもできます。いくつかの高水準の非VM言語(HaskellとEiffel)がCにコンパイルされます。MSILまたはJVMバイトコードにコンパイルする場合は、Mono.CecilまたはBCELを使用すると簡単に行うことができます。更新質問へ
回答:私はすでに解析する方法を知っている
は、私はこれらのプラットフォームに基づいて ある新しい言語を作るので、多くの 人がいるかで より興味を持っています。
多くの人がこれらのプラットフォーム用の言語を開発できるようになると、おそらく公に入手可能なソースコードを持つ非常に完全な例がいくつか用意されているでしょう。
プラットフォームの仕様はダウンロードすることができ、既に新しいプラットフォームをターゲットとする既存のコンパイラの新しいバックエンドを作成するために、コンパイラの作成経験がある人では時間がかかりませんでした。
マイクロソフト自身がRotorを公開しましたが、もちろんMonoもあります。また、簡単なラッパークラスをオンザフライで構築する、ランタイムコード生成のための多くの一般的なテクニックもあります - これもミニコンパイラです。
C#コンパイラは非常に高速であり、CLRの機能のほとんどを直接的に公開しているため、一時的なC#ファイルを作成した後、C#コンパイラを使用してジョブを終了するコンパイラを作成できます。
Ola Biniからthis presentationをご覧ください。スライドもダウンロードしてください。