Ruby の構文図

Ruby の構文図を ANTLRWorks と GraphViz を使って描いた人がいるそうです。なるほどなかなかグラフが込み入ってます。Java 1.5 や JavaScript(ECMAScript) の構文図もありますが Java 1.5 もなかなか複雑、JavaScript は奇麗ですね。

個人的には Ruby がそれほど複雑な構文だとは思わないのだけど確かに yacc とかの BNF を使う構文解析ジェネレータとは相性が悪そう。

構文的(BNF的)に奇麗なプログラミング言語としては Pascal が有名だけど、Pascal に影響を受けている後発の C言語が必ずしも Pascal 型の構文を踏襲せず比較的使いやすい構文を築きあげたことを考えると BNF的に奇麗であることがすべてではないということだろう(*1)

いい加減 BNF(EBNF) もここ数十年全然進歩していないし、ここは Ruby のための新しいBNF記法と構文解析ジェネレータを発明したほうがいいのかもしれない。

追記 11/20:どうも Ruby が実装レベルの parse.y を使っているのに対して Java 1.5 と JavaScript はおもちゃのような ANTLR のサンプルコードを使っているのでこれで比べるのは意味がありませんね。

*1) C言語は Pascal よりも構文的には汚い(曖昧性がある)と言われるが、全体的に見ると奇麗な構文の部類に入る

Visualization of Ruby’s Grammar(Nick Sieger)
Visualization of Ruby’s Grammar(Matzにっき)

Tags:

Comments are closed.