[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/9] muscle: factor the field retrieval
From: |
Akim Demaille |
Subject: |
[PATCH 5/9] muscle: factor the field retrieval |
Date: |
Mon, 15 Apr 2013 10:58:24 +0200 |
* src/muscle-tab.c (muscle_percent_define_get_raw): New.
Use it where appropriate.
(location_decode): No longer fetch the value from the table,
take the value as argument.
---
src/muscle-tab.c | 30 +++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/src/muscle-tab.c b/src/muscle-tab.c
index bd75a7d..5e2275e 100644
--- a/src/muscle-tab.c
+++ b/src/muscle-tab.c
@@ -344,10 +344,9 @@ string_decode (char const *key)
/* Reverse of muscle_location_grow. */
static location
-location_decode (char const *key)
+location_decode (char const *value)
{
location loc;
- char const *value = muscle_find_const (key);
aver (value);
aver (*value == '[');
aver (*++value == '[');
@@ -557,6 +556,20 @@ muscle_percent_define_use (char const *variable)
muscle_insert (muscle_name (variable, "bison_variables"), "");
}
+/* The value of %define variable VARIABLE (corresponding to FIELD, if
+ defined). Do not register as used, but diagnose unset variables. */
+
+char const *
+muscle_percent_define_get_raw (char const *variable, char const *field)
+{
+ uniqstr name = muscle_name (variable, field);
+ char const *res = muscle_find_const (name);
+ if (!res)
+ complain (NULL, fatal, _("%s: undefined %%define variable %s"),
+ "muscle_percent_define_get_raw", quote (variable));
+ return res;
+}
+
char *
muscle_percent_define_get (char const *variable)
{
@@ -571,22 +584,13 @@ muscle_percent_define_get (char const *variable)
location
muscle_percent_define_get_loc (char const *variable)
{
- uniqstr loc_name = muscle_name (variable, "loc");
- if (!muscle_find_const (loc_name))
- complain (NULL, fatal, _("%s: undefined %%define variable %s"),
- "muscle_percent_define_get_loc", quote (variable));
- return location_decode (loc_name);
+ return location_decode (muscle_percent_define_get_raw (variable, "loc"));
}
char const *
muscle_percent_define_get_syncline (char const *variable)
{
- uniqstr syncline_name = muscle_name (variable, "syncline");
- char const *syncline = muscle_find_const (syncline_name);
- if (!syncline)
- complain (NULL, fatal, _("%s: undefined %%define variable %s"),
- "muscle_percent_define_get_syncline", quote (variable));
- return syncline;
+ return muscle_percent_define_get_raw (variable, "syncline");
}
bool
--
1.8.2
- [PATCH 0/9] {master} check the kind of %define variable values, Akim Demaille, 2013/04/15
- [PATCH 4/9] muscle: factor the handling of used variables, Akim Demaille, 2013/04/15
- [PATCH 1/9] muscle: factor conditionals on defined %define variables, Akim Demaille, 2013/04/15
- [PATCH 7/9] muscle: minor refactoring, Akim Demaille, 2013/04/15
- [PATCH 5/9] muscle: factor the field retrieval,
Akim Demaille <=
- [PATCH 8/9] muscle: let -D/-F support the three kinds of %define variable values, Akim Demaille, 2013/04/15
- [PATCH 2/9] muscle: factor the kind check in M4, Akim Demaille, 2013/04/15
- [PATCH 6/9] muscle: minor simplification which uncovers a missing warning, Akim Demaille, 2013/04/15
- [PATCH 9/9] muscle: enforce definition syntax for keyword variables, Akim Demaille, 2013/04/15
- [PATCH 3/9] muscle: factor the computation of variable names, Akim Demaille, 2013/04/15