+| "%destructor"
+ { current_braced_code = destructor_braced_code; }
+ BRACED_CODE symbols.1
+ {
+ symbol_list_t *list;
+ for (list = $4; list; list = list->next)
+ symbol_destructor_set (list->sym, $3, @3);
+ symbol_list_free ($4);
+ current_braced_code = action_braced_code;
+ }
+| "%printer"
+ { current_braced_code = printer_braced_code; }
+ BRACED_CODE symbols.1
+ {
+ symbol_list_t *list;
+ for (list = $4; list; list = list->next)
+ symbol_printer_set (list->sym, $3, list->location);
+ symbol_list_free ($4);
+ current_braced_code = action_braced_code;
+ }
+;
+
+symbol_declaration:
+ "%nterm" { current_class = nterm_sym; } symbol_defs.1