+
+/* From the parser. */
+extern int gram_debug;
+int gram_parse (void);
+
+/* The sort of braced code we are in. */
+typedef enum
+ {
+ action_braced_code,
+ destructor_braced_code,
+ printer_braced_code
+ } braced_code;
+/* FIXME: This is really a dirty hack which demonstrates that we
+ should probably not try to parse the actions now. */
+extern braced_code current_braced_code;
+
+
+/* From reader.c. */
+void grammar_start_symbol_set (symbol *s, location loc);
+void prologue_augment (const char *prologue, location loc);
+void epilogue_augment (const char *epilogue, location loc);
+void grammar_symbol_append (symbol *s, location loc);
+void grammar_rule_begin (symbol *lhs, location loc);
+void grammar_rule_end (location loc);
+void grammar_midrule_action (void);
+void grammar_current_rule_prec_set (symbol *precsym, location loc);
+void grammar_current_rule_dprec_set (int dprec, location loc);
+void grammar_current_rule_merge_set (uniqstr name, location loc);
+
+void grammar_current_rule_symbol_append (symbol *sym, location loc);
+void grammar_current_rule_action_append (const char *action, location loc);
+extern symbol_list *current_rule;
+void reader (void);
+void free_merger_functions (void);
+
+extern merger_list *merge_functions;
+
+extern int typed;