No description, website, or topics provided.
JavaScript CSS C#
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.nuget
MvcVpl.Roslyn
MvcVpl.Tests
MvcVpl.Web
MvcVpl
.gitattributes
.gitignore
MvcVpl.sln
README.md
session.md

README.md

dotnetConf2015 Japan

「コンパイラ Roslynの気持ち」

と題した、セッション楽しめていただけましたでしょうか。

セッションで利用したスライドは単なるMarkdownですので、アップロードしておきます。

GitHubなので、そのままファイルを参照すればプレビューされますが、当日の雰囲気を再現したい場合は以下の手順でお願いします。

  1. http://platon.io/ を開く
    自動でランダムIDが発行されます。
  2. Editor部にMarkdownをコピペ
  3. ** Theme **を"monokai-theme"に変更
  4. ** Presentation mode **をクリック

以上です。

Roslyn パフォーマンス

https://gist.github.com/takepara/3715568c07817128011f

↑こちらにソース貼っておきます。 VS2013でRazorEngine/RazorEngine.Roslyn入れとけば動くはずです。

TAKERATCH

セッション時にはこれといって説明することもなかったですが、興味がある方は好きにいじってみてください。ライセンスは特に考えてませんがMITがゆるくていいんでしたっけ?そんな感じでどうぞ。

こちらもまたVS2013です。VS2015じゃないです。現行バージョンのVSのなので気楽にどうぞ。 CodeDOM、Roslynでのコンパイル機能そのものを呼び出してもいいんですけど、コードが少し長くなってしまうので、そこはRazorEngineで代用して楽してます。自分で呼んでも同じことできますが、そこがサンプルの主題じゃないので今回はRazorEngineです。

利用できる構文は全部で7種類あり、それぞれ解釈する入力項目が違います。特に代入・判定・繰り返しは2つのExpressionを入力できますが、1つだけでも良かったりします。

また、意味解析は行ってないので、最後のサンプル"ソート"などはCallStatement実装してないにもかかわらず、"代入"の実装が単なる文字列書き出しなのをいいことに、関数呼び出しを行ってます。

この辺、いろいろ遊んでいけるところかなと思います。

Server SideでのASTからのCode Generatonが単なる再帰だったり、Client SideでのView生成を行っているknockoutjsのテンプレート処理自体がまたASTの再帰だったり。

何かの参考になれば幸いです。