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/