style: split a function in two

grammar_current_rule_action_append was used in two different places:
for actual action (`{...}`), and for predicates (`%?{...}`).  Let's
split this in two different functions.

* src/reader.h, src/reader.c (grammar_current_rule_predicate_append): New.
Extracted from...
(grammar_current_rule_action_append): here.
Remove arguments that don't apply.
Adjust dependencies.
This commit is contained in:
Akim Demaille
2018-06-17 17:21:01 +02:00
parent a0f33a28e9
commit 9502b2ab48
5 changed files with 24 additions and 12 deletions

View File

@@ -1,4 +1,4 @@
/* A Bison parser, made by GNU Bison 3.0.4.38-1047-dirty. */
/* A Bison parser, made by GNU Bison 3.0.5.23-f58b-dirty. */
/* Bison implementation for Yacc-like parsers in C
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "3.0.4.38-1047-dirty"
#define YYBISON_VERSION "3.0.5.23-f58b-dirty"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -2608,13 +2608,13 @@ yyreduce:
case 89:
#line 617 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref), false); }
{ grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref)); }
#line 2613 "src/parse-gram.c" /* yacc.c:1648 */
break;
case 90:
#line 619 "src/parse-gram.y" /* yacc.c:1648 */
{ grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
{ grammar_current_rule_predicate_append ((yyvsp[0].code), (yylsp[0])); }
#line 2619 "src/parse-gram.c" /* yacc.c:1648 */
break;

View File

@@ -1,4 +1,4 @@
/* A Bison parser, made by GNU Bison 3.0.4.38-1047-dirty. */
/* A Bison parser, made by GNU Bison 3.0.5.23-f58b-dirty. */
/* Bison interface for Yacc-like parsers in C

View File

@@ -614,9 +614,9 @@ rhs:
| rhs symbol named_ref.opt
{ grammar_current_rule_symbol_append ($2, @2, $3); }
| rhs "{...}" named_ref.opt
{ grammar_current_rule_action_append ($2, @2, $3, false); }
{ grammar_current_rule_action_append ($2, @2, $3); }
| rhs "%?{...}"
{ grammar_current_rule_action_append ($2, @2, NULL, true); }
{ grammar_current_rule_predicate_append ($2, @2); }
| rhs "%empty"
{ grammar_current_rule_empty_set (@2); }
| rhs "%prec" symbol

View File

@@ -522,18 +522,27 @@ grammar_current_rule_symbol_append (symbol *sym, location loc,
sym->content->status = needed;
}
/* Attach an ACTION to the current rule. */
void
grammar_current_rule_action_append (const char *action, location loc,
named_ref *name, bool is_predicate)
named_ref *name)
{
if (current_rule->action_props.code)
grammar_midrule_action ();
/* After all symbol declarations have been parsed, packgram invokes
code_props_translate_code. */
code_props_rule_action_init (&current_rule->action_props, action, loc,
current_rule, name, is_predicate);
current_rule, name,
/* is_predicate */ false);
}
void
grammar_current_rule_predicate_append (const char *pred, location loc)
{
if (current_rule->action_props.code)
grammar_midrule_action ();
code_props_rule_action_init (&current_rule->action_props, pred, loc,
current_rule, NULL,
/* is_predicate */ true);
}

View File

@@ -54,8 +54,11 @@ void grammar_current_rule_dprec_set (int dprec, location loc);
void grammar_current_rule_merge_set (uniqstr name, location loc);
void grammar_current_rule_symbol_append (symbol *sym, location loc,
named_ref *nref);
/* Attach an ACTION to the current rule. */
void grammar_current_rule_action_append (const char *action, location loc,
named_ref *nref, bool);
named_ref *nref);
/* Attach a PREDICATE to the current rule. */
void grammar_current_rule_predicate_append (const char *predicate, location loc);
void reader (void);
void free_merger_functions (void);