+ { "token", NULL, tok_token },
+ { "term", NULL, tok_token },
+ { "nterm", NULL, tok_nterm },
+ { "type", NULL, tok_type },
+ { "guard", NULL, tok_guard },
+ { "union", NULL, tok_union },
+ { "expect", NULL, tok_expect },
+ { "thong", NULL, tok_thong },
+ { "start", NULL, tok_start },
+ { "left", NULL, tok_left },
+ { "right", NULL, tok_right },
+ { "nonassoc", NULL, tok_nonassoc },
+ { "binary", NULL, tok_nonassoc },
+ { "prec", NULL, tok_prec },
+ { "locations", &locations_flag, tok_intopt }, /* -l */
+ { "no-lines", &no_lines_flag, tok_intopt }, /* -l */
+ { "raw", NULL, tok_obsolete }, /* -r */
+ { "token-table", &token_table_flag, tok_intopt }, /* -k */
+ { "yacc", &yacc_flag, tok_intopt }, /* -y */
+ { "fixed-output-files",&yacc_flag, tok_intopt }, /* -y */
+ { "defines", &defines_flag, tok_intopt }, /* -d */
+ { "no-parser", &no_parser_flag, tok_intopt }, /* -n */
+ { "graph", &graph_flag, tok_intopt }, /* -g */
+
+ /* FIXME: semantic parsers which will output an `include' of an
+ output file: be sure that the name included is indeed the name of
+ the output file. */
+ { "output", &spec_outfile, tok_stropt }, /* -o */
+ { "file-prefix", &spec_file_prefix, tok_stropt }, /* -b */
+ { "name-prefix", &spec_name_prefix, tok_stropt }, /* -p */
+
+ { "verbose", &verbose_flag, tok_intopt }, /* -v */
+ { "debug", &debug_flag, tok_intopt }, /* -t */
+ { "semantic-parser", &semantic_parser, tok_intopt },
+ { "pure-parser", &pure_parser, tok_intopt },
+
+ { NULL, NULL, tok_illegal}
+};
+
+/* Parse a token which starts with %.
+ Assumes the % has already been read and discarded. */
+
+token_t
+parse_percent_token (void)
+{
+ struct percent_table_struct *tx = NULL;
+ const char *arg = NULL;
+ /* Where the ARG was found in token_buffer. */
+ size_t arg_offset = 0;