パスワードを忘れた? アカウント作成
695011 journal

masaki-fの日記: はまりみち

日記 by masaki-f

とある事情で(w)rubyでパーサを書いてみることに。選択肢としては

(1) スキャナ+パーサスクラッチ
(2) スキャナスクラッチ+ありもの(RACC, ruby-yacc, etc)
(3) ありもの(tlex, rlex, ruby-lex) + ありもの(同上)

まぁどれでも大して時間は掛からない(とはいっても(1)でちゃんと書いたらちょっと大変だけど)のでさくさくっといろいろ試して見る。うーん、tlexはちゃんと動かないょ?何か間違ってるのかなぁ。ruby-lexとruby-yaccはflexとbisonのシンプルなruby-interfaceという感じなので慣れている分有利か。

というわけでフルスクラッチは置いておいて(ぉぃ)ruby-lex+ruby-yaccを試して見ました。

で。

やー、はまりましたー。超絶に。何かっていうとスキャナのルールを書くときに

"@" {
      # bla bla bla...
}

とかしてたわけなんですが、なーぜーか何をどうやってもここのルールにマッチしないんですょ。ruby-lex使う方は要注意です。結局ruby-lexのソース見て"@"が{RA}という文字列にエスケープされていることが判明。なんで{RA}という入力にマッチするのだ。わらえねぇーよ。

つーわけで\x40と書いて逃げ。

あぁかれこれ1時間以上はまったです。こんなにはまったのは久々だなぁ。自分を疑いすぎたのが敗因です。でもまぁ構文もアクション処理もきわめて単純なので明日1時間くらいあれば楽勝で完成かな。とりあえず寝よう...

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...