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

In [ruby-list :12511 ] the message: "[ruby-list:12511] Re: [REQ]
rlex.rb ", on Mar/02 23:56(JST) YANAGAWA Kazuhisa writes:

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

良く分からないんですけど, 空読みした後, リカバリすることに意味があるん
ですかね? パーザにヒントを教えられるとか??

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

効率のことはべつに考えてはいないんですけどね.

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

うーん. どうなんでしょうね. 

デバッグ中に, どこの状態でマッチが行なわれなかったか明確に分かるのは嬉
しいと思うんです.  今の仕様だと, 知らない文字が来た時点でscannerの状態
を調べるように書かないと分からないですよね?

それに, 今の動作にしたければ

.
  RETURN [matched]

って書くだけで済むわけですし...

>> ># ちょっと複雑でもいいのなら preumbre にメソッドを書き足してそっちを使っ
>> ># てもいいわけですし.

(中略)

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

ああ. なるほど, 全然勘違いしていましたです(__;;

>> >`else' というパターンと区別が付かないんですね.これが.しかもこの
>> >`else' というパターンときたら,実に使われやすい.基本的に特殊なパター
>> >ンとして /\w+/ な物を用いるのはとても気が進まないです.
>
>やっぱりなんとなく必要性が感じられないんですよ.どうも.そうするとパター
>ンに使える文字列に制限を加える事になる特殊パターンというのには消極的に
>なる.

うーん. あまり, 一般的な利用法じゃないみたいだし...

>> ところで, 今はgetsしたものをそのまま使っていますよね? chompした方がよ
>> かないですかね? 今のままだと, ファイルから読み込んでいる時と関数として
>> 文字列を渡した場合の記述を変えなくちゃならないような気がします.
>
>なんででしょう? 全然理由に見当が付かないので検討もできません....
>
># `.' は `\n' にマッチしないし,`$' は改行の有無にかかわらず行末にマッ
># チするし.... 行末が `\r\n' になっているとか? それだったら渡す時に変
># 換すればいいし....

\nの代わりに$を使うのでは実際に動作が違うんですよね...

irb(main):001:0> str = "fooo\nbar"
"fooo\nbar"
irb(main):004:0> str =~ /$/
irb(main):005:0> p $'
"\nbar"
irb(main):006:0> str =~ /\n/
irb(main):007:0> p $'
"bar"

ね. それともこれって, Rubyのバグなのかな(?_?

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---