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.
This commit is contained in:
Akim Demaille
2012-07-22 18:45:32 +02:00
parent a82cbb63b6
commit 4919604766

View File

@@ -30,6 +30,7 @@
#include "quotearg.h" #include "quotearg.h"
#include "reader.h" #include "reader.h"
#include "symlist.h" #include "symlist.h"
#include "symtab.h"
#include "scan-gram.h" #include "scan-gram.h"
#include "scan-code.h" #include "scan-code.h"
#include "xmemdup0.h" #include "xmemdup0.h"
@@ -386,20 +387,13 @@ grammar_declaration:
{ {
grammar_start_symbol_set ($2, @2); grammar_start_symbol_set ($2, @2);
} }
| "%destructor" "{...}" generic_symlist | code_props_type "{...}" generic_symlist
{ {
symbol_list *list; symbol_list *list;
for (list = $3; list; list = list->next) for (list = $3; list; list = list->next)
symbol_list_code_props_set (list, $1, @2, $2); symbol_list_code_props_set (list, $1, @2, $2);
symbol_list_free ($3); 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"
{ {
default_prec = true; 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. | | %union. |