bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 04/11] grammar: split %union to group together related aspects


From: Akim Demaille
Subject: [PATCH 04/11] grammar: split %union to group together related aspects
Date: Thu, 4 Apr 2013 17:36:21 +0200

* src/parse-gram.y (INT): Fuse the %type and %token declaration.
Move its %union right before its introduction.
(%union): Split in several %unions, right before their use.
---
 src/parse-gram.y | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/parse-gram.y b/src/parse-gram.y
index e4d36cc..50b90cf 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -101,23 +101,9 @@ static char const *char_name (char);
   boundary_set (&@$.end, current_file, 1, 1);
 }
 
-%union
-{
-  assoc assoc;
-  char *code;
-  char const *chars;
-  int integer;
-  named_ref *named_ref;
-  symbol *symbol;
-  symbol_list *list;
-  uniqstr uniqstr;
-  unsigned char character;
-};
-
 /* Define the tokens together with their human representation.  */
 %token GRAM_EOF 0 "end of file"
 %token STRING     "string"
-%token INT        "integer"
 
 %token PERCENT_TOKEN       "%token"
 %token PERCENT_NTERM       "%nterm"
@@ -182,11 +168,17 @@ static char const *char_name (char);
 %token TAG_ANY         "<*>"
 %token TAG_NONE        "<>"
 
+%union {unsigned char character;}
 %type <character> CHAR
 %printer { fputs (char_name ($$), yyo); } CHAR
 
 /* braceless is not to be used for rule or symbol actions, as it
    calls code_props_plain_init.  */
+%union
+{
+  char *code;
+  char const *chars;
+};
 %type <chars> STRING "%{...%}" EPILOGUE braceless content.opt
 %type <code> "{...}" "%?{...}"
 %printer { fputs (quotearg_style (c_quoting_style, $$), yyo); }
@@ -194,6 +186,7 @@ static char const *char_name (char);
 %printer { fprintf (yyo, "{\n%s\n}", $$); }
          braceless content.opt "{...}" "%{...%}" EPILOGUE
 
+%union {uniqstr uniqstr;}
 %type <uniqstr> BRACKETED_ID ID ID_COLON PERCENT_FLAG TAG tag variable
 %printer { fputs ($$, yyo); } <uniqstr>
 %printer { fprintf (yyo, "[%s]", $$); } BRACKETED_ID
@@ -201,15 +194,22 @@ static char const *char_name (char);
 %printer { fprintf (yyo, "%%%s", $$); } PERCENT_FLAG
 %printer { fprintf (yyo, "<%s>", $$); } TAG tag
 
-%type <integer> INT
+%union {int integer;};
+%token <integer> INT "integer"
 %printer { fprintf (yyo, "%d", $$); } <integer>
 
+%union {symbol *symbol;}
 %type <symbol> id id_colon string_as_id symbol symbol.prec
 %printer { fprintf (yyo, "%s", $$->tag); } <symbol>
 %printer { fprintf (yyo, "%s:", $$->tag); } id_colon
 
+%union {assoc assoc;};
 %type <assoc> precedence_declarator
+
+%union {symbol_list *list;}
 %type <list>  symbols.1 symbols.prec generic_symlist generic_symlist_item
+
+%union {named_ref *named_ref;}
 %type <named_ref> named_ref.opt
 
 /*---------.
-- 
1.8.2




reply via email to

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