2014年11月26日(水)
久しぶりに Racc を使ったサンプルを書いた
Racc | |
久しぶりに Racc を使ったので、貼る。
意味のあるパーサじゃありません。サンプルです。
myparser.ry
class MyParser rule text : | text line EOL line : | 'URL:' URL | 'e-mail:' MAIL end ---- inner def parse(f) @q = [] f.readlines.each do |line| line.split.each do |s| case s when /\Ahttps?:.+/ ; @q << [:URL, s] when /\A[^@]+@[^@]+/ ; @q << [:MAIL, s] else ; @q << [s, s] end end @q << [:EOL, $/] end do_parse end def next_token @q.shift end ---- footer MyParser.new.parse $<
コンパイル
$ racc -o myparser.rb myparser.ry
入力テキスト例 (sample.txt)
e-mail: fuga@hoge.example.jp URL: http://www.hoge.example.jp URL: https://www.hoga.example.co.jp
実行例
$ ruby myparser.rb sample.txt
構文解析が成功した場合、何も出力されません。
コメント