私はちょうど6ヶ月間続くはずの私の卒業プロジェクトの冒頭にあります。 プロジェクトの目的は、1つのスクリプト言語用の.Netコンパイラを実装することです。私はカリキュラムの主題としてコンパイラ構築をしていましたが、一般的にコンパイラを実装する基本的な手順を認識していましたが、BisonとGCCを使用した単純なコンパイラをバックエンドとして使用していました。 .Netプラットフォームで。C#でコンパイラを実装する最も興味深く有望なアプローチは何ですか?
はこのトピックに関するいくつかの研究を行ってきたが、私は(私はパーサのように、コンパイラの他の要部の話ではないのです - それはここで範囲外である)コード生成のための次の代替の解決策を見つけた:
- Reflection.Emitを使用したダイレクトコード生成。
- Common Compiler Interfaceリフレクションの抽象化を使用して、コード生成の自動化を行います。
- 実行時にC#およびVBコンパイルにCodeDOMを使用します。
- Roslynと呼ばれる新しく登場するC#の "サービスとしてのコンパイラ"がCTPとして利用可能になりました。
- DLRはモノも同様に、コード生成のためのいくつかの機能を持っているようだMono.Cecilライブラリが同梱されて
- などを動的なコード生成のためのサポートを提供し、式ツリーを経由して実行時のコード生成のためのいくつかのインタフェースを持っています。
私のプロジェクトの主な目的は、.Netの要点を深く掘り下げ、コンパイラの構築を学び、自分の仕事のグレードを向上させることです。 2番目の目標は、後で許可されたオープンソースライセンスの下でコミュニティに開かれるコンパイラの実装を考え出すことです。
ここで、最も興味深く、教育的で面白く有望なアプローチは何でしょうか?私はもう少し時間があれば絶対に試してみましたが、正のグレードを得るために6ヶ月で私の仕事を提出する必要があります...
ありがとうございます、 アレクサンダー。
Roslynは、あなたの '1'、' 2'、 '3'のまわりの太いラッパーであることに注意してください。 – SLaks
@SLaks、私はRoslynがCodeDOM(#3)を実際に使用していないと思う。 – svick
私はそのことについてはわかりませんでした。私はあなたが正しいと思う。 – SLaks