構文解析器を弄る言語

ユーザが構文解析器を弄れる言語はふむ確かにありかなーとか思った。


というかここ数日構文木弄る言語とかしか実装してなかった気がするので、そういう風に頭が犯されているだけの可能性も高いけど折角だから色々と書いてみる。


どの辺の言語と関係していそうか。Lisp,Scheme,Nemerle
後私はこの3つ全てで素人です。

マクロとかその辺

ListとSchemeの話。


http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E5%8A%B9%E7%94%A8


こことか見る。やっぱりこれでも良い気がする。
ただやっぱりこれは構文の導入、拡張なので、取り扱おうとしている構文解析器を弄るという事ではやっぱりない。

Nemerle

http://ja.wikipedia.org/wiki/Nemerle

新しい言語の実装

Nemerleのマクロを用いると、言語に新しい構文を導入することも可能である。

macro ReverseFor (i, begin, body) 
syntax ("ford", "(", i, ";", begin, ")", body)
{
  <[ for ($i = $begin; $i >= 0; $i--) $body ]>
}

この例ではford ( EXPR ; EXPR ) EXPR構文を定義していて、この構文は次のように用いることができる。

ford (i ; n) print (i);


wikipediaより引用

うっほwwwこれ凄いな。

まくろ

http://nemerle.org/Macros_tutorial


動かす為にLeopardにmono入れました。眠いのであれですが、上手く(?)構文を拡張出来ていますね。
後はコンパイル時と実行時で分けたりだとか。

Dylan

はインストール出来ないぞ。