mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Have Bison grammars parsed by a Bison grammar.
* src/reader.c, src/reader.h (prologue_augment): New. * src/reader.c (copy_definition): Remove. * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment) (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action) (grammar_current_rule_prec_set, grammar_current_rule_check) (grammar_current_rule_symbol_append) (grammar_current_rule_action_append): Export. * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_ (symbol_list_action_append): Remove. Hook the routines from reader. * src/scan-gram.l: In INITIAL, characters and strings are tokens. * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now. * src/reader.c (read_declarations): Remove, unused. * src/parse-gram.y: Handle the epilogue. * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as... (grammar_start_symbol_set): this. * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet. * src/reader.c (readgram): Remove, unused. (reader): Adjust to insert eoftoken and axiom where appropriate. * src/reader.c (copy_dollar): Replace with... * src/scan-gram.h (handle_dollar): this. * src/parse-gram.y: Remove `%thong'. * src/reader.c (copy_at): Replace with... * src/scan-gram.h (handle_at): this. * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at): New. * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the time being. * src/reader.h, src/reader.c (grammar_rule_end): New. * src/parse.y (current_type, current_class): New. Implement `%nterm', `%token' support. Merge `%term' into `%token'. (string_as_id): New. * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the type name. * src/parse-gram.y: Be sure to handle properly the beginning of rules. * src/parse-gram.y: Handle %type. * src/reader.c (grammar_rule_end): Call grammar_current_rule_check. * src/parse-gram.y: More directives support. * src/options.c: No longer handle source directives. * src/parse-gram.y: Fix %output. * src/parse-gram.y: Handle %union. Use the prologue locations. * src/reader.c (parse_union_decl): Remove. * src/reader.h, src/reader.c (epilogue_set): New. * src/parse-gram.y: Use it. * data/bison.simple, data/bison.c++: b4_stype is now either not defined, then default to int, or to the contents of %union, without `union' itself. Adjust. * src/muscle_tab.c (muscle_init): Don't predefine `stype'. * src/output.c (actions_output): Don't output braces, as they are already handled by the scanner. * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of characters to themselves. * tests/reduce.at (Reduced Automaton): End the grammars with %% so that the epilogue has a proper #line. * src/parse-gram.y: Handle precedence/associativity. * src/symtab.c (symbol_precedence_set): Requires the symbol to be a terminal. * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters. * tests/calc.at: Do not use `%token "foo"' as it makes not sense at all to define terminals that cannot be emitted. * src/scan-gram.l: Escape M4 characters. * src/scan-gram.l: Working properly with escapes in user strings/characters. * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR) (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING' grammar. Use more modest sizes, as for the time being the parser does not release memory, and therefore the process swallows a huge amount of memory. * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the stricter %token grammar. * src/symtab.h (associativity): Add `undef_assoc'. (symbol_precedence_set): Do nothing when passed an undef_assoc. * src/symtab.c (symbol_check_alias_consistence): Adjust. * tests/regression.at (Invalid %directive): Remove, as it is now meaningless. (Invalid inputs): Adjust to the new error messages. (Token definitions): The new grammar doesn't allow too many eccentricities. * src/lex.h, src/lex.c: Remove. * src/reader.c (lastprec, skip_to_char, read_signed_integer) (copy_character, copy_string2, copy_string, copy_identifier) (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl) (parse_muscle_decl, parse_dquoted_param, parse_skel_decl) (parse_action): Remove. * po/POTFILES.in: Adjust.
This commit is contained in:
124
src/parse-gram.h
Normal file
124
src/parse-gram.h
Normal file
@@ -0,0 +1,124 @@
|
||||
#ifndef BISON_PARSE_GRAM_H
|
||||
# define BISON_PARSE_GRAM_H
|
||||
|
||||
/* Tokens. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# if defined (__STDC__) || defined (__cplusplus)
|
||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||
know about them. */
|
||||
enum yytokentype {
|
||||
GRAM_EOF = 0,
|
||||
STRING = 258,
|
||||
CHARACTER = 259,
|
||||
INT = 260,
|
||||
PERCENT_TOKEN = 261,
|
||||
PERCENT_NTERM = 262,
|
||||
PERCENT_TYPE = 263,
|
||||
PERCENT_UNION = 264,
|
||||
PERCENT_EXPECT = 265,
|
||||
PERCENT_START = 266,
|
||||
PERCENT_LEFT = 267,
|
||||
PERCENT_RIGHT = 268,
|
||||
PERCENT_NONASSOC = 269,
|
||||
PERCENT_PREC = 270,
|
||||
PERCENT_VERBOSE = 271,
|
||||
PERCENT_ERROR_VERBOSE = 272,
|
||||
PERCENT_OUTPUT = 273,
|
||||
PERCENT_FILE_PREFIX = 274,
|
||||
PERCENT_NAME_PREFIX = 275,
|
||||
PERCENT_DEFINE = 276,
|
||||
PERCENT_PURE_PARSER = 277,
|
||||
PERCENT_DEFINES = 278,
|
||||
PERCENT_YACC = 279,
|
||||
PERCENT_DEBUG = 280,
|
||||
PERCENT_LOCATIONS = 281,
|
||||
PERCENT_NO_LINES = 282,
|
||||
PERCENT_SKELETON = 283,
|
||||
PERCENT_TOKEN_TABLE = 284,
|
||||
TYPE = 285,
|
||||
EQUAL = 286,
|
||||
SEMICOLON = 287,
|
||||
COLON = 288,
|
||||
PIPE = 289,
|
||||
ID = 290,
|
||||
PERCENT_PERCENT = 291,
|
||||
PROLOGUE = 292,
|
||||
EPILOGUE = 293,
|
||||
BRACED_CODE = 294
|
||||
};
|
||||
# endif
|
||||
/* POSIX requires `int' for tokens in interfaces. */
|
||||
# define YYTOKENTYPE int
|
||||
#endif /* !YYTOKENTYPE */
|
||||
#define GRAM_EOF 0
|
||||
#define STRING 258
|
||||
#define CHARACTER 259
|
||||
#define INT 260
|
||||
#define PERCENT_TOKEN 261
|
||||
#define PERCENT_NTERM 262
|
||||
#define PERCENT_TYPE 263
|
||||
#define PERCENT_UNION 264
|
||||
#define PERCENT_EXPECT 265
|
||||
#define PERCENT_START 266
|
||||
#define PERCENT_LEFT 267
|
||||
#define PERCENT_RIGHT 268
|
||||
#define PERCENT_NONASSOC 269
|
||||
#define PERCENT_PREC 270
|
||||
#define PERCENT_VERBOSE 271
|
||||
#define PERCENT_ERROR_VERBOSE 272
|
||||
#define PERCENT_OUTPUT 273
|
||||
#define PERCENT_FILE_PREFIX 274
|
||||
#define PERCENT_NAME_PREFIX 275
|
||||
#define PERCENT_DEFINE 276
|
||||
#define PERCENT_PURE_PARSER 277
|
||||
#define PERCENT_DEFINES 278
|
||||
#define PERCENT_YACC 279
|
||||
#define PERCENT_DEBUG 280
|
||||
#define PERCENT_LOCATIONS 281
|
||||
#define PERCENT_NO_LINES 282
|
||||
#define PERCENT_SKELETON 283
|
||||
#define PERCENT_TOKEN_TABLE 284
|
||||
#define TYPE 285
|
||||
#define EQUAL 286
|
||||
#define SEMICOLON 287
|
||||
#define COLON 288
|
||||
#define PIPE 289
|
||||
#define ID 290
|
||||
#define PERCENT_PERCENT 291
|
||||
#define PROLOGUE 292
|
||||
#define EPILOGUE 293
|
||||
#define BRACED_CODE 294
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef YYSTYPE
|
||||
#line 70 "parse-gram.y"
|
||||
typedef union
|
||||
{
|
||||
symbol_t *symbol;
|
||||
int integer;
|
||||
char *string;
|
||||
associativity assoc;
|
||||
}
|
||||
yystype;
|
||||
# define YYSTYPE yystype
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifndef YYLTYPE
|
||||
typedef struct yyltype
|
||||
{
|
||||
int first_line;
|
||||
int first_column;
|
||||
int last_line;
|
||||
int last_column;
|
||||
} yyltype;
|
||||
# define YYLTYPE yyltype
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif /* not BISON_PARSE_GRAM_H */
|
||||
|
||||
Reference in New Issue
Block a user