けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :11648 ] the message: "[ruby-list:11648] Re: [racc] help
me [Re: parser generator] ", on Jan/20 20:36(JST) YANAGAWA Kazuhisa
writes:

>> どこをどうしたら良いのか良く分かりません. どうしたら良いのか教えて下さ
>> いませ(__;;;
>
>「racc の古いのしか無くてコンパイルできん」ということで,書き換えて
>yacc にかけてみました.

おぉ!! そんな裏技があるとは, 全然気がつきませんでした(^^;;;

>yacc -v rtags.y としてコンパイルすると 6 reduce/reduce conflicts とな
>りました.y.output を眺めると

(中略)

>というのがあります.で,この付近をみると以下の導出規則が書かれている.
>
>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 はおこりませんね.

ruby/parse.yですと

		| kCLASS tLSHFT expr term
		    {
                            :

ってなっているんですよね. rtagsとしては, これが何の特異クラスか知りた
いんですが, selfの場合と定数の場合ぐらいしか分からないので, selfと定数
の場合とそれ以外って風になっていたのでした.

でも, 原因は分かりましたので, どうにか対処しマスです.

どうもありがとうございました(__;;;

# なんか, rubyとは関係ない話しになっている...
__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---