[#32171] autoload_delete — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#32185] Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...>
こんにちは、山本と申します。
> Dateオブジェクトに+で大きな数字を与えるとおかしくなるようです。
山本です。
> アルゴリズムの意味がわからないで書いた、表層的なパッチなので
Hi,
> 1.9ではRationalとComplexを組み込みに、という話はありましたが、
原です。
ささだです.
[#32192] test-all results - ruby 1.9.0 (2007-11-09 patchlevel 0) [i686-linux] — SASADA Koichi <ko1@...>
ささだです.
[#32198] [提案] Array#tail — "Yusuke ENDOH" <mame@...>
遠藤と申します。
まつもと ゆきひろです
西山と申します
遠藤です。
[#32204] yydebug — Nobuyoshi Nakada <nobu@...>
なかだです。
[#32205] Use two pipes for duplex IO.popen — Tanaka Akira <akr@...>
改心して duplex な IO.popen で socketpair を使うのはやめよう
なかだです。
In article <20071111120021.7f0592e5.nobu@ruby-lang.org>,
[#32206] Integer#ord for 1.8 — Tanaka Akira <akr@...>
1.9 と 1.8 の両方で ?a.ord で 97 が得られるように、1.8 に
[#32219] trunkでビルド失敗 — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32247] round missing (mswin32) — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32263] toplevel irb method — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#32266] version string — SASADA Koichi <ko1@...>
ささだです.
[#32268] RFLOAT_VALUE(val), DOUBLE2NUM(dbl) — SASADA Koichi <ko1@...>
ささだです.
SASADA Koichi wrote:
[#32306] nanosecond Time and stat — Tanaka Akira <akr@...>
最近、nanosecond 単位な timestamp があるようです。
In article <874pflntd5.fsf@fsij.org>,
まつもと ゆきひろです
In article <E1Iu2GD-0004Wh-1I@x31>,
[#32308] core dump with undef/alias using dynamic symbols — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
遠藤と申します。
ささだです.
遠藤です。
ささだです.
[#32329] enumerator with single array and multiple arguments. — Tanaka Akira <akr@...>
enumerator を通すとひとつの配列と複数の引数が区別できません。
[#32330] defined?($&) — Tanaka Akira <akr@...>
ふと気がついたんですが、defined?($&) が "expression" になり
まつもと ゆきひろです
まつもと ゆきひろです
ささだです.
[#32333] test/ruby/test_eval.rb — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
[#32348] DRb test leaves ut_eval.rb process — Tanaka Akira <akr@...>
DRb のテストをすると、(テストがいろいろと失敗する他に) プロ
[#32352] 1.9.1のリリース時期について — KIMURA Koichi <hogemuta@...>
木村です。
まつもと ゆきひろです
木村です。
まつもと ゆきひろです
[#32403] Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Takahiro Kambe <taca@...>
こんばんは。
卜部です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
成瀬です。
卜部です。
遠藤と申します。
遠藤です。
ささだです.
まつもと ゆきひろです
[#32404] SEGV on child process by fork on GC.stress. — Tanaka Akira <akr@...>
GC.stress = true 下で fork すると子プロセスが SEGV します。
まつもと ゆきひろです
In article <E1Iy7HA-0006zn-37@x31>,
まつもと ゆきひろです
ささだです.
[#32409] Re: [ruby-cvs:21293] Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green — SASADA Koichi <ko1@...>
ささだです.
さとうふみやす @ OSS テクノロジです。
ささだです.
まつもと ゆきひろです
[ruby-dev:32204] yydebug
なかだです。
コマンドラインオプションから触れる内部変数を、グローバルからVMか
parserに移行したいと考えているのですが、yydebugはbisonで生成され
るソースに埋め込まれているのでコンパイラだけではどうにもならない
感じです。そこで、外部ツールでちょっと前処理を入れようかと思うの
ですが、いかがなもんでしょうか。sed自体は、djgppやWindowsでもす
でに使っていますし、autoconfを使う環境なら当然あるはずですが、こ
ういう方法は気に入らんとか、もっといい方法があるとか。
Index: Makefile.in
===================================================================
--- Makefile.in (revision 13873)
+++ Makefile.in (working copy)
@@ -170,7 +170,4 @@ lex.c: keywords
cp "$(srcdir)/$@.blt" $@
-.y.c:
- $(YACC) $(YFLAGS) -o $@ $<
-
.c.@OBJEXT@:
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c $<
Index: common.mk
===================================================================
--- common.mk (revision 13873)
+++ common.mk (working copy)
@@ -349,4 +349,9 @@ PHONY:
{$(VPATH)}parse.c: parse.y
+{$(VPATH)}.y.c:
+ $(YACC) $(YFLAGS) -o y.tab.c $<
+ sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@
+ @$(RM) y.tab.c
+
acosh.$(OBJEXT): {$(VPATH)}acosh.c
alloca.$(OBJEXT): {$(VPATH)}alloca.c
Index: ruby.c
===================================================================
--- ruby.c (revision 13873)
+++ ruby.c (working copy)
@@ -62,5 +62,6 @@ char *getenv();
VALUE ruby_debug = Qfalse;
VALUE ruby_verbose = Qfalse;
-extern int ruby_yydebug;
+VALUE rb_parser_get_yydebug(VALUE);
+VALUE rb_parser_set_yydebug(VALUE, VALUE);
char *ruby_inplace_mode = 0;
@@ -594,5 +595,5 @@ proc_options(int argc, char **argv, stru
case 'y':
- ruby_yydebug = 1;
+ opt->yydebug = 1;
s++;
goto reswitch;
@@ -839,5 +840,5 @@ proc_options(int argc, char **argv, stru
}
else if (strcmp("yydebug", s) == 0)
- ruby_yydebug = 1;
+ opt->yydebug = 1;
else if (strcmp("help", s) == 0) {
usage(origarg.argv[0]);
@@ -994,4 +995,5 @@ process_options(VALUE arg)
ruby_init_gems(opt);
parser = rb_parser_new();
+ if (opt->yydebug) rb_parser_set_yydebug(parser, Qtrue);
if (opt->e_script) {
if (opt->enc_index >= 0)
Index: parse.y
===================================================================
--- parse.y (revision 13873)
+++ parse.y (working copy)
@@ -241,4 +241,6 @@ struct parser_params {
rb_encoding *utf8;
+ int parser_yydebug;
+
#ifndef RIPPER
/* Ruby core only */
@@ -283,7 +285,5 @@ static int parser_yyerror(struct parser_
#define yyerror(msg) parser_yyerror(parser, msg)
-#define YYPARSE_PARAM parser_v
-#define YYLEX_PARAM parser_v
-#define parser ((struct parser_params*)parser_v)
+#define YYLEX_PARAM parser
#define ruby_eval_tree (parser->parser_eval_tree)
@@ -318,4 +318,5 @@ static int parser_yyerror(struct parser_
#define ruby_sourceline (parser->parser_ruby_sourceline)
#define ruby_sourcefile (parser->parser_ruby_sourcefile)
+#define yydebug (parser->parser_yydebug)
#ifdef RIPPER
#else
@@ -327,5 +328,4 @@ static int yylex(void*, void*);
#ifndef RIPPER
#define yyparse ruby_yyparse
-#define yydebug ruby_yydebug
static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
@@ -490,5 +490,4 @@ static VALUE ripper_dispatch5(struct par
#define yyparse ripper_yyparse
-#define yydebug ripper_yydebug
static VALUE ripper_intern(const char*);
@@ -588,4 +587,5 @@ static void ripper_compile_error(struct
%pure_parser
+%parse-param {struct parser_params *parser}
%union {
@@ -9142,4 +9142,7 @@ parser_free(void *ptr)
}
+VALUE rb_parser_get_yydebug(VALUE);
+VALUE rb_parser_set_yydebug(VALUE, VALUE);
+
#ifndef RIPPER
static struct parser_params *
@@ -9193,4 +9196,35 @@ rb_parser_encoding(VALUE vparser)
}
+/*
+ * call-seq:
+ * ripper.yydebug -> true or false
+ *
+ * Get yydebug.
+ */
+VALUE
+rb_parser_get_yydebug(VALUE self)
+{
+ struct parser_params *parser;
+
+ Data_Get_Struct(self, struct parser_params, parser);
+ return yydebug ? Qtrue : Qfalse;
+}
+
+/*
+ * call-seq:
+ * ripper.yydebug = flag
+ *
+ * Set yydebug.
+ */
+VALUE
+rb_parser_set_yydebug(VALUE self, VALUE flag)
+{
+ struct parser_params *parser;
+
+ Data_Get_Struct(self, struct parser_params, parser);
+ yydebug = RTEST(flag);
+ return flag;
+}
+
#ifdef YYMALLOC
#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
@@ -9555,29 +9589,4 @@ ripper_initialize(int argc, VALUE *argv,
}
-/*
- * call-seq:
- * Ripper.yydebug -> true or false
- *
- * Get yydebug.
- */
-static VALUE
-ripper_s_get_yydebug(VALUE self)
-{
- return ripper_yydebug ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * Ripper.yydebug = flag
- *
- * Set yydebug.
- */
-static VALUE
-ripper_s_set_yydebug(VALUE self, VALUE flag)
-{
- ripper_yydebug = RTEST(flag);
- return flag;
-}
-
extern VALUE rb_thread_pass(void);
@@ -9705,6 +9714,4 @@ Init_ripper(void)
Ripper = rb_define_class("Ripper", rb_cObject);
rb_define_const(Ripper, "Version", rb_str_new2(RIPPER_VERSION));
- rb_define_singleton_method(Ripper, "yydebug", ripper_s_get_yydebug, 0);
- rb_define_singleton_method(Ripper, "yydebug=", ripper_s_set_yydebug, 1);
rb_define_alloc_func(Ripper, ripper_s_allocate);
rb_define_method(Ripper, "initialize", ripper_initialize, -1);
@@ -9714,4 +9721,6 @@ Init_ripper(void)
rb_define_method(Ripper, "end_seen?", rb_parser_end_seen_p, 0);
rb_define_method(Ripper, "encoding", rb_parser_encoding, 0);
+ rb_define_method(Ripper, "yydebug", rb_parser_get_yydebug, 0);
+ rb_define_method(Ripper, "yydebug=", rb_parser_set_yydebug, 1);
#ifdef RIPPER_DEBUG
rb_define_method(rb_mKernel, "assert_Qundef", ripper_assert_Qundef, 2);
Index: bcc32/Makefile.sub
===================================================================
--- bcc32/Makefile.sub (revision 13873)
+++ bcc32/Makefile.sub (working copy)
@@ -210,9 +210,4 @@ VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ru
$(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:/=\)
-.y.c:
- $(YACC) $(YFLAGS) $(<:\=/)
- sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $(@F)
- @del y.tab.c
-
all: $(srcdir)/bcc32/Makefile.sub $(srcdir)/common.mk
Index: win32/Makefile.sub
===================================================================
--- win32/Makefile.sub (revision 13873)
+++ win32/Makefile.sub (working copy)
@@ -579,9 +579,4 @@ lex.c: {$(srcdir)}lex.c.blt
copy $(?:/=\) $@
-{$(srcdir)}.y.c:
- $(YACC) $(YFLAGS) $(<:\=/)
- sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
- @del y.tab.c
-
$(OBJS): {$(hdrdir)/ruby}win32.h
Index: wince/Makefile.sub
===================================================================
--- wince/Makefile.sub (revision 13873)
+++ wince/Makefile.sub (working copy)
@@ -531,9 +531,4 @@ lex.c: {$(srcdir)}lex.c.blt
copy $(?:/=\) $@
-{$(srcdir)}.y.c:
- $(YACC) $(YFLAGS) $(<:\=/)
- sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
- @del y.tab.c
-
!include $(srcdir)/common.mk
Index: tool/ytab.sed
===================================================================
--- tool/ytab.sed (revision 0)
+++ tool/ytab.sed (revision 0)
@@ -0,0 +1,10 @@
+#!/bin/sed -f
+/^int yydebug;/{
+i\
+#ifndef yydebug
+a\
+#endif
+}
+s/\<\(yyerror[ ]*([ ]*parser,\)/parser_\1/
+s!^ *extern char \*getenv();!/* & */!
+s/^\(#.*\)".*\.tab\.c"/\1"parse.c"/
Property changes on: tool/ytab.sed
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ LF
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦