From: aamine@... Date: 1999-01-16T20:07:43+09:00 Subject: [ruby-list:11585] Re: parser generator あおきです。 In Mail "[ruby-list:11566] Re: parser generator" keiju@Rational.Com (石塚圭樹 ) wrote: > >XXXX: pat1 { .... } pat2 pat3 ; (action).... end > > > >というのはどう思われますか? > > ええ. それなら文句ありません(^^;;; じゃ、そんな感じでいきます。 > >> raccをちょっと使ってみたのですが, エラーが出た時どの行で発生しているか > >> が分かりません(;_; もうちょっとどうにかなりませんでしょうか? > > > >これはパーサの機能じゃなくてスキャナの機能なんです… > > えーと. そうではなくて, raccでパーズしている時のエラー行なんですが... あ、Raccでのコンパイル中のことですか。確かに不親切ですね。直しました。 あと、パースエラーのときによびだされる特別なメソッドon_errorを つけました。そのかわり、自動的にはraiseしなくなります。 # エラー処理もなんとかしなくちゃなあ、と思いつつ… > ># 「raccといっしょに使うためのスキャナ」とか、あったほうが > ># いいでしょうね。 > > じつは, irbについているrubyのスキャナ(ruby-lex.rb)を用いてrtags(etags > のruby版)のracc版を作ってみようとしていました. ただ, ruby-lex.rbってトー > クンをインスタンスで返してその識別をそのクラスで行なっているので, シン > ボルを用いるraccとはちょっと相性が良くないなと思っていたりしています. トークンシンボルにシンボル以外を使えるようにしました。 token ATOM 'Atom' DIGIT 'Digit' end のように指定すると、:ATOMと書きこんでいたところをAtomに 書きかえます。''内で使えるのは任意のRuby文字列です。 また、指定がないものは今までどおりシンボルを使います。 http://www1.u-netsurf.ne.jp/~brew/mine/soft/racc.tar.gz におきました。 ------------------------------------------------------------------- あおきみねろう@一橋大学 mail to: aamine@dp.u-netsurf.ne.jp website: http://www1.u-netsurf.ne.jp/~brew/mine