From: Akim Demaille Date: Sun, 22 Jul 2012 16:45:32 +0000 (+0200) Subject: parser: factor the handling of code_props X-Git-Tag: v2.7.90~387 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/4919604766e6e7714c6df0026b0f1c45632ed6f7?ds=inline parser: factor the handling of code_props * src/parse-gram.y: Now that %printer and %destructor are treated equally, let... (code_props_type): handle them. --- diff --git a/src/parse-gram.y b/src/parse-gram.y index efaa3d14..d84a7dd0 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -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_props_type; +%union {code_props_type code_type;}; +%printer { fprintf (stderr, "%s", code_props_type_string ($$)); } ; +code_props_type: + "%destructor" { $$ = destructor; } +| "%printer" { $$ = printer; } +; /*---------. | %union. |