Yydebug

e$B$J$+$@$G$9!#e(B

e$B%3%^%s%I%i%$%s%*%W%7%g%s$+$i?($l$kFbItJQ?t$r!"%0%m!<%P%k$+$ie(BVMe$B$+e(B
parsere$B$K0\9T$7$?$$$H9M$($F$$$k$N$G$9$,!“e(Byydebuge$B$Oe(Bbisone$B$G@8@.$5$le(B
e$B$k%=!<%9$KKd$a9~$^$l$F$$$k$N$G%3%s%Q%$%i$@$1$G$O$I$&$K$b$J$i$J$$e(B
e$B46$8$G$9!#$=$3$G!“30It%D!<%k$G$A$g$C$HA0=hM}$rF~$l$h$&$+$H;W$&$Ne(B
e$B$G$9$,!”$$$+$,$J$b$s$G$7$g$&$+!#e(Bsede$B<+BN$O!“e(Bdjgppe$B$de(BWindowse$B$G$b$9e(B
e$B$G$K;H$C$F$$$^$9$7!“e(Bautoconfe$B$r;H$&4D6-$J$iEvA3$”$k$O$:$G$9$,!”$3e(B
e$B$&$$$&J}K!$O5$$KF~$i$s$H$+!”$b$C$H$$$$J}K!$,$"$k$H$+!#e(B

Index: Makefile.in

— Makefile.in (revision 13873)
+++ Makefile.in (working copy)
@@ -170,7 +170,4 @@ lex.c: keywords
cp “$(srcdir)/[email protected]” $@

-.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

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32204] yydebug”
on Sun, 11 Nov 2007 04:26:47 +0900, Nobuyoshi N.
[email protected] writes:

|e$B%3%^%s%I%i%$%s%*%W%7%g%s$+$i?($l$kFbItJQ?t$r!“%0%m!<%P%k$+$ie(BVMe$B$+e(B
|parsere$B$K0\9T$7$?$$$H9M$($F$$$k$N$G$9$,!“e(Byydebuge$B$Oe(Bbisone$B$G@8@.$5$le(B
|e$B$k%=!<%9$KKd$a9~$^$l$F$$$k$N$G%3%s%Q%$%i$@$1$G$O$I$&$K$b$J$i$J$$e(B
|e$B46$8$G$9!#$=$3$G!“30It%D!<%k$G$A$g$C$HA0=hM}$rF~$l$h$&$+$H;W$&$Ne(B
|e$B$G$9$,!”$$$+$,$J$b$s$G$7$g$&$+!#e(Bsede$B<+BN$O!“e(Bdjgppe$B$de(BWindowse$B$G$b$9e(B
|e$B$G$K;H$C$F$$$^$9$7!“e(Bautoconfe$B$r;H$&4D6-$J$iEvA3$”$k$O$:$G$9$,!”$3e(B
|e$B$&$$$&J}K!$O5$$KF~$i$s$H$+!”$b$C$H$$$$J}K!$,$”$k$H$+!#e(B

e$B$$$$$s$8$c$J$$$G$7$g$&$+!#e(B1.8e$B$G$Oe(Bsede$B;H$C$F$k$7!#e(B

In article E1IrrBW-0000dQ-Ry@x31,
Yukihiro M. [email protected] writes:

|e$B%3%^%s%I%i%$%s%*%W%7%g%s$+$i?($l$kFbItJQ?t$r!“%0%m!<%P%k$+$ie(BVMe$B$+e(B
|parsere$B$K0\9T$7$?$$$H9M$($F$$$k$N$G$9$,!“e(Byydebuge$B$Oe(Bbisone$B$G@8@.$5$le(B
|e$B$k%=!<%9$KKd$a9~$^$l$F$$$k$N$G%3%s%Q%$%i$@$1$G$O$I$&$K$b$J$i$J$$e(B
|e$B46$8$G$9!#$=$3$G!“30It%D!<%k$G$A$g$C$HA0=hM}$rF~$l$h$&$+$H;W$&$Ne(B
|e$B$G$9$,!”$$$+$,$J$b$s$G$7$g$&$+!#e(Bsede$B<+BN$O!“e(Bdjgppe$B$de(BWindowse$B$G$b$9e(B
|e$B$G$K;H$C$F$$$^$9$7!“e(Bautoconfe$B$r;H$&4D6-$J$iEvA3$”$k$O$:$G$9$,!”$3e(B
|e$B$&$$$&J}K!$O5$$KF~$i$s$H$+!”$b$C$H$$$$J}K!$,$”$k$H$+!#e(B

e$B$$$$$s$8$c$J$$$G$7$g$&$+!#e(B1.8e$B$G$Oe(Bsede$B;H$C$F$k$7!#e(B

parse.c e$B$N@[email protected]}K!$rJQ$($k$H$-$O!"e(Bsnapshot.tar.gz e$B$N@8@.$bJQe(B
e$B$($J$-$c$$$1$J$$$s$8$c$J$$$G$7$g$&$+!#e(B

e$B$^$!!"e(Bruby e$BB&$Ge(B snapshot e$B$Ne(B parse.c
e$BEy$N@8@.$K4X$o$l$k$h$&$Je(B
e$B;E3]$1$,I,MW$J$h$&$J5$$b$7$^$9$,!#e(B

e$B$J$+$@$G$9!#e(B

At Wed, 14 Nov 2007 04:54:05 +0900,
Tanaka A. wrote in [ruby-dev:32280]:

e$B$^$!!"e(Bruby e$BB&$Ge(B snapshot e$B$Ne(B parse.c e$BEy$N@8@.$K4X$o$l$k$h$&$Je(B
e$B;E3]$1$,I,MW$J$h$&$J5$$b$7$^$9$,!#e(B

e$B$3$s$J$H$3$G$I$&$G$7$g$&$+!#e(B

$ sed ‘s/{$([a-zA-Z0-9_]*)}//g’ common.mk |
make -f - srcdir=. VPATH=include/ruby BASERUBY=ruby RUBY=ruby prereq

Index: common.mk

— common.mk (revision 13918)
+++ common.mk (working copy)
@@ -643,9 +643,12 @@ ext_prelude.c: $(srcdir)/tool/compile_pr
$(MINIRUBY) -I$(srcdir) -rrbconfig $(srcdir)/tool/compile_prelude.rb
$(srcdir)/prelude.rb $(srcdir)/gem_prelude.rb $@

-prereq: incs {$(VPATH)}prelude.c
+prereq: incs {$(VPATH)}parse.c $(srcdir)/ext/ripper/ripper.c
{$(VPATH)}prelude.c

docs:
$(BASERUBY) -I$(srcdir) $(srcdir)/tool/makedocs.rb $(INSNS2VMOPT)

+$(srcdir)/ext/ripper/ripper.c:

  • cd ext/ripper && exec $(MAKE) -f depend top_srcdir=…/… srcdir=.

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32280] Re: yydebug”
on Wed, 14 Nov 2007 04:54:05 +0900, Tanaka A. [email protected]
writes:

|parse.c e$B$N@[email protected]}K!$rJQ$($k$H$-$O!"e(Bsnapshot.tar.gz e$B$N@8@.$bJQe(B
|e$B$($J$-$c$$$1$J$$$s$8$c$J$$$G$7$g$&$+!#e(B

e$B$H$j$"$($:$3$A$i$OD>$7$F$*$-$^$7$?!#e(B