[前][次][番号順一覧][スレッド一覧]

ruby-changes:3205

From: ko1@a...
Date: 25 Dec 2007 21:34:38 +0900
Subject: [ruby-changes:3205] akr - Ruby:r14698 (trunk): * parse.y (struct parser_params): make parser_ruby_sourcefile common

akr	2007-12-25 21:34:21 +0900 (Tue, 25 Dec 2007)

  New Revision: 14698

  Modified files:
    trunk/ChangeLog
    trunk/parse.y

  Log:
    * parse.y (struct parser_params): make parser_ruby_sourcefile common
      field.  it is used by node_newnode.
      new field parser_ruby_sourcefile_string for ripper.
      (parser_initialize): initialize parser_ruby_sourcefile in ripper.
      (ripper_initialize): initialize parser_ruby_sourcefile_string.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=14698&r2=14697
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14698&r2=14697

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14697)
+++ ChangeLog	(revision 14698)
@@ -1,3 +1,11 @@
+Tue Dec 25 21:32:44 2007  Tanaka Akira  <akr@f...>
+
+	* parse.y (struct parser_params): make parser_ruby_sourcefile common
+	  field.  it is used by node_newnode.
+	  new field parser_ruby_sourcefile_string for ripper.
+	  (parser_initialize): initialize parser_ruby_sourcefile in ripper.
+	  (ripper_initialize): initialize parser_ruby_sourcefile_string.
+
 Tue Dec 25 21:26:09 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* common.mk (parse.c): depends on tool/ytab.sed.
Index: parse.y
===================================================================
--- parse.y	(revision 14697)
+++ parse.y	(revision 14698)
@@ -203,6 +203,7 @@
                      token
 */
 struct parser_params {
+    int is_ripper;
     NODE *heap;
 
     union tmpyystype *parser_yylval;   /* YYSTYPE not defined yet */
@@ -237,6 +238,7 @@
     int parser_ruby__end__seen;
     int line_count;
     int has_shebang;
+    char *parser_ruby_sourcefile; /* current source file */
     int parser_ruby_sourceline;	/* current line no. */
     rb_encoding *enc;
     rb_encoding *utf8;
@@ -245,14 +247,13 @@
 
 #ifndef RIPPER
     /* Ruby core only */
-    char *parser_ruby_sourcefile; /* current source file */
     NODE *parser_eval_tree_begin;
     NODE *parser_eval_tree;
     VALUE debug_lines;
     int nerr;
 #else
     /* Ripper only */
-    VALUE parser_ruby_sourcefile;
+    VALUE parser_ruby_sourcefile_string;
     const char *tokp;
     VALUE delayed;
     int delayed_line;
@@ -287,8 +288,6 @@
 
 #define YYLEX_PARAM parser
 
-#define ruby_eval_tree		(parser->parser_eval_tree)
-#define ruby_eval_tree_begin	(parser->parser_eval_tree_begin)
 #define lex_strterm		(parser->parser_lex_strterm)
 #define lex_state		(parser->parser_lex_state)
 #define cond_stack		(parser->parser_cond_stack)
@@ -321,6 +320,8 @@
 #define yydebug			(parser->parser_yydebug)
 #ifdef RIPPER
 #else
+#define ruby_eval_tree		(parser->parser_eval_tree)
+#define ruby_eval_tree_begin	(parser->parser_eval_tree_begin)
 #define ruby_debug_lines	(parser->debug_lines)
 #endif
 
@@ -9171,12 +9172,14 @@
     parser->parser_lex_pend = 0;
     parser->parser_lvtbl = 0;
     parser->parser_ruby__end__seen = 0;
+    parser->parser_ruby_sourcefile = 0;
 #ifndef RIPPER
-    parser->parser_ruby_sourcefile = 0;
+    parser->is_ripper = 0;
     parser->parser_eval_tree_begin = 0;
     parser->parser_eval_tree = 0;
 #else
-    parser->parser_ruby_sourcefile = Qnil;
+    parser->is_ripper = 1;
+    parser->parser_ruby_sourcefile_string = Qnil;
     parser->delayed = Qnil;
 
     parser->result = Qnil;
@@ -9191,6 +9194,11 @@
 
 extern void rb_mark_source_filename(char *);
 
+#ifdef RIPPER
+#define parser_mark ripper_parser_mark
+#define parser_free ripper_parser_free
+#endif
+
 static void
 parser_mark(void *ptr)
 {
@@ -9206,7 +9214,7 @@
     rb_gc_mark(p->debug_lines);
     rb_mark_source_filename(p->parser_ruby_sourcefile);
 #else
-    rb_gc_mark(p->parser_ruby_sourcefile);
+    rb_gc_mark(p->parser_ruby_sourcefile_string);
     rb_gc_mark(p->delayed);
     rb_gc_mark(p->value);
     rb_gc_mark(p->result);
@@ -9656,6 +9664,7 @@
 {
     struct parser_params *parser;
     VALUE src, fname, lineno;
+    VALUE fname2;
 
     Data_Get_Struct(self, struct parser_params, parser);
     rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
@@ -9669,13 +9678,17 @@
     parser->parser_lex_input = src;
     parser->eofp = Qfalse;
     if (NIL_P(fname)) {
-        fname = STR_NEW2("(ripper)");
+        fname2 = STR_NEW2(" (ripper)");
     }
     else {
         StringValue(fname);
+        fname2 = rb_str_new2(" ");
+        rb_str_append(fname2, fname);
     }
     parser_initialize(parser);
-    parser->parser_ruby_sourcefile = fname;
+
+    parser->parser_ruby_sourcefile_string = fname2;
+    parser->parser_ruby_sourcefile = RSTRING_PTR(fname2)+1;
     parser->parser_ruby_sourceline = NIL_P(lineno) ? 0 : NUM2INT(lineno) - 1;
 
     return Qnil;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]