[#25781] ext/extmk.rb: the overlapping options is omitted — IWATSUKI Hiroyuki <don@...>
岩月と申します。
7 messages
2005/03/01
[#25782] Re: ext/extmk.rb: the overlapping options is omitted
— nobu@...
2005/03/01
なかだです。
[#25784] Re: ext/extmk.rb: the overlapping options is omitted
— IWATSUKI Hiroyuki <don@...>
2005/03/02
岩月と申します。
[#25794] OpenSSL::SSL::SSLSocket and IO — Tanaka Akira <akr@...17n.org>
OpenSSL::SSL::SSLSocket と IO との一貫性を調べようと思ってちょっと調べ
5 messages
2005/03/02
[#25801] NKF.guess のバグ? — Kazuhiko <kazuhiko@...>
かずひこです。
6 messages
2005/03/03
[#25808] break & retry in block — Shin-ichiro HARA <sinara@...>
原です。
15 messages
2005/03/04
[#25822] Re: break & retry in block
— Yukihiro Matsumoto <matz@...>
2005/03/07
まつもと ゆきひろです
[#25823] Re: break & retry in block
— Yukihiro Matsumoto <matz@...>
2005/03/07
まつもと ゆきひろです
[#25830] Re: break & retry in block
— Shin-ichiro HARA <sinara@...>
2005/03/08
原です。
[#25832] Re: break & retry in block
— Yukihiro Matsumoto <matz@...>
2005/03/08
まつもと ゆきひろです
[#25833] Re: break & retry in block
— Shin-ichiro HARA <sinara@...>
2005/03/08
原です。
[#25834] Re: break & retry in block
— Yukihiro Matsumoto <matz@...>
2005/03/08
まつもと ゆきひろです
[#25818] Ruby on IRIX 5.3 — Takahiro Kambe <taca@...>
こんばんは。
7 messages
2005/03/06
[#25819] Re: Ruby on IRIX 5.3
— nobu@...
2005/03/06
なかだです。
[#25826] Re: Ruby on IRIX 5.3
— Takahiro Kambe <taca@...>
2005/03/07
In message <200503062242.j26MgLgr003313@sharui.nakada.niregi.kanuma.tochigi.jp>
[#25846] Re: [ruby-cvs] ruby/test/openssl, ruby/ext/openssl, ruby/ext/openssl/lib/openssl, ruby: * ext/openssl/ossl_ssl.c: OpenSSL::SSL::SSLContexts suports callbacks: — Tanaka Akira <akr@...17n.org>
In article <20050309104545.332CFC671F@lithium.ruby-lang.org>,
3 messages
2005/03/09
[#25853] conflict method and local variable — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
56 messages
2005/03/10
[#25854] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/10
まつもと ゆきひろです
[#25855] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/10
永井@知能.九工大です.
[#25856] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/10
まつもと ゆきひろです
[#25857] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/11
永井@知能.九工大です.
[#25858] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/11
まつもと ゆきひろです
[#25861] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/11
永井@知能.九工大です.
[#25863] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/11
まつもと ゆきひろです
[#25864] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/11
永井@知能.九工大です.
[#25865] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/11
まつもと ゆきひろです
[#25866] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/11
永井@知能.九工大です.
[#25869] Re: conflict method and local variable
— Shugo Maeda <shugo@...>
2005/03/13
前田です。
[#25875] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/13
まつもと ゆきひろです
[#25878] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/13
永井@知能.九工大です.
[#25882] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/13
まつもと ゆきひろです
[#25884] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/14
永井@知能.九工大です.
[#25885] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/14
まつもと ゆきひろです
[#25886] Re: conflict method and local variable
— Hidetoshi NAGAI <nagai@...>
2005/03/14
永井@知能.九工大です.
[#25887] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/14
まつもと ゆきひろです
[#25889] Re: conflict method and local variable
— Shugo Maeda <shugo@...>
2005/03/14
前田です。
[#25890] Re: conflict method and local variable
— "U.Nakamura" <usa@...>
2005/03/14
こんにちは、なかむら(う)です。
[#25888] Re: conflict method and local variable
— Shugo Maeda <shugo@...>
2005/03/14
前田です。
[#25893] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/14
まつもと ゆきひろです
[#25905] Re: conflict method and local variable
— Shugo Maeda <shugo@...>
2005/03/14
前田です。
[#25906] Re: conflict method and local variable
— Yukihiro Matsumoto <matz@...>
2005/03/14
まつもと ゆきひろです
[#25879] Ruby2.0MethodSearchRule — SASADA Koichi <ko1@...>
ささだです。
11 messages
2005/03/13
[#25902] Re: Ruby2.0MethodSearchRule
— Takaaki Tateishi <ttate@...>
2005/03/14
SASADA Koichi wrote:
[#25930] events in `if' and `begin' — Shugo Maeda <shugo@...>
前田です。
5 messages
2005/03/22
[#25946] ext/tk/sample/**/*.gif are broken — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
16 messages
2005/03/27
[#25947] Re: ext/tk/sample/**/*.gif are broken
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2005/03/27
山本です。
[#25950] Re: ext/tk/sample/**/*.gif are broken
— nobu@...
2005/03/27
なかだです。
[#25959] some trouble on ext/tk/sample — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
20 messages
2005/03/29
[#25969] Re: some trouble on ext/tk/sample
— Hidetoshi NAGAI <nagai@...>
2005/03/30
永井@知能.九工大です.
[#25970] Re: some trouble on ext/tk/sample
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2005/03/30
山本です。
[#25973] Re: some trouble on ext/tk/sample
— Hidetoshi NAGAI <nagai@...>
2005/03/31
永井@知能.九工大です.
[#25985] Re: some trouble on ext/tk/sample
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2005/04/04
山本です。
[#25987] Re: some trouble on ext/tk/sample
— Hidetoshi NAGAI <nagai@...>
2005/04/04
永井@知能.九工大です.
[#25996] Re: some trouble on ext/tk/sample
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2005/04/06
山本です。
[#25997] Re: some trouble on ext/tk/sample
— Hidetoshi NAGAI <nagai@...>
2005/04/06
永井@知能.九工大です.
[#26000] Re: some trouble on ext/tk/sample
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2005/04/07
山本です。
[ruby-dev:25780] Proc instance
From:
nobu@...
Date:
2005-03-01 13:42:29 UTC
List:
ruby-dev #25780
なかだです。
以前からときおり要望のある、procの省略を試しに実装してみました。
x = {|a| p a}; x.call(4)
x = (do |a| p a end); x.call(9)
ブレースのほうは||、do/endはカッコが必須という制限がありますが。
* eval.c (rb_eval): NODE_LAMBDA implemented.
* node.h (NODE_LAMBDA): for literal Proc object.
* parse.y (expr): interpret mere do...end block as proc object.
* parse.y (primary): ditto, for brace block.
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.755
diff -U2 -p -r1.755 eval.c
--- eval.c 22 Feb 2005 14:57:43 -0000 1.755
+++ eval.c 1 Mar 2005 09:53:40 -0000
@@ -2942,4 +2942,5 @@ rb_eval(self, n)
case NODE_ITER:
case NODE_FOR:
+ case NODE_LAMBDA:
{
PUSH_TAG(PROT_LOOP);
@@ -2953,4 +2954,8 @@ rb_eval(self, n)
result = rb_eval(self, node->nd_iter);
}
+ else if (nd_type(node) == NODE_LAMBDA) {
+ ruby_iter->iter = ruby_frame->iter = ITER_CUR;
+ result = rb_block_proc();
+ }
else {
VALUE recv;
Index: node.h
===================================================================
RCS file: /cvs/ruby/src/ruby/node.h,v
retrieving revision 1.61
diff -U2 -p -r1.61 node.h
--- node.h 16 Dec 2004 15:01:49 -0000 1.61
+++ node.h 1 Mar 2005 09:53:40 -0000
@@ -126,4 +126,5 @@ enum node_type {
NODE_ATTRASGN,
NODE_PRELUDE,
+ NODE_LAMBDA,
NODE_LAST
};
@@ -341,4 +342,5 @@ typedef struct RNode {
#define NEW_ATTRASGN(r,m,a) NEW_NODE(NODE_ATTRASGN,r,m,a)
#define NEW_PRELUDE(p,b) NEW_NODE(NODE_PRELUDE,p,b,0)
+#define NEW_LAMBDA(v,b) NEW_NODE(NODE_LAMBDA,v,b,0)
#define NOEX_PUBLIC 0
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.370
diff -U2 -p -r1.370 parse.y
--- parse.y 26 Feb 2005 21:08:24 -0000 1.370
+++ parse.y 1 Mar 2005 13:35:21 -0000
@@ -490,5 +490,5 @@ static void ripper_compile_error _((stru
%type <node> f_arglist f_args f_optarg f_opt f_block_arg opt_f_block_arg
%type <node> assoc_list assocs assoc undef_list backref string_dvar
-%type <node> for_var block_var opt_block_var block_par
+%type <node> for_var block_var opt_block_var block_var_def block_par
%type <node> brace_block cmd_brace_block do_block lhs none fitem
%type <node> mlhs mlhs_head mlhs_basic mlhs_entry mlhs_item mlhs_node
@@ -1015,4 +1015,9 @@ expr : command_call
%*/
}
+ | do_block
+ {
+ $$ = $1;
+ nd_set_type($$, NODE_LAMBDA);
+ }
| arg
;
@@ -2505,4 +2509,24 @@ primary : literal
%*/
}
+ | tLBRACE
+ {
+ /*%%%*/
+ $<vars>$ = dyna_push();
+ $<num>1 = ruby_sourceline;
+ /*%
+ %*/
+ }
+ block_var_def {$<vars>$ = ruby_dyna_vars;}
+ compstmt
+ '}'
+ {
+ /*%%%*/
+ $$ = NEW_LAMBDA($3, dyna_init($5, $<vars>4));
+ nd_set_line($$, $<num>1);
+ dyna_pop($<vars>2);
+ /*%
+ $$ = dispatch2(brace_block, escape_Qundef($3), $5);
+ %*/
+ }
| kRETURN
{
@@ -3063,5 +3087,11 @@ block_var : block_par
opt_block_var : none
- | '|' /* none */ '|'
+ | block_var_def
+ {
+ $$ = $1;
+ }
+ ;
+
+block_var_def : '|' /* none */ '|'
{
/*%%%*/
@@ -6381,5 +6411,5 @@ parser_yylex(parser)
if (CMDARG_P() && state != EXPR_CMDARG)
return kDO_BLOCK;
- if (state == EXPR_ENDARG)
+ if (state == EXPR_ENDARG || state == EXPR_BEG)
return kDO_BLOCK;
return kDO;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦