なかだです。

At Thu, 27 Jun 2002 03:23:18 +0900,
Yukihiro Matsumoto wrote:
> |> |こういうことはやっちゃだめなんでしょうか?
> |> |正規表現の (?#...) みたいな感じで ~/.irbrc で
> |> |使ってしまってたんですが。
> |> 
> |> 今の1.7では駄目ですね。#が「改行までコメント」なので後ろの }
> |> が見つからないからです。
> |
> |うーん、これは考えてませんでしたが、"#{#"}"なんてのはちょっと気
> |持悪い…。
> 
> 潔く駄目でいいんじゃないですかね。
> 互換性うんぬんといってた人と同じ人とは思えないですけど。
> 
> こういうのを見ると/* */のようなコメントも欲しくなりますね。

*で始まる正規表現はないので衝突はないはずなんですが、どうもいま
いちRubyのsyntaxとの親和性はよくないようで。

$ ./i686-linux/miniruby -e 'p 4 / /**/ 2'
-e:1: invalid regular expression; there's no previous pattern, to which '*' would define cardinality at 1: /**/
-e:1: syntax error


Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.193 diff -u -2 -p -r1.193 parse.y --- parse.y 26 Jun 2002 08:00:55 -0000 1.193 +++ parse.y 26 Jun 2002 19:10:41 -0000 @@ -3760,4 +3760,16 @@ yylex() return tOP_ASGN; } + if (c == '*') { + int line = ruby_sourceline; + while ((c = nextc()) != -1) { + if (c != '*') continue; + while ((c = nextc()) == '*'); + if (c == -1) break; + if (c == '/') goto retry; + } + ruby_sourceline = line; + yyerror("unterminated comment"); + return -1; + } pushback(c); if (IS_ARG() && space_seen) {
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦