From: nobuyoshi nakada Date: 2005-09-05T13:51:07+09:00 Subject: [ruby-dev:26958] Re: ripper problems. なかだです。 At Sat, 3 Sep 2005 12:59:31 +0900, Tanaka Akira wrote in [ruby-dev:26952]: > "ext/extmk.rb" > -e:8:in `parse': [Ripper FATAL] unknown token 312 (RuntimeError) > from -e:8 > from -e:6 > > "test/ruby/test_lambda.rb" > -e:8:in `parse': [Ripper FATAL] unknown token 350 (RuntimeError) > from -e:8 > from -e:6 新しく追加されたtokenが対応されていないようです。 > "ext/socket/extconf.rb" > (eval):1: [BUG] Segmentation fault > ruby 1.9.0 (2005-09-02) [i686-linux] > > "lib/mkmf.rb" > (eval):1: [BUG] Segmentation fault > ruby 1.9.0 (2005-09-02) [i686-linux] こちらは空の[]ですね。 Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.409 diff -U2 -p -u -r1.409 parse.y --- parse.y 4 Sep 2005 06:01:51 -0000 1.409 +++ parse.y 5 Sep 2005 04:44:15 -0000 @@ -922,5 +922,5 @@ stmt : kALIAS fitem {lex_state = EXPR_F fixpos($$, $1); /*% - $$ = dispatch2(aref_field, $1, $3); + $$ = dispatch2(aref_field, $1, escape_Qundef($3)); $$ = dispatch3(opassign, $$, $5, $6); %*/ @@ -1342,5 +1342,5 @@ mlhs_node : variable $$ = aryset($1, $3); /*% - $$ = dispatch2(aref_field, $1, $3); + $$ = dispatch2(aref_field, $1, escape_Qundef($3)); %*/ } @@ -1416,5 +1416,5 @@ lhs : variable $$ = aryset($1, $3); /*% - $$ = dispatch2(aref_field, $1, $3); + $$ = dispatch2(aref_field, $1, escape_Qundef($3)); %*/ } @@ -1677,5 +1677,5 @@ arg : lhs '=' arg fixpos($$, $1); /*% - $1 = dispatch2(aref_field, $1, $3); + $1 = dispatch2(aref_field, $1, escape_Qundef($3)); $$ = dispatch3(opassign, $1, $5, $6); %*/ @@ -3365,5 +3365,5 @@ method_call : operation paren_args fixpos($$, $1); /*% - $$ = dispatch2(aref, $1, $3); + $$ = dispatch2(aref, $1, escape_Qundef($3)); %*/ } Index: ext/ripper/eventids2.c =================================================================== RCS file: /cvs/ruby/src/ruby/ext/ripper/eventids2.c,v retrieving revision 1.4 diff -U2 -p -r1.4 eventids2.c --- ext/ripper/eventids2.c 22 Sep 2004 05:22:49 -0000 1.4 +++ ext/ripper/eventids2.c 5 Sep 2005 04:05:48 -0000 @@ -43,4 +43,8 @@ static ID ripper_id_words_sep; static ID ripper_id_regexp_beg; static ID ripper_id_regexp_end; +static ID ripper_id_label; +static ID ripper_id_lambda; +static ID ripper_id_lambda_arg; +static ID ripper_id_lambeg; static ID ripper_id_ignored_nl; @@ -91,4 +95,8 @@ ripper_init_eventids2() ripper_id_regexp_beg = rb_intern("on_regexp_beg"); ripper_id_regexp_end = rb_intern("on_regexp_end"); + ripper_id_label = rb_intern("on_label"); + ripper_id_lambda = rb_intern("on_lambda"); + ripper_id_lambda_arg = rb_intern("on_lambda_arg"); + ripper_id_lambeg = rb_intern("on_lambeg"); ripper_id_ignored_nl = rb_intern("on_ignored_nl"); @@ -235,4 +243,8 @@ static struct token_assoc { {tWORDS_BEG, &ripper_id_words_beg}, {tXSTRING_BEG, &ripper_id_backtick}, + {tLABEL, &ripper_id_label}, + {tLAMBDA, &ripper_id_lambda}, + {tLAMBDA_ARG, &ripper_id_lambda_arg}, + {tLAMBEG, &ripper_id_lambeg}, /* ripper specific tokens */ Index: ext/ripper/lib/ripper/core.rb =================================================================== RCS file: /cvs/ruby/src/ruby/ext/ripper/lib/ripper/core.rb,v retrieving revision 1.6 diff -U2 -p -r1.6 core.rb --- ext/ripper/lib/ripper/core.rb 27 Jul 2005 07:27:17 -0000 1.6 +++ ext/ripper/lib/ripper/core.rb 5 Sep 2005 04:46:50 -0000 @@ -177,4 +177,8 @@ class Ripper :ivar => 1, :kw => 1, + :label => 1, + :lambda => 1, + :lambda_arg => 1, + :lambeg => 1, :lbrace => 1, :lbracket => 1, @@ -817,4 +821,20 @@ class Ripper end + def on_label(token) + token + end + + def on_lambda(token) + token + end + + def on_lambda_arg(token) + token + end + + def on_lambeg(token) + token + end + def on_lbrace(token) token -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦