タグ

parserに関するtoydevのブックマーク (2)

  • Ironyをいじってみた - ものがたり(旧)

    Ironyについては以前ちらっとだけ紹介したこともあるのだけど改めて。 parser generator .NETでプログラムを書いていて、テキストのパーサを作らなければならなくなることは割と普通にあるだろう。多くの場合はTextReaderを使って力技で書いて何とかするだろう。たとえばJSONくらいであれば、手作業で書いても難しくない。しかし、文法が複雑になってくると、たとえばC#のパーサを書けということになると、ある程度は状態遷移をロジックに任せると楽になる。 .NETで複雑なテキストパーサを書くのがどれくらい一般的なことかは分からないが、そういうものを実装するために使われるのがパーサジェネレータあるいはコンパイラコンパイラと呼ばれる仕組みだ。パーサジェネレータは、生成規則(構文)を所定の表記法で記述すると、それをもとにテキストパーサのコードを生成する。有名なのはCのコードを生成するy

    Ironyをいじってみた - ものがたり(旧)
  • racc

    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

  • 1