In message <199901200705.QAA02084.keiju / bc.mbn.or.jp> keiju / Rational.Com (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) writes: > 大部できたのですが... 教えて下さいませ. > > 添付しているファイルをコンパイルすると > > dim% racc rtags.ry > /home/keiju/var/lib/ruby/racc/libracc.rb:129:in `warning': (RRconfrict) > Reduce/Reduce confrict in state 132 > > with lookahead tokens: TkEND > > ってエラーが出てしまいます. > > 空文のルール: > > statements: . > . > > を追加するまでは, エラーは発生していなかったので, それがらみだと思うの > ですが... > > どこをどうしたら良いのか良く分かりません. どうしたら良いのか教えて下さ > いませ(__;;; 「racc の古いのしか無くてコンパイルできん」ということで,書き換えて yacc にかけてみました. yacc -v rtags.y としてコンパイルすると 6 reduce/reduce conflicts とな りました.y.output を眺めると 133: reduce/reduce conflict (reduce 3, reduce 57) on TkEND 133: reduce/reduce conflict (reduce 3, reduce 57) on TkNL 133: reduce/reduce conflict (reduce 3, reduce 57) on TkSEMICOLON state 133 statement : TkCLASS TkLSHFT TkCONSTANT . statements TkEND (8) dflt : TkCONSTANT . (57) statements : . (3) 134: reduce/reduce conflict (reduce 3, reduce 37) on TkEND 134: reduce/reduce conflict (reduce 3, reduce 37) on TkNL 134: reduce/reduce conflict (reduce 3, reduce 37) on TkSEMICOLON state 134 statement : TkCLASS TkLSHFT TkSELF . statements TkEND (7) dflt : TkSELF . (37) statements : . (3) というのがあります.で,この付近をみると以下の導出規則が書かれている. statement : TkCLASS TkCONSTANT statements TkEND | TkCLASS TkLSHFT TkSELF statements TkEND #1 | TkCLASS TkLSHFT TkCONSTANT statements TkEND #2 | TkCLASS TkLSHFT statements TkEND #3 | TkMODULE TkCONSTANT statements TkEND | TkDEF TkIDENTIFIER statements TkEND | TkALIAS TkIDENTIFIER TkIDENTIFIER | beg statements TkEND | dflt ; ここで 1) statements は空になり得る 2) statements はただひとつの statement であり得る 3) dflt は TkCONSTANT,TkSELF を含む という前提の もとで #1,#2,#3 を互いに区別することはできない,という現実に思い至り ます. ....ということで,どうでしょ? # ところで #3 っていうのはどういう場合に必要なんでしょうか....これがな # ければ conflict はおこりませんね. -- 柳川和久 @ 東大阪市 . 大阪府 January 20, 1999 「こんな事もあろうかと,少し前に宿屋でパクっておいたのよ!」 「....こ,こんなことって,あのなあ....」