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

ruby-changes:49872

From: mame <ko1@a...>
Date: Sun, 21 Jan 2018 01:46:58 +0900 (JST)
Subject: [ruby-changes:49872] mame:r61990 (trunk): parse.y: rewrite excessed_comma process

mame	2018-01-21 01:21:29 +0900 (Sun, 21 Jan 2018)

  New Revision: 61990

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61990

  Log:
    parse.y: rewrite excessed_comma process
    
    Currently, parser.y includes core parser and Ripper parser obscurity.
    In addition, *some* Ripper code uses the result of the core parser,
    which make it difficult to separate the two parsers.
    
    I want to simplify this, not by separating the two parsers, but by
    making *all* Ripper actions follows the core parser actions.
    In other words, all the core parser actions run always even in Ripper,
    and after that, Ripper-specific actions run.
    
    For tha sake, in principle, I want to put `/*% ripper: ... %*/` in the
    end of actions.
    Anyway, it is too dirty to put it within expressions, IMO.

  Modified files:
    trunk/parse.y
Index: parse.y
===================================================================
--- parse.y	(revision 61989)
+++ parse.y	(revision 61990)
@@ -2908,16 +2908,12 @@ block_param	: f_arg ',' f_block_optarg ' https://github.com/ruby/ruby/blob/trunk/parse.y#L2908
 		    }
 		| f_arg ','
 		    {
-#ifndef RIPPER
+		    /*%%%*/
 			/* magic number for rest_id in iseq_set_arguments() */
 			const ID excessed_comma = 1;
-#else
-			const VALUE excessed_comma =
-			    /*% ripper: excessed_comma! %*/
-			    ;
-#endif
-			$$ = new_args_tail(p, Qnone, Qnone, Qnone, &@1);
-			$$ = new_args(p, $1, Qnone, excessed_comma, Qnone, $$, &@$);
+			$$ = new_args(p, $1, Qnone, excessed_comma, Qnone, new_args_tail(p, Qnone, Qnone, Qnone, &@1), &@$);
+		    /*% %*/
+		    /*% ripper: new_args(p, $1, Qnone, excessed_comma!, Qnone, new_args_tail(p, Qnone, Qnone, Qnone, NULL), NULL) %*/
 		    }
 		| f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail
 		    {

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

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