]> git.saurik.com Git - bison.git/commitdiff
parser: factor the handling of code_props
authorAkim Demaille <akim@lrde.epita.fr>
Sun, 22 Jul 2012 16:45:32 +0000 (18:45 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Sun, 22 Jul 2012 19:16:56 +0000 (21:16 +0200)
* src/parse-gram.y: Now that %printer and %destructor are treated
equally, let...
(code_props_type): handle them.

src/parse-gram.y

index efaa3d1457602fd36e91b428af4bc8fcb026fb25..d84a7dd0b1f34ef904f676e402bdd1e56040409b 100644 (file)
@@ -30,6 +30,7 @@
 #include "quotearg.h"
 #include "reader.h"
 #include "symlist.h"
+#include "symtab.h"
 #include "scan-gram.h"
 #include "scan-code.h"
 #include "xmemdup0.h"
@@ -386,20 +387,13 @@ grammar_declaration:
     {
       grammar_start_symbol_set ($2, @2);
     }
-| "%destructor" "{...}" generic_symlist
+| code_props_type "{...}" generic_symlist
     {
       symbol_list *list;
       for (list = $3; list; list = list->next)
         symbol_list_code_props_set (list, $1, @2, $2);
       symbol_list_free ($3);
     }
-| "%printer" "{...}" generic_symlist
-    {
-      symbol_list *list;
-      for (list = $3; list; list = list->next)
-        symbol_list_code_props_set (list, printer, @2, $2);
-      symbol_list_free ($3);
-    }
 | "%default-prec"
     {
       default_prec = true;
@@ -422,6 +416,13 @@ grammar_declaration:
     }
 ;
 
+%type <code_type> code_props_type;
+%union {code_props_type code_type;};
+%printer { fprintf (stderr, "%s", code_props_type_string ($$)); } <code_type>;
+code_props_type:
+  "%destructor"  { $$ = destructor; }
+| "%printer"     { $$ = printer; }
+;
 
 /*---------.
 | %union.  |