なかだです。

At Thu, 27 Jun 2002 01:53:31 +0900,
Nobuyoshi-Nakada wrote:
> 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

ダメということにするかどうかはさておき、マルチバイトのことをまっ
たく考えてなかったんで訂正。


Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.194 diff -u -2 -p -r1.194 parse.y --- parse.y 26 Jun 2002 23:29:10 -0000 1.194 +++ parse.y 27 Jun 2002 00:03:55 -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,17 @@ yylex() case '#': /* it's a comment */ - while ((c = nextc()) != '\n') { - if (c == -1) - return 0; + if (in_string) { + while ((c = nextc()) != '\n') { + int w; + if (c == '}') goto retry; + if (c == -1) return 0; + if ((w = ismbchar(c) - 1) > 0 && (lex_p += w) > lex_pend) { + lex_p = lex_pend; + break; + } + } + } + else { + lex_p = lex_pend; } /* fall through */
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦