[#18151] Regexp.last_match — WATANABE Tetsuya <llama@...01.gate01.com>
渡辺哲也です。
[#18186] [req] Marshal — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
In article <1031498274.659939.18144.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1032189662.175916.22019.nullmailer@picachu.netlab.jp>,
[#18208] Re: [ruby-list:35875] Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
わたなべです。
[#18229] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
わたなべです。
わたなべです。
こんにちは、なかむら(う)です。
わたなべです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
わたなべです。
[#18246] Re: missing/vsnprintf.c: printf("%+f", -0.0) — WATANABE Hirofumi <eban@...>
わたなべです。
At Tue, 10 Sep 2002 12:21:10 +0900,
[#18262] mswin32: EINVAL on Process.kill — Minero Aoki <aamine@...>
あおきです。
[#18274] $0 handling on DOSISH — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
岩月と申します。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[#18285] rubicon on EWS4800 — Koji Arai <JCA02266@...>
新井です。
新井です。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
新井です。
なかだです。
In message <20020921.152641.11483667.JCA02266@nifty.ne.jp>
なかだです。
In article <200209211605.g8LG52p04564@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211628.g8LGSxp04786@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209211739.g8LHdKp05495@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209220415.g8M4Fkp24392@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200209260105.g8Q15PR08171@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <20020921.152641.11483667.JCA02266@nifty.ne.jp>,
なかだです。
In article <200209251737.g8PHbdR03024@sharui.nakada.kanuma.tochigi.jp>,
渡辺哲也です。
なかだです。
渡辺哲也です。
渡辺哲也です。
なかだです。
渡辺哲也です。
なかだです。
In article <200210020254.g922srH01700@sharui.nakada.kanuma.tochigi.jp>,
[#18314] class nest in module_eval — Minero Aoki <aamine@...>
あおきです。
[#18361] compile parse.y with -Wall — nobu.nakada@...
なかだです。
なかだです。
[#18371] Re: [ruby-cvs] ruby/lib/uri: * eval.c (ruby_run): should set toplevel visibility again here. — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#18374] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
なかだです。
わたなべです。
いがらしです。少し前の話ですが。
わたなべです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#18391] pstore.rb can make a broken store — YANAGAWA Kazuhisa <kjana@...4lab.to>
# お願いされたから書いてみよう :-)
In article <20020926134339.C8DAE1EE12@milestones.dm4lab.to>,
[ruby-dev:18197] VALUEs in yacc stack (Re: autoload patch for ruby-1.7)
あおきです。
Subject変え & スレッド切ります。
In mail "[ruby-dev:18195] Re: autoload patch for ruby-1.7"
nobu.nakada@nifty.ne.jp wrote:
> なかだです。
> > あ、すみません。話を混ぜてしまったのですが、これは malloc で
> > yacc のスタックをとる場合です。
> >
> > そのときは VALUE がヒープに置かれるので、それをカバーするために
> > スイープフェイズに入ってから NODE は無条件にマークしていますよね。
> > でも String は NODE ではないのでそのままスイープされてしまうと
> > 思うのです。
>
> うーん、そうかも知れません。
>
> > つまり malloc な yacc のことを考えるなら、セマンティックスタック
> > には (NODE 以外の (ポインタである VALUE)) を入れてはいけないのでは
> > ないでしょうか。具体的に問題になるのはこの三つです。
> >
> > %token <val> tINTEGER tFLOAT tSTRING_CONTENT
>
> NODE_LITやNODE_STRに入れて返すようにするってことですね。むしろ、
です。
> rb_gc_mark_parser()を導入するなら、セマンティックスタックもマー
> クするようにしたいところですが。
できればそれが一番いいですけど……。インターフェイスが決まって
ないので難しいですよね。中田さんの [ruby-dev:16215] では
変数の名前が違うとまずいし、その前の malloc 差し替えるのは
ちょっと恐い感じ。
コンパイル中は rb_newobj() にフックをかけてレジストリに
入れておくのはどうだろう。ああでも生成全部フックするのは
いくらなんでも遅いか。
あ、
void *yacc_stack = 0;
%%
program: DUMMY
{
yacc_stack = &$1;
}
とするのはどうでしょう?……長さがわからないからだめか。惜しい。
やっぱり全部 NODE を付けるのがシンプルでよさそうです。
とりあえずその方向でパッチ添付。
-------------------------------------------------------------------
青木峰郎
Index: parse.y
===================================================================
RCS file: /home/aamine/cvs/ruby/ruby/parse.y,v
retrieving revision 1.209
diff -u -p -r1.209 parse.y
--- parse.y 5 Sep 2002 20:00:52 -0000 1.209
+++ parse.y 5 Sep 2002 21:32:45 -0000
@@ -224,14 +224,14 @@ static void top_local_setup();
k__FILE__
%token <id> tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR
-%token <val> tINTEGER tFLOAT tSTRING_CONTENT
+%token <node> tINTEGER tFLOAT tSTRING_CONTENT
%token <node> tNTH_REF tBACK_REF
%token <num> tREGEXP_END
%type <node> singleton strings string string1 xstring regexp
%type <node> string_contents xstring_contents string_content
%type <node> words qwords word_list qword_list word
-%type <val> literal numeric
+%type <node> literal numeric
%type <node> bodystmt compstmt stmts stmt expr arg primary command command_call method_call
%type <node> expr_value arg_value primary_value
%type <node> if_tail opt_else case_body cases opt_rescue exc_list exc_var opt_ensure
@@ -1282,9 +1282,6 @@ mrhs_basic : args ',' arg_value
;
primary : literal
- {
- $$ = NEW_LIT($1);
- }
| strings
| xstring
| regexp
@@ -1738,7 +1735,7 @@ opt_ensure : kENSURE compstmt
literal : numeric
| symbol
{
- $$ = ID2SYM($1);
+ $$ = NEW_LIT(ID2SYM($1));
}
;
@@ -1878,7 +1875,7 @@ qword_list : /* none */
}
| qword_list tSTRING_CONTENT ' '
{
- $$ = list_append($1, NEW_STR($2));
+ $$ = list_append($1, $2);
}
;
@@ -1904,7 +1901,7 @@ xstring_contents: /* none */
}
;
-string_content : tSTRING_CONTENT {$$ = NEW_STR($1);}
+string_content : tSTRING_CONTENT
| tSTRING_DVAR
{
$<num>1 = lex_strnest;
@@ -2917,7 +2914,7 @@ parse_string(quote)
}
tokfix();
- yylval.val = rb_str_new(tok(), toklen());
+ yylval.node = NEW_STR(rb_str_new(tok(), toklen()));
return tSTRING_CONTENT;
}
@@ -3070,7 +3067,7 @@ here_document(here)
pushback(c);
if ((c = tokadd_string(func, '\n', 0)) == -1) goto error;
if (c != '\n') {
- yylval.val = rb_str_new(tok(), toklen());
+ yylval.node = NEW_STR(rb_str_new(tok(), toklen()));
return tSTRING_CONTENT;
}
tokadd(nextc());
@@ -3080,7 +3077,7 @@ here_document(here)
}
heredoc_restore(lex_strterm);
lex_strterm = NEW_STRTERM(-1, 0, 0);
- yylval.val = str;
+ yylval.node = NEW_STR(str);
return tSTRING_CONTENT;
}
@@ -3386,8 +3383,8 @@ yylex()
c = read_escape();
}
c &= 0xff;
- yylval.val = INT2FIX(c);
lex_state = EXPR_END;
+ yylval.node = NEW_LIT(INT2FIX(c));
return tINTEGER;
case '&':
@@ -3564,7 +3561,7 @@ yylex()
yyerror("numeric literal without digits");
}
else if (nondigit) goto trailing_uc;
- yylval.val = rb_cstr_to_inum(tok(), 16, Qfalse);
+ yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 16, Qfalse));
return tINTEGER;
}
if (c == 'b' || c == 'B') {
@@ -3588,7 +3585,7 @@ yylex()
yyerror("numeric literal without digits");
}
else if (nondigit) goto trailing_uc;
- yylval.val = rb_cstr_to_inum(tok(), 2, Qfalse);
+ yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 2, Qfalse));
return tINTEGER;
}
if (c == 'd' || c == 'D') {
@@ -3612,7 +3609,7 @@ yylex()
yyerror("numeric literal without digits");
}
else if (nondigit) goto trailing_uc;
- yylval.val = rb_cstr_to_inum(tok(), 10, Qfalse);
+ yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 10, Qfalse));
return tINTEGER;
}
if (c == '_') {
@@ -3643,7 +3640,7 @@ yylex()
pushback(c);
tokfix();
if (nondigit) goto trailing_uc;
- yylval.val = rb_cstr_to_inum(tok(), 8, Qfalse);
+ yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 8, Qfalse));
return tINTEGER;
}
if (nondigit) {
@@ -3659,7 +3656,7 @@ yylex()
}
else {
pushback(c);
- yylval.val = INT2FIX(0);
+ yylval.node = NEW_LIT(INT2FIX(0));
return tINTEGER;
}
}
@@ -3738,10 +3735,10 @@ yylex()
rb_warn("Float %s out of range", tok());
errno = 0;
}
- yylval.val = rb_float_new(d);
+ yylval.node = NEW_LIT(rb_float_new(d));
return tFLOAT;
}
- yylval.val = rb_cstr_to_inum(tok(), 10, Qfalse);
+ yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 10, Qfalse));
return tINTEGER;
}