静的型付けの利点を備え たプレーンな C#/.NET 4 構文のみを使用して、テンプレート エンジンを実装することを考えています。
次に、そのテンプレート言語の上に、ドメイン固有言語(HTML4、XHTML、HTML5、RSS、Atom、マルチパート メールなど) を作成できます。
.NET 4 で最高の DSL の 1 つ (1 つだけではないにしても) はSharpDOMです。HTML 固有の DSL を実装します。
SharpDOM を見て、.NET (4) を使用して何ができるかに感銘を受けました。
したがって、.NET 4 でカスタム DSL を実装するためのあまり知られていない方法がいくつかあると思います。おそらく Ruby ほどではありませんが、それでも.
私の質問は、カスタム DSL の実装に使用できる C# (4) 固有の構文機能は何ですか?
私が今考えることができる例:
// HTML - doesn't look tooo readable :)
div(clas: "head",
ul(clas: "menu", id: "main-menu", () => {
foreach(var item in allItems) {
li(item.Name)
}
}) // See how much noise it has with all the closing brackets?
)
// Plain text (Email or something) - probably too simple
Line("Dear {0}", user.Name);
Line("You have been kicked off from this site");
私にとって、最小限のノイズで構文を考え出すのは本当に難しいです。
別の言語 (Boo、IronRuby など) について話しているわけでも、別のテンプレート エンジン (NHaml、Spark、StringTemplate など) について話しているわけでもないことに注意してください。