In message <199903011352.WAA17487.keiju / bc.mbn.or.jp>
keiju / rational.com (石塚圭樹 ) writes:

> >「使うもんじゃない」と考えています.... 無限ループに落ちないだけ.想定
> >していない値がかえってくる事で呼び出し元の方で何とかなるかと.
> 
> うーん. 何とかなるものでしょうか... その値でもってなんかするということ
> はないですよね?

「知らない物が入ってきてるから知ってるのが出てくるまで空読み」.例外だ
となんとなくうっとおしいかもしれない.

# そもそも RETURN で例外をあげているから効率的には変化無し....だと思う.


> >> 例外だしてもらってもよいと思うんですが?
> >
> >....こっちでもいいんですけどね.
> 
> こっちの方が, エラーが起こった場所が分かるんで良いんではないかと...

実は呼び出し側としてはどっちでも同じだと思うのです.

# 呼び出し側では知らない入力に対して常に例外をあげる,という方針の場合
# には Scanner#scan が例外をあげてくれた方が楽,という話でしか無いと思
# う.


> ># ちょっと複雑でもいいのなら preumbre にメソッドを書き足してそっちを使っ
> ># てもいいわけですし.
> 
> うーん. それってあまり嬉しくないような...

    def init
      @retval = []
    end
    
    def get_next_token
      val = scan
      if val.is_a? Array
        @retval += val
      else
        @retval << val
      end
      @retval.shift
    end
    
    <default>
    foo
        RETURN ["foo", "bar"]
    bar
        RETURN "bar"

ってぐらいでそんなに極端に難しいわけではないんですけど.

# ちなみに試してないのでたぶんどっか変です.


> >`else' というパターンと区別が付かないんですね.これが.しかもこの
> >`else' というパターンときたら,実に使われやすい.基本的に特殊なパター
> >ンとして /\w+/ な物を用いるのはとても気が進まないです.
> 
> いや. 例えばなんで, elseじゃなくて良いんですけどね.

やっぱりなんとなく必要性が感じられないんですよ.どうも.そうするとパター
ンに使える文字列に制限を加える事になる特殊パターンというのには消極的に
なる.

# 単にめんどう臭い,という説もある (^^;


> ところで, 今はgetsしたものをそのまま使っていますよね? chompした方がよ
> かないですかね? 今のままだと, ファイルから読み込んでいる時と関数として
> 文字列を渡した場合の記述を変えなくちゃならないような気がします.

なんででしょう? 全然理由に見当が付かないので検討もできません....

# `.' は `\n' にマッチしないし,`$' は改行の有無にかかわらず行末にマッ
# チするし.... 行末が `\r\n' になっているとか? それだったら渡す時に変
# 換すればいいし....

-- 
柳川和久 @ 東大阪市 . 大阪府                                  March 2, 1999
Penny wise, pound foolish.