Commit Graph

187 Commits

Author SHA1 Message Date
Akim Demaille
4b3d3a8e46 Stop storing rules from 1 to nrules + 1.
* src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c
* src/nullable.c, src/output.c, src/print.c, src/reader.c
* src/reduce.c: Allocate and free from &rules[0], not &rules[1].
Iterate from 0 to nrules.
Use rule_number_as_item_number and item_number_as_rule_number.
Adjust to `derive' now containing possibly 0.
* src/gram.h (rule_number_as_item_number, item_number_as_rule_number):
Handle the `- 1' part in rule numbers from/to item numbers.
* src/conflicts.c (log_resolution): Fix the message which reversed
shift and reduce.
* src/output.c (action_row): Initialize default_rule to -1.
(token_actions): Adjust.
* tests/sets.at (Nullable, Firsts): Fix the previously bogus
expected output.
* tests/conflicts.at (Resolved SR Conflicts): Likewise.
2002-07-25 21:21:02 +00:00
Akim Demaille
12b0043a6d * src/gram.h (TIEM_NUMBER_MAX): New.
(item_number_of_rule_number, rule_number_of_item_number): Rename
as...
(rule_number_as_item_number, item_number_as_rule_number): these.
Adjust dependencies.
* src/output.c (vector_number_t, VECTOR_NUMBER_MAX)
(VECTOR_NUMBER_MIN, state_number_to_vector_number)
(symbol_number_to_vector_number): New.
(order): Of vector_number_t* type.
(base_t, BASE_MAX, BASE_MIN): New.
(froms, tos, width, pos, check): Of base_t type.
(action_number_t, ACTION_MIN, ACTION_MAX): New.
(actrow): Of action_number_t type.
(conflrow): Of unsigned int type.
(table_ninf, base_ninf): New.
(GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value.
(muscle_insert_int_table, muscle_insert_base_table)
(muscle_insert_rule_number_table): New.
(prepare_tokens): Output `toknum' as int_table.
(action_row): Returns a rule_number_t.
Use ACTION_MIN, not SHRT_MIN.
(token_actions): yydefact is rule_number_t*.
(table_ninf_remap): New.
(pack_table): Use it for `base' and `table'.
* data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove,
replaced with...
(YYPACT_NINF, YYTABLE_NINF): these.
(yypact, yytable): Compute their types instead of hard-coded
`short'.
* tests/regression.at (Web2c Actions): Adjust.
2002-07-25 17:30:44 +00:00
Akim Demaille
7db2ed2d82 * src/output.c (froms, tos): Are state_number_t.
(save_column): sp, sp1, and sp2 are state_number_t.
(prepare): Rename `final' as `final_state_number', `nnts' as
`nterms_number', `nrules' as `rules_number', `nstates' as
`states_number', and `ntokens' as `tokens_number'.  Remove `nsym',
unused.
* data/yacc.c, data/glr.c, data/lalr1.cc: Adjust.
* data/lalr1.cc (nsym_): Remove, unused.
2002-07-03 12:51:30 +00:00
Akim Demaille
536545f3a4 * src/output.c (prepare_actions): Free tally' and width'.
(prepare_actions): Allocate and free `order'.
* src/symtab.c (symbols_free): Free `symbols'.
* src/scan-gram.l (scanner_free): Clear Flex's scanners memory.
* src/output.c (m4_invoke): Move to...
* src/scan-skel.l: here.
(<<EOF>>): Close yyout, and free its name.
2002-07-03 06:52:02 +00:00
Akim Demaille
8b752b00fd Fix some memory leaks, and fix a bug: state 0 was examined twice.
* src/LR0.c (new_state): Merge into...
(state_list_append): this.
(new_states): Merge into...
(generate_states): here.
(set_states): Don't ensure a proper `errs' state member here, do it...
* src/conflicts.c (conflicts_solve): here.
* src/state.h, src/state.c: Comment changes.
(state_t): Rename member `shifts' as `transitions'.
Adjust all dependencies.
(errs_new): For consistency, also take the values as argument.
(errs_dup): Remove.
(state_errs_set): New.
(state_reductions_set, state_transitions_set): Assert that no
previous value was assigned.
(state_free): New.
(states_free): Use it.
* src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as
temporary storage: use `errs' and `nerrs' as elsewhere.
(set_conflicts): Allocate and free this `errs'.
2002-07-03 06:51:43 +00:00
Akim Demaille
613f5e1a89 * lib/libiberty.h: New.
* lib: Update the bitset implementation from upstream.
* src/closure.c, src/lalr.c, src/output.c, src/print_graph.c,
* src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE.
* src/main.c: Adjust bitset stats calls.
2002-07-02 13:51:27 +00:00
Akim Demaille
97650f4efc We spend a lot of time in quotearg, in particular when --verbose.
* src/symtab.c (symbol_get): Store a quoted version of the key.
(symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove.
Adjust all callers.
2002-06-30 17:34:52 +00:00
Akim Demaille
d257636504 * src/state.h (reductions_t): Rename member `nreds' as num.
(errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'.
* src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types.
2002-06-30 17:34:31 +00:00
Akim Demaille
ccaf65bc63 * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT)
(SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED)
(shifts_to): Rename as...
(transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION)
(TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE)
(TRANSITION_IS_DISABLED, transitions_to): these.
2002-06-30 17:33:37 +00:00
Akim Demaille
53d4308dbb * src/output.c (action_row): Let default_rule be always a rule
number.
2002-06-30 17:32:35 +00:00
Akim Demaille
574fb2d568 * src/closure.c (print_firsts, print_fderives, closure):
Use BITSET_EXECUTE.
* src/lalr.c (lookaheads_print): Likewise.
* src/state.c (state_rule_lookaheads_print): Likewise.
* src/print_graph.c (print_core): Likewise.
* src/print.c (print_reductions): Likewise.
* src/output.c (action_row): Likewise.
Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL.
2002-06-30 17:32:17 +00:00
Akim Demaille
9222837b27 * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
(item_number_of_rule_number, rule_number_of_item_number): New.
* src/LR0.c, src/closure.c, src/derives.c, src/derives.h,
* src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h:
Propagate their use.
Much remains to be done, in particular wrt `shorts' from types.h.
2002-06-30 17:31:19 +00:00
Akim Demaille
8a731ca829 * src/LR0.c (save_reductions): Remove, replaced by...
* src/state.h, src/state.c (state_reductions_set): New.
(reductions, errs): Rename as...
(reductions_t, errs_t): these.
Adjust all dependencies.
2002-06-30 17:30:46 +00:00
Akim Demaille
32e1e0a486 * src/LR0.c (state_list_t, state_list_append): New.
(first_state, last_state): Now symbol_list_t.
(this_state): Remove.
(new_itemsets, append_states, save_reductions): Take a state_t as
argument.
(set_states, generate_states): Adjust.
(save_shifts): Remove, replaced by...
* src/state.h, src/state.c (state_shifts_set): New.
(shifts): Rename as...
(shifts_t): this.
Adjust all dependencies.
* src/state.h (state_t): Remove the `next' member.
2002-06-30 17:30:29 +00:00
Akim Demaille
c7ca99d4b0 Use hash.h for the state hash table.
* src/LR0.c (STATE_HASH_SIZE, state_hash): Remove.
(allocate_storage): Use state_hash_new.
(free_storage): Use state_hash_free.
(new_state, get_state): Adjust.
* src/lalr.h, src/lalr.c (states): Move to...
* src/states.h (state_t): Remove the `link' member, no longer
used.
* src/states.h, src/states.c: here.
(state_hash_new, state_hash_free, state_hash_lookup)
(state_hash_insert, states_free): New.
* src/states.c (state_table, state_compare, state_hash): New.
* src/output.c (output_actions): Do not free states now, since we
still need to know the final_state number in `prepare', called
afterwards.  Do it...
* src/main.c (main): here: call states_free after `output'.
2002-06-30 17:29:36 +00:00
Akim Demaille
d57650a5ff * src/state.h (state_number_t, STATE_NUMBER_MAX): New.
* src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h,
* src/output.c, src/print.c, src/print_graph.c: Propagate.
* src/LR0.h, src/LR0.h (final_state): Is a state_t*.
2002-06-30 17:27:34 +00:00
Akim Demaille
4144248075 * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for
unused variables.
* src/output.c (merger_output): static.
2002-06-28 09:05:11 +00:00
Akim Demaille
e0e5bf84b0 * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../.
* src/conflicts.c (conflicts_total_count): `i' is unsigned, to
pacify GCC.
* src/output.c (save_row): Initialize all the variables to pacify GCC.
(merger_output): static.
2002-06-28 08:41:45 +00:00
Paul Hilfinger
676385e29c Initial check-in introducing experimental GLR parsing. See entry in
ChangeLog dated 2002-06-27 from Paul Hilfinger for details.
2002-06-28 02:26:44 +00:00
Akim Demaille
60491a948b * data/bison.simple, data/bison.c++: Rename as...
* data/yacc.c, data/lalr1.cc: these.
* doc/bison.texinfo (Environment Variables): Remove.
2002-06-27 12:08:20 +00:00
Akim Demaille
366eea36d3 * src/symtab.h, src/symtab.c (symbol_t): printer and
printer_location are new members.
(symbol_printer_set): New.
* src/parse-gram.y (PERCENT_PRINTER): New token.
Handle its associated rule.
* src/scan-gram.l: Adjust.
(handle_destructor_at, handle_destructor_dollar): Rename as...
(handle_symbol_code_at, handle_symbol_code_dollar): these.
* src/output.c (symbol_printers_output): New.
(output_skeleton): Call it.
* data/bison.simple (yysymprint): New.  Cannot be named yyprint
since there are already many grammar files with a user `yyprint'.
Replace the calls to YYPRINT to calls to yysymprint.
* tests/calc.at: Adjust.
* tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was
taking advantage of parser very internal details (stack size!).
2002-06-20 09:08:37 +00:00
Akim Demaille
24c0aad7e7 * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a
new member.
(symbol_destructor_set): Adjust.
* src/output.c (symbol_destructors_output): Output the destructor
locations.
Output the symbol name.
* data/bison.simple (b4_symbol_destructor): Adjust.
2002-06-18 09:55:35 +00:00
Akim Demaille
9280d3ef89 * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
arguments is really empty, not only equal to `[]'.
* src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new
member.
(symbol_destructor_set): New.
* src/output.c (symbol_destructors_output): New.
* src/reader.h (brace_code_t, current_braced_code): New.
* src/scan-gram.l (BRACED_CODE): Use it to branch on...
(handle_dollar): Rename as...
(handle_action_dollar): this.
(handle_destructor_dollar): New.
* src/parse-gram.y (PERCENT_DESTRUCTOR): New.
(grammar_declaration): Use it.
* data/bison.simple (yystos): Is always defined.
(yydestructor): New.
* tests/actions.at (Destructors): New.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
2002-06-17 08:43:12 +00:00
Akim Demaille
dafdc66ff0 * src/symlist.h, src/symlist.c (symbol_list_length): New.
* src/scan-gram.l (handle_dollar, handle_at): Compute the
rule_length only when needed.
* src/output.c (actions_output, token_definitions_output): Output
the full M4 block.
* src/symtab.c: Don't access directly to the symbol tag, use
symbol_tag_get.
* src/parse-gram.y: Use symbol_list_free.
2002-06-17 07:05:12 +00:00
Akim Demaille
c026349221 * src/state.h (state_t): Replace the `lookaheadsp' member, a
short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**).
Adjust all dependencies.
* src/lalr.c (initialize_lookaheads): Split into...
(states_lookaheads_count, states_lookaheads_initialize): these.
(lalr): Adjust.
2002-06-15 18:23:50 +00:00
Akim Demaille
6b98e4b563 Copy BYacc's nice way to report the grammar.
* src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print):
New.
Don't print the rules' location, it is confusing and useless.
(rule_print): Use grammar_rhs_print.
* src/print.c (print_grammar): Use grammar_rules_print.
2002-06-15 18:23:12 +00:00
Akim Demaille
8efe435c05 * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New.
(input): Don't try to initialize yylloc here, do it in the
scanner.
* src/scan-gram.l (YY_USER_INIT): Initialize yylloc.
* src/gram.h (rule_t): Change line and action_line into location
and action_location, of location_t type.
Adjust all dependencies.
* src/location.h, src/location.c (empty_location): New.
* src/reader.h, src/reader.c (grammar_start_symbol_set)
(grammar_symbol_append, grammar_rule_begin, grammar_rule_end)
(grammar_current_rule_symbol_append)
(grammar_current_rule_action_append): Expect a location as argument.
* src/reader.c (grammar_midrule_action): Adjust to attach an
action's location as dummy symbol location.
* src/symtab.h, src/symtab.c (startsymbol_location): New.
* tests/regression.at (Web2c Report, Rule Line Numbers): Adjust
the line numbers.
2002-06-15 18:21:11 +00:00
Akim Demaille
f958596b44 * src/output.c (m4_invoke): Extracted from...
(output_skeleton): here.
Free tempfile.
2002-06-14 17:36:58 +00:00
Akim Demaille
592e8d4d01 * src/files.c (action_obstack): Remove, unused.
(output_obstack): Remove it, and all its dependencies, as it is no
longer needed.
* src/reader.c (epilogue_set): Build the epilogue in the
muscle_obstack.
* src/output.h, src/output.c (muscle_obstack): Move to...
* src/muscle_tab.h, src/muscle_tab.h: here.
(muscle_init): Initialize muscle_obstack.
(muscle_free): New.
* src/main.c (main): Call it.
2002-06-14 17:36:24 +00:00
Akim Demaille
e9955c8373 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.
2002-06-11 20:16:05 +00:00
Akim Demaille
670ddffd5b * src/output.c (output_skeleton): Be sure to allocate enough room
for `/' _and_ for `0' in full_skeleton.
2002-05-28 10:02:36 +00:00
Paul Hilfinger
7067cb3620 * src/output.c (output_skeleton): Put an explicit path in front of
the skeleton file name, rather than relying on the -I directory,
to partially alleviate effects of having a skeleton file lying around
in the current directory.
2002-05-27 22:33:54 +00:00
Akim Demaille
a49aecd528 * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
* src/nullable.c, src/output.c, src/print.c, src/print_graph.c,
* src/reader.c, src/reduce.c, src/state.h, src/symtab.h
(token_number_t, item_number_as_token_number)
(token_number_as_item_number, muscle_insert_token_number_table):
Rename as...
(symbol_number_t, item_number_as_symbol_number)
(symbol_number_as_item_number, muscle_insert_symbol_number_table):
these, since it is more appropriate.
2002-05-26 18:39:05 +00:00
Akim Demaille
0c2d3f4cba Kill GCC warnings.
* src/reduce.c (nonterminals_reduce): Don't loop over RITEM: loop
over the RHS of each rule.
* src/gram.h, src/gram.c (nritems): Is `unsigned int', not int.
* src/state.h (state_t): Member `nitems' is unsigned short.
* src/LR0.c (get_state): Adjust.
* src/reader.c (packgram): Likewise.
* src/output.c (GENERATE_MUSCLE_INSERT_TABLE): `max' is of type
`Type'.
(muscle_insert_int_table): Remove, unused.
(prepare_rules): Remove `max'.
2002-05-07 08:07:32 +00:00
Akim Demaille
5372019fab * src/output.c (GENERATE_OUTPUT_TABLE): Replace with...
(GENERATE_MUSCLE_INSERT_TABLE): this.
(output_int_table, output_unsigned_int_table, output_short_table)
(output_token_number_table, output_item_number_table): Replace with...
(muscle_insert_int_table, muscle_insert_unsigned_int_table)
(muscle_insert_short_table, muscle_insert_token_number_table)
(muscle_insert_item_number_table): these.
Adjust all callers.
(prepare_tokens): Don't free `translations', since...
* src/reader.h, src/reader.c (grammar_free): do it.
Move to...
* src/gram.h, src/gram.c (grammar_free): here.
* data/bison.simple, data/bison.c++: b4_token_number_max is now
b4_translate_max.
2002-05-05 11:56:27 +00:00
Akim Demaille
5df5f6d538 * src/output.c (output_unsigned_int_table): New.
(prepare_rules): `i' is unsigned.
`prhs', `rline', `r2' are unsigned int.
Rename muscle `rhs_number_max' as `rhs_max'.
Output muscles `prhs_max', `rline_max', and `r2_max'.
Free rline and r1.
* data/bison.simple, data/bison.c++: Adjust to use these muscles
to compute types instead of constant types.
* tests/regression.at (Web2c Actions): Adjust.
2002-05-05 11:56:06 +00:00
Akim Demaille
b87f8b2159 * src/symtab.h (SALIAS, SUNDEF): Rename as...
(USER_NUMBER_ALIAS, USER_NUMBER_UNDEFINED): these.
Adjust dependencies.
* src/output.c (token_definitions_output): Be sure not to output a
`#define 'a'' when fed with `%token 'a' "a"'.
* tests/regression.at (Token definitions): New.
2002-05-04 08:48:04 +00:00
Akim Demaille
83ccf991a6 * data/bison.simple (b4_token_enum): New.
(b4_token_defines): Use it to output tokens both as #define and
enums.
Suggested by Paul Eggert.
* src/output.c (token_definitions_output): Don't output spurious
white spaces.
2002-05-03 08:42:48 +00:00
Akim Demaille
fdbcd8e289 Remove the so called hairy (semantic) parsers.
* src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove.
* src/gram.h, src/gram.c (semantic_parser): Remove.
(rule_t): Remove the guard and guard_line members.
* src/lex.h (token_t): remove tok_guard.
* src/options.c (option_table): Remove %guard and %semantic_parser
support.
* src/output.c, src/output.h (guards_output): Remove.
(prepare): Adjust.
(token_definitions_output): Don't output the `T'
tokens (???).
(output_skeleton): Don't output the guards.
* src/files.c, src/files.c (attrsfile): Remove.
* src/reader.c (symbol_list): Remove the guard and guard_line
members.
Adjust dependencies.
(parse_guard): Remove.
* data/bison.hairy: Remove.
* doc/bison.texinfo (Environment Variables): Remove occurrences of
BISON_HAIRY.
2002-05-02 15:06:46 +00:00
Robert Anisko
0dd1580afc * tests/calc.at: Exercise prologue splitting.
* data/bison.simple, data/bison.c++: Use `b4_pre_prologue' and
`b4_post_prologue' instead of `b4_prologue'.
* src/output.c (prepare): Add the `pre_prologue' and `post_prologue'
muscles.
(output): Free pre_prologue_obstack and post_prologue_obstack.
* src/files.h, src/files.c (attrs_obstack): Remove.
(pre_prologue_obstack, post_prologue_obstack): New.
* src/reader.c (copy_definition): Add a parameter to specify the
obstack to fill, instead of using attrs_obstack unconditionally.
(read_declarations): Pass pre_prologue_obstack to copy_definition if
`%union' has not yet been seen, pass post_prologue_obstack otherwise.
2002-04-24 16:22:57 +00:00
Akim Demaille
133c20e252 * src/output.c (table_size, table_grow): New.
(MAXTABLE): Remove, replace uses with table_size.
(pack_vector): Instead of dying when the table is too big, grow it.
2002-04-22 08:22:39 +00:00
Akim Demaille
5fbb0954b8 Propagate more token_number_t.
* src/gram.h (token_number_as_item_number)
(item_number_as_token_number): New.
* src/output.c (GENERATE_OUTPUT_TABLE): New.
Use it to create output_item_number_table and
output_token_number_table.
* src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c,
* src/lex.c, src/nullable.c, src/output.c, src/print.c,
* src/print_graph.c, src/reader.c, src/reduce.c, src/state.h,
* src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
2002-04-22 08:21:55 +00:00
Akim Demaille
4f940944da * src/output.h, src/output.c (get_lines_number): Remove. 2002-04-22 08:21:19 +00:00
Akim Demaille
007a50a493 * src/gram.h, src/gram.c (error_token_number): Remove, use
errtoken->number.
* src/reader.c (reader): Don't specify the user token number (2)
for $undefined, as it uselessly prevents using it.
* src/gram.h (token_number_t): Move to...
* src/symtab.h: here.
(state_t.number): Is a token_number_t.
* src/print.c, src/reader.c: Use undeftoken->number instead of
hard coded 2.
(Even though this 2 is not the same as above: the number of the
undeftoken remains being 2, it is its user token number which
might not be 2).
* src/output.c (prepare_tokens): Rename the `maxtok' muscle with
`user_token_number_max'.
Output `undef_token_number'.
* data/bison.simple, data/bison.c++: Use them.
Be sure to map invalid yylex return values to
`undef_token_number'.  This saves us from gratuitous SEGV.
* tests/conflicts.at (Solved SR Conflicts)
(Unresolved SR Conflicts): Adjust.
* tests/regression.at (Web2c Actions): Adjust.
2002-04-09 19:19:59 +00:00
Akim Demaille
62a3e4f0c5 * src/gram.h (item_number_t): New, the type of item numbers in
RITEM.  Note that it must be able to code symbol numbers as
positive number, and the negation of rule numbers as negative
numbers.
Adjust all dependencies (pretty many).
* src/reduce.c (rule): Remove this `short *' pointer: use
item_number_t.
* src/system.h (MINSHORT, MAXSHORT): Remove.
Include `limits.h'.
Adjust dependencies to using SHRT_MAX and SHRT_MIN.
(shortcpy): Remove.
(MAXTABLE): Move to...
* src/output.c (MAXTABLE): here.
(prepare_rules): Use output_int_table to output rhs.
* data/bison.simple, data/bison.c++: Adjust.
* tests/torture.at (Big triangle): Move the limit from 254 to
500.
* tests/regression.at (Web2c Actions): Ajust.
Trying with bigger grammars shows various phenomena: at 3000 (28Mb
of grammar file) bison is killed by my system, at 2000 (12Mb) bison
passes, but produces negative #line number, once fixed, GCC is
killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of
C), it passes.
* src/state.h (state_h): Code input lines on ints, not shorts.
2002-04-08 11:46:26 +00:00
Akim Demaille
680e8701b5 * src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New.
* src/output.c (output_table_data): Return the longest number.
(prepare_tokens): Output `token_number_max').
* data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type):
New.
Use them to define yy_token_number_type/TokenNumberType.
Use this type for yytranslate.
* tests/torture.at (Big triangle): Push the limit from 124 to
253.
* tests/regression.at (Web2c Actions): Adjust.
2002-04-07 17:44:59 +00:00
Akim Demaille
db8837cbe1 Rename all the bucket's as symbol_t'.
* src/gram.c, src/gram.h, src/lex.c, src/lex.h, src/output.c,
* src/reader.c, src/reader.h, src/reduce.c, src/state.h,
* src/symtab.c, src/symtab.h (bucket): Rename as...
(symbol_t): this.
(symbol_list_new, bucket_check_defined, bucket_make_alias)
(bucket_check_alias_consistence, bucket_pack, bucket_translation)
(bucket_new, bucket_free, hash_compare_bucket, hash_bucket)
(buckets_new, buckets_free, buckets_do): Rename as...
(symbol_list_new, symbol_check_defined, symbol_make_alias)
(symbol_check_alias_consistence, symbol_pack, symbol_translation)
(symbol_new, symbol_free, hash_compare_symbol_t, hash_symbol_t)
(symbols_new, symbols_free, symbols_do): these.
2002-04-07 17:43:41 +00:00
Akim Demaille
b0299a2ebb * src/lalr.h, src/lalr.c (LAruleno): Replace with...
(LArule): this, which is an array to rule_t*.
* src/print.c, src/conflicts.c: Adjust.
2002-04-07 17:41:44 +00:00
Akim Demaille
b0940840ac Be sure never to walk through RITEMS, but use only data related to
the rules themselves. RITEMS should be banished.
* src/output.c (output_token_translations): Rename as...
(prepare_tokens): this.
In addition to `translate', prepare the muscles `tname' and
`toknum', which were handled by...
(output_rule_data): this.
Remove, and move the remainder of its outputs into...
(prepare_rules): this new routines, which also merges content from
(output_gram): this.
(prepare_rules): Be sure never to walk through RITEMS.
(output_stos): Rename as...
(prepare_stos): this.
(output): Always invoke prepare_states, after all, just don't use it
in the output if you don't need it.
2002-04-07 17:40:56 +00:00
Akim Demaille
b4c4ccc2b3 * src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over
the RHS of the rules.
* src/output.c (output_gram): Likewise.
2002-04-07 17:38:37 +00:00