[#32185] Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...>

こんにちは、山本と申します。

26 messages 2007/11/08
[#32186] Re: Date#+に大きな数字を与えるとおかしな日付に — Tadayoshi Funaba <tadf@...> 2007/11/08

> Dateオブジェクトに+で大きな数字を与えるとおかしくなるようです。

[#32188] Re: Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...> 2007/11/09

山本です。

[#32191] Re: Date#+に大きな数字を与えるとおかしな日付に — tadf@... 2007/11/09

> アルゴリズムの意味がわからないで書いた、表層的なパッチなので

[#32194] Re: Date#+に大きな数字を与えるとおかしな日付に — Yukihiro Matsumoto <matz@...> 2007/11/09

Hi,

[#32200] Re: rational (Re: Date#+に大きな数字を与えるとおかしな日付に) — Tadayoshi Funaba <tadf@...> 2007/11/10

> 1.9ではRationalとComplexを組み込みに、という話はありましたが、

[#32225] Re: rational (Re: Date#+に大きな数字を与えるとおかしな日付に) — Shin-ichiro HARA <sinara@...> 2007/11/12

原です。

[#32198] [提案] Array#tail — "Yusuke ENDOH" <mame@...>

遠藤と申します。

21 messages 2007/11/09
[#32199] Re: [提案] Array#tail — Yukihiro Matsumoto <matz@...> 2007/11/10

まつもと ゆきひろです

[#32352] 1.9.1のリリース時期について — KIMURA Koichi <hogemuta@...>

木村です。

16 messages 2007/11/24
[#32353] Re: 1.9.1のリリース時期について — Yukihiro Matsumoto <matz@...> 2007/11/24

まつもと ゆきひろです

[#32403] Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Takahiro Kambe <taca@...>

こんばんは。

32 messages 2007/11/29
[#32414] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Urabe Shyouhei <shyouhei@...> 2007/11/30

卜部です。

[#32444] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Yukihiro Matsumoto <matz@...> 2007/12/03

まつもと ゆきひろです

[#32488] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Urabe Shyouhei <shyouhei@...> 2007/12/08

卜部です。

[#32525] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — "Yusuke ENDOH" <mame@...> 2007/12/10

遠藤と申します。

[#32643] Re: Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — "Yusuke ENDOH" <mame@...> 2007/12/19

遠藤です。

[#32409] Re: [ruby-cvs:21293] Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green — SASADA Koichi <ko1@...>

 ささだです.

10 messages 2007/11/30

[ruby-dev:32204] yydebug

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-11-10 19:26:47 UTC
List: ruby-dev #32204
なかだです。

コマンドラインオプションから触れる内部変数を、グローバルから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はできる。
    中田 伸悦

In This Thread

Prev Next