私は、6 か月間続くはずの卒業プロジェクトを始めたばかりです。プロジェクトの目標は、1 つのスクリプト言語用の .Net コンパイラを実装することです。カリキュラムの科目としてコンパイラの構築があり、一般的にコンパイラを実装する基本的な手順は認識していますが、バックエンドとして Bison と GCC を備えた単純なコンパイラを使用しているため、コンパイラの実装についてはあまり知りません。 .Net プラットフォーム上。
このトピックについていくつかの調査を行った結果、コード生成のための次の代替ソリューションを見つけました (パーサーなど、コンパイラの他の重要な部分については話していません。ここでは範囲外です)。
- Reflection.Emitを使用したコードの直接生成。
- 一部のコード生成を自動化するために、Reflection.Emit でCommon Compiler Interface抽象化を使用します。
- 実行時に C# および VB のコンパイルにCodeDOMを使用します。
- Roslynと呼ばれる新しい C# "サービスとしてのコンパイラ" があり、現在 CTP として利用できます。
- DLRは動的コード生成のサポートを提供し、式ツリーなどを介したランタイム コード生成用のいくつかのインターフェイスを備えています。
- Mono にはMono.Cecilライブラリが同梱されており、コード生成用の機能も備えているようです。
私のプロジェクトの主な目標は、.Net の根幹を深く掘り下げ、コンパイラの構築を学び、自分の仕事の成績を上げることです。2 つ目の目標は、寛大なオープンソース ライセンスの下で後でコミュニティに公開できるコンパイラの実装を考え出すことです。
では、ここで最も興味深く、教育的で、楽しく、有望なアプローチは何でしょうか? もう少し時間があれば、間違いなくすべてを試していたでしょうが、良い成績を得るには、6 か月以内に課題を提出する必要があります...
よろしくお願いします、アレキサンダー。