From: Minero Aoki Date: 2000-05-05T16:30:01+09:00 Subject: [ruby-list:22293] Re: [REQ] Racc's error message (Re: <<< hoge.rd (rd2 bug)) あおきです。 In mail "[ruby-list:22257] [REQ] Racc's error message (Re: <<< hoge.rd (rd2 bug))" Toshiro Kuwabara wrote: > Toshです。 > >racc -vg で作ったパーザのデバッグ情報に処理中のバッファの内 > >容を表示するようなことは出来ませんか?? それがあれば再現する > >データを作るのは楽なんですが…どこでエラーが起きてるかが分か > >らないので苦労してます。stderr に出せるとなお助かります。 > > 昔のRaccは還元されてアクションが起きる時に、トークンの値が変化する様子 > が見れたような覚えがあります。 > それと、-gオプションつけなくてもエラーメッセージには"in state NN" > (NNはナンバ)って表示がでて、あれがデバッグの時にはかなり便利だった > のですが。 > ここらへんって今だと実現が難しいのでしょうか?>あおきさん どっちも簡単です。値スタックのほうは復活させます。 あと出力は、ユーザが選択できるように @racc_debug_out に 出力するようにしました。(デフォルトは stderr。) state 番号は state スタックの先頭がそれです。エラーメッセージに 含めるのは害はないんですが、on_error にあまり余計な情報を渡したくないので (かつ引数の数が変わるので)、こっちはとりあえずもう少し考えさせてください。 -- 0.14.6 で -g の出力はこんなふうになってます。 read Number(internaly NUMBER) 9 shift NUMBER [ (NUMBER 9) ] goto 3 [ 0 3 ] reduce NUMBER --> exp [ (exp 9) ] goto 4 [ 0 4 ] : : accept ------------------------------------------------------------------- あおきみねろう