[#12143] NORETURN of 1.6 and 1.7 — nobu.nakada@...
なかだです。
7 messages
2001/02/02
[#12145] [PATCH] indent of access control & symbol highlight — nobu.nakada@...
なかだです。
11 messages
2001/02/03
[#12147] Re: [PATCH] indent of access control & symbol highlight
— matz@... (Yukihiro Matsumoto)
2001/02/03
まつもと ゆきひろです
[#12150] Re: [PATCH] indent of access control & symbol highlight
— arton <arton@...>
2001/02/03
artonです。
[#12152] Re: [PATCH] indent of access control & symbol highlight
— nobu.nakada@...
2001/02/03
なかだです。
[#12155] Re: [PATCH] indent of access control & symbol highlight
— matz@... (Yukihiro Matsumoto)
2001/02/03
まつもと ゆきひろです
[#12158] Re: [PATCH] indent of access control & symbol highlight
— nobu.nakada@...
2001/02/04
なかだです。
[#12159] FRAME argv — Toyofuku <toyofuku@...>
豊福です。
8 messages
2001/02/04
[#12164] patch for ext/gdbm — Koji Arai <JCA02266@...>
新井です。
24 messages
2001/02/04
[#12168] Re: patch for ext/gdbm
— matz@... (Yukihiro Matsumoto)
2001/02/05
まつもと ゆきひろです
[#12176] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/02/05
新井です。
[#12179] Re: patch for ext/gdbm
— matz@... (Yukihiro Matsumoto)
2001/02/06
まつもと ゆきひろです
[#12219] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/02/12
新井です。
[#12220] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/02/12
新井です。
[#13051] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/04/28
新井です。
[#13052] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/04/28
新井です。
[#13054] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/04/29
新井です。
[#13056] Re: patch for ext/gdbm
— matz@... (Yukihiro Matsumoto)
2001/04/29
まつもと ゆきひろです
[#13060] Re: patch for ext/gdbm
— Koji Arai <JCA02266@...>
2001/04/29
新井です。
[#12166] observer.rb (Re: [ruby-list:27448] observer と dRuby) — Masatoshi SEKI <m_seki@...>
4 messages
2001/02/05
[#12196] File.directory? on mswin32 — Minero Aoki <aamine@...>
あおきです。
11 messages
2001/02/08
[#12198] Re: File.directory? on mswin32
— Koji Oda <oda@...1.qnes.nec.co.jp>
2001/02/09
小田@QNES です。
[#12197] String#fnmatch — "Akinori MUSHA" <knu@...>
ちょっとしたユーティリティを書いていて、 String#fnmatch() が
6 messages
2001/02/08
[#12211] Adding value in CONFIG (rbconfig.rb) — Takahiro Kambe <taca@...>
こんばんは。
7 messages
2001/02/11
[#12212] Re: Adding value in CONFIG (rbconfig.rb)
— matz@... (Yukihiro Matsumoto)
2001/02/11
まつもと ゆきひろです
[#12214] Re: Adding value in CONFIG (rbconfig.rb)
— Takahiro Kambe <taca@...>
2001/02/12
In message <981934169.246959.22124.nullmailer@ev.netlab.zetabits.com>
[#12215] [PATCH] Dir::glob escape space — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
4 messages
2001/02/12
[#12224] lazy mswin32/mingw32(Re: データベース ) — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
12 messages
2001/02/13
[#12228] Re: lazy mswin32/mingw32(Re: データベース )
— "U.Nakamura" <usa@...>
2001/02/13
こんにちは、なかむら(う)です。
[#12233] Re: lazy mswin32/mingw32(Re: データベース )
— nobu.nakada@...
2001/02/13
なかだです。
[#12235] Re: lazy mswin32/mingw32(Re: データベース )
— "U.Nakamura" <usa@...>
2001/02/14
こんにちは、なかむら(う)です。
[#12256] set_trace_func — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
15 messages
2001/02/17
[#12258] Re: set_trace_func
— matz@... (Yukihiro Matsumoto)
2001/02/17
まつもと ゆきひろです
[#12268] Re: set_trace_func
— keiju@... (石塚圭樹)
2001/02/18
けいじゅ@日本ラショナルソフトウェアです.
[#12275] Re: set_trace_func
— matz@... (Yukihiro Matsumoto)
2001/02/18
まつもと ゆきひろです
[#12281] Re: set_trace_func
— keiju@... (石塚圭樹)
2001/02/20
けいじゅ@日本ラショナルソフトウェアです.
[#12261] system() problem — "Akinori MUSHA" <knu@...>
Ruby で以下を実行すると、いくつかの環境では終了待ちのまま
9 messages
2001/02/17
[#12263] Re: system() problem
— matz@... (Yukihiro Matsumoto)
2001/02/17
まつもと ゆきひろです
[#12288] __builtin_frame_address(2) — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
12 messages
2001/02/23
[#12289] Re: __builtin_frame_address(2)
— matz@... (Yukihiro Matsumoto)
2001/02/23
まつもと ゆきひろです
[#12294] Re: __builtin_frame_address(2)
— nobu.nakada@...
2001/02/25
なかだです。
[#12296] Re: __builtin_frame_address(2)
— matz@... (Yukihiro Matsumoto)
2001/02/25
まつもと ゆきひろです
[#12301] Re: __builtin_frame_address(2)
— nobu.nakada@...
2001/02/25
なかだです。
[#12293] crash on proc without a block — Kenichi Komiya <kom@...1.accsnet.ne.jp>
15 messages
2001/02/25
[#12295] Re: crash on proc without a block
— matz@... (Yukihiro Matsumoto)
2001/02/25
まつもと ゆきひろです
[#12299] Re: crash on proc without a block
— Kenichi Komiya <kom@...1.accsnet.ne.jp>
2001/02/25
[#12304] Re: crash on proc without a block
— matz@... (Yukihiro Matsumoto)
2001/02/26
まつもと ゆきひろです
[#12307] Re: crash on proc without a block
— nobu.nakada@...
2001/02/26
なかだです。
[#12318] Quote Symbol — Hiroshi IGARASHI <igarashi@...>
いがらしです。
15 messages
2001/02/27
[#12321] Re: Quote Symbol
— matz@... (Yukihiro Matsumoto)
2001/02/28
まつもと ゆきひろです
[#12325] Re: Quote Symbol
— Hiroshi IGARASHI <igarashi@...>
2001/02/28
いがらしです。
[#12326] Re: Quote Symbol
— matz@... (Yukihiro Matsumoto)
2001/02/28
まつもと ゆきひろです
[#12353] Re: Quote Symbol
— matz@... (Yukihiro Matsumoto)
2001/03/05
まつもと ゆきひろです
[#12357] Re: Quote Symbol
— Hiroshi IGARASHI <igarashi@...>
2001/03/05
いがらしです。
[#12361] Re: Quote Symbol
— matz@... (Yukihiro Matsumoto)
2001/03/05
まつもと ゆきひろです
[#12323] Re: [ruby-list:28364] class definition extension — "K.Kosako" <kosako@...>
ruby-listから移動しました。
13 messages
2001/02/28
[#12324] Re: [ruby-list:28364] class definition extension
— matz@... (Yukihiro Matsumoto)
2001/02/28
まつもと ゆきひろです
[#12327] Re: [ruby-list:28364] class definition extension
— "Nobuyoshi.Nakada" <nobu.nakada@...>
2001/02/28
なかだです。
[#12331] Re: [ruby-list:28364] class definition extension
— matz@... (Yukihiro Matsumoto)
2001/03/01
まつもと ゆきひろです
[#12332] Re: [ruby-list:28364] class definition extension
— gotoken@... (GOTO Kentaro)
2001/03/01
In message "[ruby-dev:12331] Re: [ruby-list:28364] class definition extension"
[ruby-dev:12323] Re: [ruby-list:28364] class definition extension
From:
"K.Kosako" <kosako@...>
Date:
2001-02-28 06:31:42 UTC
List:
ruby-dev #12323
ruby-listから移動しました。
Yukihiro Matsumotoさんの
<983338515.494474.5211.nullmailer@ev.netlab.zetabits.com>から
> 最終判断はもちろん私がするんですが、ちょうと今日が〆切だった
> りするんで、yaccファイルとたわむれている心の余裕がなかったん
> ですね。文法的に(conflictせずに)実現できるかどうかもわかりま
> せんでしたし。
>
> でも、小迫さんの方法ではちょっとつらそうですね。singletonと
> 同じようなやり方をして、生成側で NODE_CONST であるかどうかを
> 判定するとかが良いのでしょうか?
前のは、かなりつらい方法でした。
勉強になります。
以下の例も扱うには、全体を式にしてから扱うしか、
解決方法がなさそうですね。
class (1 < 2).type < Object
p self
end
時間に余裕がある方は、お試しください。
--- parse.y Mon Feb 26 14:29:00 2001
+++ /home/kosako/ruby/parse.y Wed Feb 28 15:00:58 2001
@@ -206,7 +206,7 @@
%type <node> if_tail opt_else case_body cases rescue exc_list exc_var ensure
%type <node> args ret_args when_args call_args paren_args opt_paren_args
%type <node> command_args aref_args opt_block_arg block_arg var_ref
-%type <node> mrhs mrhs_basic superclass block_call block_command
+%type <node> mrhs mrhs_basic block_call block_command
%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
%type <node> block_var opt_block_var brace_block do_block lhs none
@@ -1253,7 +1253,7 @@
$$ = NEW_FOR($2, $5, $8);
fixpos($$, $2);
}
- | kCLASS cname superclass
+ | kCLASS expr term
{
if (in_def || in_single)
yyerror("class definition in method body");
@@ -1265,7 +1265,19 @@
compstmt
kEND
{
- $$ = NEW_CLASS($2, $5, $3);
+ if (nd_type($2) == NODE_CALL && $2->nd_mid == '<') {
+ if (nd_type($2->nd_args) == NODE_ARRAY &&
+ ((NODE* )$2->nd_args)->nd_alen == 1) {
+ $$ = NEW_CLASS($2->nd_recv, $5,
+ ((NODE* )$2->nd_args)->nd_head);
+ }
+ else {
+ yyerror("Invalid superclass syntax");
+ }
+ }
+ else {
+ $$ = NEW_CLASS($2, $5, 0);
+ }
nd_set_line($$, $<num>4);
local_pop();
cref_pop();
@@ -1634,20 +1646,6 @@
backref : tNTH_REF
| tBACK_REF
-superclass : term
- {
- $$ = 0;
- }
- | '<'
- {
- lex_state = EXPR_BEG;
- }
- expr term
- {
- $$ = $3;
- }
- | error term {yyerrok; $$ = 0;}
-
f_arglist : '(' f_args opt_nl ')'
{
$$ = $2;
@@ -3373,7 +3371,8 @@
if (cond_nest > 0) {
cond_stack = (cond_stack<<1)|0;
}
- if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
+ if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
+ lex_state == EXPR_CLASS) {
c = tLPAREN;
}
else if (lex_state == EXPR_ARG && space_seen) {
--- eval.c Tue Feb 27 16:52:11 2001
+++ /home/kosako/ruby/eval.c Wed Feb 28 15:06:36 2001
@@ -3046,10 +3046,12 @@
case NODE_CLASS:
{
VALUE super, klass, tmp;
+ ID cname;
if (NIL_P(ruby_class)) {
rb_raise(rb_eTypeError, "no outer class/module");
}
+
if (node->nd_super) {
super = superclass(self, node->nd_super);
}
@@ -3057,13 +3059,24 @@
super = 0;
}
- klass = 0;
- if ((ruby_class == rb_cObject) && rb_autoload_defined(node->nd_cname)) {
- rb_autoload_load(node->nd_cname);
+ if (nd_type(node->nd_cname) == NODE_CONST) {
+ cname = ((NODE* )node->nd_cname)->nd_vid;
+ klass = 0;
+ if ((ruby_class == rb_cObject) && rb_autoload_defined(cname)) {
+ rb_autoload_load(cname);
+ }
+ if (rb_const_defined_at(ruby_class, cname)) {
+ klass = rb_const_get(ruby_class, cname);
+ }
}
- if (rb_const_defined_at(ruby_class, node->nd_cname)) {
- klass = rb_const_get(ruby_class, node->nd_cname);
+ else {
+ cname = 0;
+ klass = rb_eval(self, (NODE* )node->nd_cname);
+ if (! klass || TYPE(klass) != T_CLASS) {
+ rb_raise(rb_eTypeError, "class name value is not a class object");
+ }
}
+
if (klass) {
if (TYPE(klass) != T_CLASS) {
rb_raise(rb_eTypeError, "%s is not a class",
@@ -3090,9 +3103,14 @@
else {
override_class:
if (!super) super = rb_cObject;
- klass = rb_define_class_id(node->nd_cname, super);
- rb_const_set(ruby_class, node->nd_cname, klass);
- rb_set_class_path(klass,ruby_class,rb_id2name(node->nd_cname));
+ if (cname) {
+ klass = rb_define_class_id(cname, super);
+ rb_const_set(ruby_class, cname, klass);
+ rb_set_class_path(klass,ruby_class,rb_id2name(cname));
+ }
+ else {
+ klass = rb_define_class("(anonymous)", super);
+ }
}
if (ruby_wrapper) {
rb_extend_object(klass, ruby_wrapper);
----
小迫@ソフネック 渋谷区恵比寿1-15-1