-/* Read in the grammar specification and record it in the format
- described in gram.h. All guards are copied into the FGUARD file
- and all actions into FACTION, in each case forming the body of a C
- function (YYGUARD or YYACTION) which contains a switch statement to
- decide which guard or action to execute. */
+# include "location.h"
+# include "symlist.h"
+
+# include "parse-gram.h"
+
+typedef struct merger_list
+{
+ struct merger_list* next;
+ uniqstr name;
+ uniqstr type;
+} merger_list;
+
+/* From the scanner. */
+extern FILE *gram_in;
+extern int gram__flex_debug;
+extern boundary scanner_cursor;
+extern int max_left_semantic_context;
+void scanner_initialize (void);
+void scanner_free (void);
+void scanner_last_string_free (void);
+
+/* These are declared by the scanner, but not used. We put them here
+ to pacify "make syntax-check". */
+extern FILE *gram_out;
+extern int gram_lineno;
+
+# define YY_DECL int gram_lex (YYSTYPE *val, location *loc)
+YY_DECL;
+
+
+/* From the parser. */
+extern int gram_debug;
+int gram_parse (void);
+char const *token_name (int);
+