言語追加

http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=327406&SiteID=7
IDE 的には Language Service を追加すると言語が増えるんだけど、Language Service と関連のものを作るのはかなり面倒。でも、特定のコマンドラインツールのコンパイラやリンカを呼び出すだけのものであればそこそこ楽かもしれない?
汎用的にしようとすると、Language Service 作成ウィザードを使っちゃうと予約語とか拡張子とか固定なものができあがるので、設定変更で選べるようにしようとすると結構な手を入れないといけない気がする。けど、特定の1つのコンパイラ用なら頑張ればなんとかなるかもしれない。
ウィザードを利用すれば予約語に色をつけたり、括弧の対応を確認したりするぐらいは勝手にやってくれるものができるので、How to: Create a Language Service Using the Visual Studio Language Service Wizard を参考にやれば、結構いけるんじゃないかな〜。


ウィザードを利用すると Unmanaged な C++/COM のコードになるのがちょっとイヤなところだけど、Managed Package のウィザードから C# を選択すると Language Service は選択できない、How to: Create a Language Service (Managed Package Framework) あたりをみて Microsoft.VisualStudio.Package.LanguageService の派生クラスを作ることになるけど、実装に必要なものは一緒なんだよなー。


C# にインラインILとか付けたしたような言語を追加しようとすると、C# の文法解析実装が丸々必要になるから Language Service からのアプローチが面倒なんだよね。あ…、Mono にはそれなりものがあるはずか…、使っていいかわからんけど。たしか、Mono は flex じゃなくて jason? だっけに手をいれて .NET で使えるようにして使ってる・・・みたいなものをどこかで読んだような。