RParsec インストール

ParsecをRubyに移植したおのがRParsecである。Parsecはコンパイラコンビネータであり、lex.yaccなどとは異なり、ライブラリ形式でコンパイラ作成をサポートしてくれる。解析方法は再帰下降型。左再帰が解析できないとのこと。

■インストール方法
https://rubygems.org/gems/rparsec-ruby19
のDownloadを選択肢ファイルを落とす。
ただしブラウザによってはファイルの拡張子がhtmlになってしまうので拡張子をgemに変更する。
→ファイル名:rparsec-1.0.gem

このファイルのあるフォルダにて
$gem install rparsec
と打ち込むと、インストールできる。

ただし、インストールが出来ても実際使ってみるとrparsecのファイルでエラーが出る。
ここで試している環境はRuby2.0であり、rparsecが古いバージョンのRubyの言語仕様に準拠しているためと思われる。
具体的には、
rparsec-1.0/rparsec/parser.rb:881 warning:else without rescue is useless
881: syntax error, unexpected ':',expecting keyword_then or ',' or ';' or '\n' (SyntaxError)
case c when String: c[0] else c end
と出る。
parser.rbの881行目の
case c when String: c[0] else c end
がエラーとなる。Ruby1.9以降でダメになった模様。この行を
case c when String then c[0] else c end
のように書き換える(:をthenに置き換える)とSyntaxErrorが解消した。