けいじゅ@日本ラショナルソフトウェアです. 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 <<---