In message <199901210735.QAA03189.keiju / bc.mbn.or.jp>
keiju / Rational.Com (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) writes:

> >「racc の古いのしか無くてコンパイルできん」ということで,書き換えて
> >yacc にかけてみました.
> 
> おぉ!! そんな裏技があるとは, 全然気がつきませんでした(^^;;;

semantic action をとっぱらって %token でトークンの定義をズラズラ並べる
だけですから.syntax の表現はどちらも同じ....いまのところ.で,

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

racc にも -v オプションはあったりするんですね.多分同じような情報が得
られると思います.

# 試してないことがばればれです (^^;

> ruby/parse.yですと
> 
> 		| kCLASS tLSHFT expr term
> 		    {
>                             :
> 
> ってなっているんですよね. rtagsとしては, これが何の特異クラスか知りた
> いんですが, selfの場合と定数の場合ぐらいしか分からないので, selfと定数
> の場合とそれ以外って風になっていたのでした.

これをこのままいかして semantic action のほうで self と定数を見分ける
ようにしたらよいような.

    | TkCLASS TkLSHIFT expr term
      .
        case v_[1]
        when TkSELF
          :
        when TkCONSTANT
          :
        else
          :
        end
      .

っていうかんじ.#1 と #2 を省いて expr のアクションで適当に値を返して
やる.

# 配列を返した方がいいかな? [TkCONSTANT, "Foo"] ができるから.

-- 
柳川和久 @ 東大阪市 . 大阪府                               January 21, 1999
Translaters, traitors.