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
「こんな事もあろうかと,少し前に宿屋でパクっておいたのよ!」
「....こ,こんなことって,あのなあ....」