[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
- [PATCH 00/11] support "%define variable {value}", Akim Demaille, 2013/04/04
- [PATCH 05/11] grammar: style changes, Akim Demaille, 2013/04/04
- [PATCH 07/11] style: fix comments, Akim Demaille, 2013/04/04
- [PATCH 11/11] api.namespace: demonstrate and use {...} values instead of "..." values, Akim Demaille, 2013/04/04
- [PATCH 04/11] grammar: split %union to group together related aspects,
Akim Demaille <=
- [PATCH 02/11] style: comment changes, Akim Demaille, 2013/04/04
- [PATCH 08/11] grammar: record the kind of %define variable values, Akim Demaille, 2013/04/04
- [PATCH 01/11] muscle: minor refactoring, Akim Demaille, 2013/04/04
- [PATCH 10/11] grammar: do not add a \n at the end of blocks of code, Akim Demaille, 2013/04/04
- [PATCH 03/11] muscle: refactor, Akim Demaille, 2013/04/04
- [PATCH 09/11] regen, Akim Demaille, 2013/04/04
- [PATCH 06/11] regen, Akim Demaille, 2013/04/04
- Re: [PATCH 00/11] support "%define variable {value}", Joel E. Denny, 2013/04/07
- Re: [PATCH 00/11] support "%define variable {value}", Akim Demaille, 2013/04/09