
(Picture licensed under CC BY-SA 3.0)
昨晩 lestrrat さんが go-nuts デビューした。
[ANN] Xslate template engine for golang
https://groups.google.com/d/msg/golang-nuts/bajxDXEsixk/OdRjXgkc5oYJ
lestrrat/go-xslate - GitHub
See Supported Syntax (TTerse) for what's currently available Debugging Currently the error reporting...
https://github.com/lestrrat/go-xslate
golang で書かれた xslate というテンプレートエンジンのポーティング。
Xslate - Scalable template engine for Perl5
Distributions Text::Clevery - Smarty compatible syntax and functions Text::Xslate::Bridge::Alloy - U...
http://xslate.org/
なんと現時点で
html/template よりも速いとの事。すばらしい。
テンプレートエンジンの中では小さな VM が動いてる。とてもカッコイイ。
それを聞いて、僕も言語処理系を書きたくなって、家に帰ってからもモヤモヤして寝れなかった。えいや!とばかりに僕も言語処理系を書いてみた。
mattn/anko - GitHub
https://github.com/mattn/anko
JavaScript っぽいような、Golang っぽい様な言語です。
以下の様なスクリプトが動きます。
func foo(x){
return x + 1;
}
var x = 1;
var y = x + 1;
println(x * (y + 2 * x + foo(x) / 2));
if foo(y) > 1 {
println("こんにちわ世界");
} else {
println("Hello, World");
}
var a = [1,2,3];
println(a[2]);
println(len(a));
var m = {"foo": "bar", "bar": "baz"};
for k in keys(m) {
println(m[k]);
}
勢いで書いたので、開発継続するかとか、この後どうするかとか、何も考えてません。現状、計算くらいしか出来ません。
ですが言語処理系を作る方法のサンプルとしては、誰かの役に立つかなーと思ったので公開しておきます。
追記
ちなみに anko という名前は、ふざけて「unko」にしようと思ったけど、いいのが思いつかずに「そう言えば昨晩、アンドーナツをアテに酒飲んでたなー」という安直な発想で付けました。