From 088fd968ed8af169964bed47cde2b25b58004396 Mon Sep 17 00:00:00 2001 From: ydah Date: Mon, 14 Apr 2025 02:13:58 +0900 Subject: [PATCH] Add a new non-terminal symbol `ternary` to tidy up --- parse.y | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/parse.y b/parse.y index eaeb15f321..513766a483 100644 --- a/parse.y +++ b/parse.y @@ -2764,7 +2764,7 @@ rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary) %type defn_head defs_head k_def %type block_open k_while k_until k_for allow_exits %type top_stmts top_stmt begin_block endless_arg endless_command -%type bodystmt stmts stmt_or_begin stmt expr arg primary +%type bodystmt stmts stmt_or_begin stmt expr arg ternary primary %type command command_call command_call_value method_call %type expr_value expr_value_do arg_value primary_value rel_expr %type fcall @@ -4039,15 +4039,18 @@ arg : asgn(arg_rhs) $$ = new_defined(p, $4, &@$); /*% ripper: defined!($:4) %*/ } - | arg '?' arg '\n'? ':' arg + | def_endless_method(endless_arg) + | ternary + | primary + ; + +ternary : arg '?' arg '\n'? ':' arg { value_expr($1); $$ = new_if(p, $1, $3, $6, &@$, &NULL_LOC, &@5, &NULL_LOC); fixpos($$, $1); /*% ripper: ifop!($:1, $:3, $:6) %*/ } - | def_endless_method(endless_arg) - | primary ; endless_arg : arg %prec modifier_rescue