Ruby/Rails 勉強会@関西第36回で発表したスライド。構文解析についてと、パーサージェネレーターRaccの基本的な使い方についてRead less
![Racc でおてがる構文解析](https://cdn-ak-scissors.b.st-hatena.com/image/square/648d9077ba18d9426f6539a17b0e82cc3610990e/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fracc-090824004420-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
C言語のソースをパースしたいと思ってたときがあったな、と思い出した。RubyでRaccを使って、K&Rに載ってるBNFを食わせてみたが、コンフリクトが発生する。 $ racc c.y 1 shift/reduce conflicts 2 reduce/reduce conflicts本によれば「唯一ぶつかりがあるのは、if-elseのあいまいさである。」と書いてあるんだけど。「-v」オプションをつけて詳細を表示するとぶつかってるのは state 2 7) declaration : declaration_specifiers _ init_declarator_list_opt ";" 13) declaration_specifiers_opt : declaration_specifiers _ "*" shift, and go to state 36 "*" [reduce us
Racc は Ruby で使えるパーサジェネレータです。これを使うと自分用のプログラム言語を Ruby で記述するのも夢ではありません。しかし、使い方がもう1つ分かりません。ところが、配布パッケージに添附してある calc.y を利用すると、なんとなく使い方のコツが分かるのに気づきました。Racc のダウンロードはここからできます。calc.y は配布パッケージの racc-1.4.5-all/packages/racc/sample/ の中にあります。 calc.y をコンパイルする 最初に calc.y から Racc が何を作ることができるかを見るために、calc.y を Racc でコンパイルしてみましょう。この場合ターゲットファイルの名前を calc.rb にしたいので -o オプションをつけてコンパイルします。 $ racc -o calc.rb calc.y 作成された ca
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く