bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]