記述が作成する仮想マシンで実行します:CILを作成C#のパーサ、ASTツリー、CILを作成し、私の問題の
- C#のパーサ
- コンASTツリープログラム
- の/バイトコード表現
- VMを作成し、「バイトコード」として記憶されているコードを実行 -
基本的に私はすべての "もの"で自分の言語を書く必要があります。
実行したいサンプルプログラムを作成します。私はこのプログラムを処理し、ASTツリーを作成するためにC#パーサーを作成する方法を知っています。
またCILリファレンスhttp://en.csharp-online.net/CIL_Instruction_Setが見つかりましたので、ASTをCILコードとして保存できます(うまくいけば問題ありません)。 私の疑問は、仮想マシンを使用する前に、このCILをどのようにテストできますか? C#CLRを使用できますか?そしてどうやって?
C#でCIL命令を実行するバーチャルマシンを作成するにはどうすればよいですか? C#プログラムを強制的にCIL命令を実行させることができますか?
私の考えは、正しいですか? CIL命令を使用してバイトコードにASTを書き込むのは避ける必要がありますか?
私のアイデアは、.NET http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/CLR_diag.svg/400px-CLR_diag.svg.png
に触発されたが、この問題を解決するための正しい方法を見つけるために私を助ける任意の回答をいただき、ありがとうございます。
P.S. 自分
EDITは
私はこれを見つけたことで、私はすべてを実装する必要があります。http://msdn.microsoft.com/en-us/magazine/cc136756.aspx
http://www.codeproject.com/Articles/3778/Introduction-to-IL-Assembly-Language
http://www.codeguru.com/csharp/.net/net_general/il/article.php/c4635#Array1
は、それは私の問題を解決する可能性があります。私はそれを試してみましょう。
CILを作成したら、なぜ自分のVMを作成したいのですか?それはちょうどネットを改革していないのですか? Monoソースとこの答えを見たいと思ったら:http://stackoverflow.com/questions/3328901/how-to-insert-cil-code-to-c-sharp –
あなたは式を見ましたか?木? http://msdn.microsoft.com/en-us/library/bb397951.aspxまた、なぜC#パーサーを記述したいのですか?利用可能なものがたくさんあります。 –
こんにちは、それは宿題なので...私はすべてを自分で実装する必要があります: -/ – luccio