なかだです。

At Thu, 27 Jun 2002 00:59:49 +0900,
Yukihiro Matsumoto wrote:
> |こういうことはやっちゃだめなんでしょうか?
> |正規表現の (?#...) みたいな感じで ~/.irbrc で
> |使ってしまってたんですが。
> 
> 今の1.7では駄目ですね。#が「改行までコメント」なので後ろの }
> が見つからないからです。

うーん、これは考えてませんでしたが、"#{#"}"なんてのはちょっと気
持悪い…。


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 16:48:04 -0000 @@ -102,4 +102,5 @@ static int class_nest = 0; static int in_single = 0; static int in_def = 0; +static int in_string = 0; static int compile_for_eval = 0; static ID cur_mid = 0; @@ -1947,4 +1948,5 @@ string_content : tSTRING_CONTENT {$$ = N lex_strterm = 0; lex_state = EXPR_BEG; + ++in_string; } compstmt '}' @@ -1957,4 +1959,5 @@ string_content : tSTRING_CONTENT {$$ = N rb_gc_force_recycle((VALUE)$4); } + --in_string; } ; @@ -2406,4 +2409,5 @@ yycompile(f, line) in_single = 0; in_def = 0; + in_string = 0; cur_mid = 0; @@ -3162,7 +3166,7 @@ yylex() case '#': /* it's a comment */ - while ((c = nextc()) != '\n') { - if (c == -1) - return 0; + { + char *p = memchr(lex_p, (in_string ? '}' : '\n'), lex_pend - lex_p); + lex_p = p ? p : lex_pend; } /* fall through */
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦