]> git.saurik.com Git - bison.git/log
bison.git
22 years agoFix the `GAWK Grammar' failure.
Akim Demaille [Sat, 29 Dec 2001 14:16:59 +0000 (14:16 +0000)] 
Fix the `GAWK Grammar' failure.
* src/LR0.c (final_state): Initialize to -1 so that we do compute
the reductions of the first state which was mistakenly confused
with the final state because precisely final_state was initialized
to 0.
* tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
now noticed by Bison.
* tests/regression.at (Rule Line Numbers): Adjust: state 0 does
have a reduction on $default.

22 years ago* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
Akim Demaille [Sat, 29 Dec 2001 14:16:46 +0000 (14:16 +0000)] 
* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
rule line numbers.
* src/closure.c (print_closure): Likewise.
* src/derives.c (print_derives): Likewise.
* tests/sets.at (Nullable): Adjust: the rule numbers are correct
now.

22 years ago* src/lalr.c (lookaheads_print): New.
Akim Demaille [Sat, 29 Dec 2001 14:16:16 +0000 (14:16 +0000)] 
* src/lalr.c (lookaheads_print): New.
(lalr): Call it when --trace-flag.
* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
are dumped.

22 years ago* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
Akim Demaille [Sat, 29 Dec 2001 14:15:33 +0000 (14:15 +0000)] 
* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
when walking through ritem, even via rule->rhs.
* src/reduce.c (dump_grammar, useful_production, reduce_output)
(useful_production, useless_nonterminals): Likewise.
(reduce_grammar_tables): Likewise, plus update nritems.
* src/nullable.c (set_nullable): Likewise.
* src/lalr.c (build_relations): Likewise.
* tests/sets.at (Nullable): Adjust.
Fortunately, now, the $axiom is no longer nullable.

22 years ago* src/LR0.c (generate_states): Use nritems, not nitems, nor using
Akim Demaille [Sat, 29 Dec 2001 14:15:12 +0000 (14:15 +0000)] 
* src/LR0.c (generate_states): Use nritems, not nitems, nor using
the 0-sentinel.
* src/gram.c (ritem_longest_rhs): Likewise.
* src/reduce.c (nonterminals_reduce): Likewise.
* src/print_graph.c (print_graph): Likewise.
* src/output.c (output_rule_data): Likewise.
* src/nullable.c (set_nullable):  Likewise.

22 years ago* src/output.c: Comment changes.
Akim Demaille [Sat, 29 Dec 2001 14:14:32 +0000 (14:14 +0000)] 
* src/output.c: Comment changes.

22 years ago* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
Akim Demaille [Thu, 27 Dec 2001 18:36:53 +0000 (18:36 +0000)] 
* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
Sparc, as they were causing more porting problems than the
(minor) performance improvement was worth.
Also, catch up with 1.31's YYSTD.

22 years agoChangeLog fixes, and PO regen.
Akim Demaille [Thu, 27 Dec 2001 18:26:20 +0000 (18:26 +0000)] 
ChangeLog fixes, and PO regen.

22 years ago* src/output.c (output_gram): Rely on nritems, not the
Akim Demaille [Thu, 27 Dec 2001 18:17:39 +0000 (18:17 +0000)] 
* src/output.c (output_gram): Rely on nritems, not the
0-sentinel.  See below.
Use -1 as separator, not 0.
* src/bison.simple (yyparse): Subtract 1 to the rule numbers.
Rely on -1 as separator in yyrhs, instead of 0.
* tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
twice `Now at end of input', therefore there are two lines less to
expect.

22 years ago* tests/regression.at (Unresolved SR Conflicts):
Akim Demaille [Thu, 27 Dec 2001 18:13:59 +0000 (18:13 +0000)] 
* tests/regression.at (Unresolved SR Conflicts):
(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
below.
* src/LR0.c (new_state): Recognize the final state by the fact it
is reached by eoftoken.
(insert_start_shifting_state, insert_eof_shifting_state)
(insert_accepting_state, augment_automaton): Remove, since now
these states are automatically computed from the initial state.
(generate_states): Adjust.
* src/print.c: When reporting a rule number to the user, substract
1, so that the axiom rule is rule 0, and the first user rule is 1.
* src/reduce.c: Likewise.
* src/print_graph.c (print_core): For the time being, just as for
the report, depend upon --trace-flags to dump the full set of
items.
* src/reader.c (readgram): Once the grammar read, insert the rule
0: `$axiom: START-SYMBOL $'.
* tests/set.at: Adjust: rule 0 is now displayed, and since the
number of the states has changed (the final state is no longer
necessarily the last), catch up.
* tests/regression.at: Partly catch up.

22 years ago* src/LR0.c (new_state): Recognize the final state by the fact it
Akim Demaille [Thu, 27 Dec 2001 18:13:47 +0000 (18:13 +0000)] 
* src/LR0.c (new_state): Recognize the final state by the fact it
is reached by eoftoken.
(insert_start_shifting_state, insert_eof_shifting_state)
(insert_accepting_state, augment_automaton): Remove, since now
these states are automatically computed from the initial state.
(generate_states): Adjust.
* src/print.c: When reporting a rule number to the user, substract
1, so that the axiom rule is rule 0, and the first user rule is 1.
* src/reduce.c: Likewise.
* src/print_graph.c (print_core): For the time being, just as for
the report, depend upon --trace-flags to dump the full set of
items.
* src/reader.c (readgram): Once the grammar read, insert the rule
0: `$axiom: START-SYMBOL $'.
* tests/set.at: Adjust: rule 0 is now displayed, and since the
number of the states has changed (the final state is no longer
necessarily the last), catch up.

22 years agoTry to make the use of the eoftoken valid. Given that its value
Akim Demaille [Thu, 27 Dec 2001 18:13:31 +0000 (18:13 +0000)] 
Try to make the use of the eoftoken valid.  Given that its value
is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
is used instead of > 0 where appropriate, (ii), depend upon nritems
instead of the 0-sentinel.
* src/gram.h, src/gram.c (nritems): New.
Expected to be duplication of nitems, but for the time being...
* src/reader.c (packgram): Assert nritems and nitems are equal.
* src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
* src/closure.c (print_closure, print_fderives): Likewise.
* src/gram.c (ritem_print): Likewise.
* src/print.c (print_core, print_grammar): Likewise.
* src/print_graph.c: Likewise.

22 years ago* src/main.c (main): If there are complains after grammar
Akim Demaille [Thu, 27 Dec 2001 18:13:09 +0000 (18:13 +0000)] 
* src/main.c (main): If there are complains after grammar
reductions, then output the report anyway if requested, then die.
* src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
* src/reader.c (eoftoken): New.
(parse_token_decl): If the token being defined has value `0', it
is the eoftoken.
(packsymbols): No longer hack `tags' to insert `$' by hand.
Be sure to preserve the value of the eoftoken.
(reader): Make sure eoftoken is defined.
Initialize nsyms to 0: now eoftoken is created just like the others.
* src/print.c (print_grammar): Don't special case the eof token.
* src/regression.at: Adjust: `$' has value 0, not -1, which was a
lie anyway, albeit pleasant.
* tests/calc.at: Exercise error messages with eoftoken.
Change the grammar so that empty input is invalid.
Adjust expectations.
When yyungeting, be sure to use a valid yylloc: use last_yylloc.

22 years ago* configure.in: Check the protos of strchr ans strspn.
Akim Demaille [Thu, 27 Dec 2001 18:12:48 +0000 (18:12 +0000)] 
* configure.in: Check the protos of strchr ans strspn.
Replace strchr if needed.
* src/system.h: Provide the protos of strchr, strspn and memchr if
missing.
* lib/strchr.c: New.
* src/reader.c (symbols_save): Use strchr.

22 years ago* src/print.c, src/print_graph.c (escape): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:20 +0000 (18:11 +0000)] 
* src/print.c, src/print_graph.c (escape): New.
Use it to quote the TAGS outputs.
* src/print_graph.c (print_state): Now errors are in red, and
reductions in green.
Prefer high to wide: output the state number on a line of its own.

22 years ago* src/state.h, src/state.c (reductions_new): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:06 +0000 (18:11 +0000)] 
* src/state.h, src/state.c (reductions_new): New.
* src/LR0.c (set_state_table): Let all the states have a
`reductions', even if reduced to 0.
(save_reductions): Adjust.
* src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
* src/print.c (print_reductions, print_actions): Adjust.
* src/output.c (action_row): Adjust.

22 years ago* src/state.h, src/state.c (errs_new, errs_dup): New.
Akim Demaille [Thu, 27 Dec 2001 18:10:48 +0000 (18:10 +0000)] 
* src/state.h, src/state.c (errs_new, errs_dup): New.
* src/LR0.c (set_state_table): Let all the states have an errs,
even if reduced to 0.
* src/print.c (print_errs, print_reductions): Adjust.
* src/output.c (output_actions, action_row): Adjust.
* src/conflicts.c (resolve_sr_conflict): Adjust.

22 years ago* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
Akim Demaille [Thu, 27 Dec 2001 18:10:30 +0000 (18:10 +0000)] 
* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.

22 years ago* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
Akim Demaille [Thu, 27 Dec 2001 18:10:16 +0000 (18:10 +0000)] 
* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
* src/print.c: here.
(lookaheadset, shiftset): New, used as additional storage by
print_reductions.
(print_results): Adjust.
(print_shifts, print_gotos, print_errs): New, extracted from...
(print_actions): here.
* src/print_graph.c (print_actions): Remove dead code.

22 years ago* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
Akim Demaille [Thu, 27 Dec 2001 18:07:31 +0000 (18:07 +0000)] 
* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
`$n' and `@n'.

22 years ago* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
Akim Demaille [Thu, 27 Dec 2001 18:07:17 +0000 (18:07 +0000)] 
* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
(build_relations): Adjust.

22 years ago* src/lalr.c (set_goto_map): Remove a wrong but benign loop
Akim Demaille [Thu, 27 Dec 2001 18:07:05 +0000 (18:07 +0000)] 
* src/lalr.c (set_goto_map): Remove a wrong but benign loop
duplication.

22 years ago* src/reader.c (packgram): Catch nitems overflows.
Akim Demaille [Thu, 27 Dec 2001 18:06:41 +0000 (18:06 +0000)] 
* src/reader.c (packgram): Catch nitems overflows.

22 years ago* src/files.c, src/files.h (guard_obstack): Remove.
Akim Demaille [Thu, 27 Dec 2001 18:06:24 +0000 (18:06 +0000)] 
* src/files.c, src/files.h (guard_obstack): Remove.
* src/output.c (output): Adjust.
* src/reader.c (parse_braces): New, factoring...
(copy_action, copy_guard): these two which are renamed as...
(parse_action, parse_guard): these.
As a voluntary consequence, using braces around guards is now
mandatory.

22 years ago* src/gram.h (rule_t): `guard' and `guard_line' are new members.
Akim Demaille [Thu, 27 Dec 2001 18:06:06 +0000 (18:06 +0000)] 
* src/gram.h (rule_t): `guard' and `guard_line' are new members.
* src/reader.c (symbol_list): `guard' and `guard_line' are new
members.
(symbol_list_new): Adjust.
(copy_action): action_line is the first line, not the last.
(copy_guard): Just as for actions, store the `action' only, not
the switch/case/break flesh.
Don't parse the user action that might follow the guard, let...
(readgram): do it, i.e., now, there can be an action after a
guard.
In other words the guard is just explicitly optional.
(packgram): Adjust.
* src/output.c (guards_output): New.
(output_parser): Call it when needed.
(output): Also free the guard and attrs obstacks.
* src/files.c, src/files.h (obstack_save): Remove.
(output_files): Remove.
As a result, if one needs the former `.act' file, using an
appropriate skeleton which requires actions and guards is now
required.
* src/main.c (main): Adjust.
* tests/semantic.at: New.
* tests/regression.at: Use `input.y' as input file name.
Avoid 8+3 problems by requiring input.c when the test needs the
parser.

22 years ago* src/reader.c (symbol_list_new): Be sure to initialize all the
Akim Demaille [Thu, 27 Dec 2001 18:05:42 +0000 (18:05 +0000)] 
* src/reader.c (symbol_list_new): Be sure to initialize all the
fields.

22 years agoAll the hacks using a final pseudo state are now useless.
Akim Demaille [Thu, 27 Dec 2001 18:05:30 +0000 (18:05 +0000)] 
All the hacks using a final pseudo state are now useless.
* src/LR0.c (set_state_table): state_table holds exactly nstates.
* src/lalr.c (nLA): New.
(initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
instead of lookaheadsp from the pseudo state (nstate + 1).

22 years ago* src/output.c (action_row, token_actions): Use a state_t instead
Akim Demaille [Thu, 27 Dec 2001 18:05:18 +0000 (18:05 +0000)] 
* src/output.c (action_row, token_actions): Use a state_t instead
of a integer, and nlookaheads instead of the following state's
lookaheadsp.

22 years ago* src/conflicts.c (log_resolution, flush_shift)
Akim Demaille [Thu, 27 Dec 2001 18:05:05 +0000 (18:05 +0000)] 
* src/conflicts.c (log_resolution, flush_shift)
(resolve_sr_conflict, set_conflicts, solve_conflicts)
(count_sr_conflicts, count_rr_conflicts, conflicts_output)
(conflicts_print, print_reductions): Use a state_t instead of an
integer when referring to a state.
As much as possible, depend upon nlookaheads, instead of the
`lookaheadsp' member of the following state (since lookaheads of
successive states are successive, the difference between state n + 1
and n served as the number of lookaheads for state n).
* src/lalr.c (add_lookback_edge): Likewise.
* src/print.c (print_core, print_actions, print_state)
(print_results): Likewise.
* src/print_graph.c (print_core, print_actions, print_state)
(print_graph): Likewise.
* src/conflicts.h: Adjust.

22 years ago* src/bison.hairy: Formatting/comment changes.
Akim Demaille [Thu, 27 Dec 2001 18:04:43 +0000 (18:04 +0000)] 
* src/bison.hairy: Formatting/comment changes.
ANSIfy.
Remove `register' indications.
Add plenty of `static'.

22 years ago* src/output.c (prepare): Drop the muscle `ntbase' which
Akim Demaille [Thu, 27 Dec 2001 18:04:28 +0000 (18:04 +0000)] 
* src/output.c (prepare): Drop the muscle `ntbase' which
duplicates ntokens.
* src/bison.simple: Formatting/comment changes.
Use YYNTOKENS only, which is documented, but not YYNTBASE, which
is an undocumented synonym.

22 years ago* src/output.c (output_table_data): Change the prototype to use
Akim Demaille [Sat, 22 Dec 2001 15:16:41 +0000 (15:16 +0000)] 
* src/output.c (output_table_data): Change the prototype to use
`int' for array ranges: some invocations do pass an int, not a
short.
Reported by Wayne Green.

22 years agoSome actions of web2c.y are improperly triggered.
Akim Demaille [Sat, 22 Dec 2001 14:58:53 +0000 (14:58 +0000)] 
Some actions of web2c.y are improperly triggered.
Reported by Mike Castle.
* src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
* tests/regression.at (Web2c): Rename as...
(Web2c Report): this.
(Web2c Actions): New.

22 years agoReductions in web2c.y are improperly reported.
Akim Demaille [Sat, 22 Dec 2001 14:42:36 +0000 (14:42 +0000)] 
Reductions in web2c.y are improperly reported.
Reported by Mike Castle.
* src/conflicts.c (print_reductions): Fix.
* tests/regression.at (Web2c): New.

22 years agoTypo.
Akim Demaille [Tue, 18 Dec 2001 09:59:24 +0000 (09:59 +0000)] 
Typo.

22 years agoSome host fail on `assert (!"foo")', which expands to
Akim Demaille [Tue, 18 Dec 2001 09:33:44 +0000 (09:33 +0000)] 
Some host fail on `assert (!"foo")', which expands to
((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
Reported by Nelson Beebee.
* src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
`#define it_succeeded 0' and `assert (it_succeeded)'.

22 years ago* src/bison.simple: Don't hard code the skeleton line and filename.
Marc Autret [Mon, 17 Dec 2001 20:28:51 +0000 (20:28 +0000)] 
* src/bison.simple: Don't hard code the skeleton line and filename.
* src/output.c (output_parser): Rename 'line' as 'output_line'.
New line counter 'skeleton_line' (skeleton-line muscle).

22 years ago* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
Paul Eggert [Mon, 17 Dec 2001 19:43:46 +0000 (19:43 +0000)] 
* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
YYDEBUG must be defined to a nonzero value.

* src/bison.simple (yytname): Do not assume that the user defines
YYDEBUG to a properly parenthesized expression.

22 years agoDocument that YYDEBUG must be defined to a nonzero value.
Paul Eggert [Mon, 17 Dec 2001 19:43:23 +0000 (19:43 +0000)] 
Document that YYDEBUG must be defined to a nonzero value.

22 years ago(yytname): Do not assume that the user defines YYDEBUG to a properly
Paul Eggert [Mon, 17 Dec 2001 19:41:46 +0000 (19:41 +0000)] 
(yytname): Do not assume that the user defines YYDEBUG to a properly
parenthesized expression.

22 years agoRegen.
Akim Demaille [Mon, 17 Dec 2001 17:33:59 +0000 (17:33 +0000)] 
Regen.

22 years ago* src/state.h (state_t): Rename lookaheads as lookaheadsp.
Akim Demaille [Mon, 17 Dec 2001 17:32:59 +0000 (17:32 +0000)] 
* src/state.h (state_t): Rename lookaheads as lookaheadsp.
nlookaheads is a new member.
Adjust all users.
* src/lalr.h (nlookaheads): Remove this orphan declaration.
* src/lalr.c (initialize_lookaheads): Set nlookaheads for each
state.

22 years ago* src/files.h, src/files.c (open_files, close_files): Remove.
Akim Demaille [Mon, 17 Dec 2001 17:32:39 +0000 (17:32 +0000)] 
* src/files.h, src/files.c (open_files, close_files): Remove.
* src/main.c (main): Don't open/close files, nor invoke lex_free,
let...
* src/reader.c (reader): Do it.

22 years ago* src/conflicts.c (print_reductions): Formatting changes.
Akim Demaille [Mon, 17 Dec 2001 17:32:20 +0000 (17:32 +0000)] 
* src/conflicts.c (print_reductions): Formatting changes.

22 years ago* src/conflicts.c (flush_shift): Also adjust lookaheadset.
Akim Demaille [Mon, 17 Dec 2001 17:32:08 +0000 (17:32 +0000)] 
* src/conflicts.c (flush_shift): Also adjust lookaheadset.
(flush_reduce): New.
(resolve_sr_conflict): Adjust.

22 years ago* src/output.c (output_obstack): Be static and rename as...
Akim Demaille [Mon, 17 Dec 2001 17:31:56 +0000 (17:31 +0000)] 
* src/output.c (output_obstack): Be static and rename as...
(format_obstack): this, to avoid any confusion with files.c's
output_obstack.
* src/reader.h (muscle_obstack): Move to...
* src/output.h: here, since it's defined in output.c.

22 years ago* src/output.c (action_row, save_column, default_goto)
Akim Demaille [Mon, 17 Dec 2001 17:31:37 +0000 (17:31 +0000)] 
* src/output.c (action_row, save_column, default_goto)
(sort_actions, matching_state, pack_vector): Better variable
locality.

22 years ago* src/output.c: Various formatting changes.
Akim Demaille [Mon, 17 Dec 2001 17:31:24 +0000 (17:31 +0000)] 
* src/output.c: Various formatting changes.

22 years ago* src/files.c (output_files): Free the output_obstack.
Akim Demaille [Mon, 17 Dec 2001 17:31:10 +0000 (17:31 +0000)] 
* src/files.c (output_files): Free the output_obstack.
* src/main.c (main): Call print and print_graph conditionally.
* src/print.c (print): Work unconditionally.
* src/print_graph.c (print_graph): Work unconditionally.
* src/conflicts.c (log_resolution): Output only if verbose_flag.

22 years agoRegen.
Akim Demaille [Mon, 17 Dec 2001 17:30:47 +0000 (17:30 +0000)] 
Regen.

22 years ago* src/output.c (actions_output): Fix. When we use %no-lines,
Marc Autret [Sun, 16 Dec 2001 01:45:19 +0000 (01:45 +0000)] 
* src/output.c (actions_output): Fix. When we use %no-lines,
there is one less line per action.

22 years ago* src/bison.simple: Remove a useless #line directive.
Marc Autret [Sun, 16 Dec 2001 01:26:25 +0000 (01:26 +0000)] 
* src/bison.simple: Remove a useless #line directive.
s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
* src/output.c (get_lines_number): New.
(output_parser): Adjust, now takes care about the lines of a
output muscles.
Fix line numbering.
(actions_output): Computes the number of lines taken by actions.
(output_master_parser): Insert new skeleton which is the name of
the output parser file name.

22 years ago* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
Marc Autret [Sat, 15 Dec 2001 18:38:57 +0000 (18:38 +0000)] 
* src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.

22 years agoUpdate.
Marc Autret [Sat, 15 Dec 2001 17:58:58 +0000 (17:58 +0000)] 
Update.

22 years ago* src/output.c (output_gram): Keep track of the hairy one.
Marc Autret [Sat, 15 Dec 2001 17:34:37 +0000 (17:34 +0000)] 
* src/output.c (output_gram): Keep track of the hairy one.

22 years agoRegen.
Akim Demaille [Sat, 15 Dec 2001 17:11:49 +0000 (17:11 +0000)] 
Regen.

22 years agoFix INCLUDES.
Akim Demaille [Sat, 15 Dec 2001 16:35:48 +0000 (16:35 +0000)] 
Fix INCLUDES.

22 years agoMake `make distcheck' work.
Akim Demaille [Sat, 15 Dec 2001 16:31:04 +0000 (16:31 +0000)] 
Make `make distcheck' work.
* lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
system.h which uses libgettext.h.

22 years agoregen.
Akim Demaille [Sat, 15 Dec 2001 16:29:52 +0000 (16:29 +0000)] 
regen.

22 years ago* src/nullable.c (set_nullable): Useless rules must be skipped,
Akim Demaille [Sat, 15 Dec 2001 16:21:44 +0000 (16:21 +0000)] 
* src/nullable.c (set_nullable): Useless rules must be skipped,
otherwise, since we range over their symbols, we might look at a
nonterminal which no longer ``exists'', i.e., it is not counted in
`nvars', hence we overflow our arrays.

22 years agoThe header can also be produced directly, without any obstack!
Akim Demaille [Sat, 15 Dec 2001 16:06:50 +0000 (16:06 +0000)] 
The header can also be produced directly, without any obstack!
Yahoo!
* src/files.c, src/files.h (defines_obstack): Remove.
(compute_header_macro): Global.
(defines_obstack_save): Remove.
* src/reader.c (parse_union_decl): No longer output to
defines_obstack: its content can be found in the `stype' muscle
anyway.
(output_token_translations): Merge into...
(symbols_output): this.
Rename as...
(symbols_save): this.
(reader): Adjust.
* src/output.c (header_output): New.
(output): Call it.

22 years ago* src/reader.c (parse_union_decl): Instead of handling two obstack
Akim Demaille [Sat, 15 Dec 2001 15:25:15 +0000 (15:25 +0000)] 
* src/reader.c (parse_union_decl): Instead of handling two obstack
simultaneously, use one to define the `stype' muscle, and use the
value of the latter to fill defines_obstack.
(copy_comment): Remove.
(copy_comment2): Work for a single obstack.
Rename as...
(copy_comment): this.

22 years ago* src/lex.c, src/lex.h (xgetc): No longer static.
Akim Demaille [Sat, 15 Dec 2001 15:13:36 +0000 (15:13 +0000)] 
* src/lex.c, src/lex.h (xgetc): No longer static.
* src/reader.c (parse_union_decl): Revamp.

22 years agoStill making progress in separating Bison into (i) input, (ii)
Akim Demaille [Sat, 15 Dec 2001 14:35:57 +0000 (14:35 +0000)] 
Still making progress in separating Bison into (i) input, (ii)
process, (iii) output: now we can directly output the parser file
without using table_obstack at all.
* src/files.c, src/files.h (table_obstack): Bye bye.
(parser_file_name): New.
* src/files.c (compute_output_file_names): Compute it.
* src/output.c (actions_output, output_parser)
(output_master_parser): To a file instead of an obstack.

22 years agoAttach actions to rules, instead of pre-outputting them to
Akim Demaille [Sat, 15 Dec 2001 14:14:30 +0000 (14:14 +0000)] 
Attach actions to rules, instead of pre-outputting them to
actions_obstack.
* src/gram.h (rule_t): action and action_line are new members.
* src/reader.c (symbol_list): Likewise.
(copy_action): Save the actions within the rule.
(packgram): Save them in rule_table.
* src/output.c (actions_output): New.
(output_parser): Use it on `%%actions'.
(output_rule_data): Don't free rule_table.
(output): Do it.
(prepare): Don't save the `action' muscle.
* src/bison.simple: s/%%action/%%actions/.

22 years ago* src/reader.c (copy_action): When --yacc, don't append a `;'
Akim Demaille [Sat, 15 Dec 2001 11:09:05 +0000 (11:09 +0000)] 
* src/reader.c (copy_action): When --yacc, don't append a `;'
to the user action: let it fail if lacking.
Suggested by Aharon Robbins and Tom Tromey.

22 years agoRegen.
Akim Demaille [Sat, 15 Dec 2001 11:08:37 +0000 (11:08 +0000)] 
Regen.

22 years ago* src/lex.c (literalchar): Simply return the char you decoded, non
Akim Demaille [Fri, 14 Dec 2001 16:03:28 +0000 (16:03 +0000)] 
* src/lex.c (literalchar): Simply return the char you decoded, non
longer mess around with obstacks and int pointers.
Adjust all callers.

22 years ago* src/lex.c (literalchar): Don't escape the special characters,
Akim Demaille [Fri, 14 Dec 2001 15:39:05 +0000 (15:39 +0000)] 
* src/lex.c (literalchar): Don't escape the special characters,
just decode them, and keep them as char (before, eol was output as
the 2 char string `n' etc.).
* src/output.c (output_rule_data): Use quotearg to output the
token strings.

22 years ago* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Paul Eggert [Fri, 14 Dec 2001 01:54:30 +0000 (01:54 +0000)] 
* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Do not infringe on the global user namespace when using C++.
(YYFPRINTF, YYSTDERR): New macros, needed for the above.
All uses of `fprintf' and `stderr' changed.

* doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.

22 years ago(const): Do not define; that is now config.h's job.
Paul Eggert [Fri, 14 Dec 2001 01:52:50 +0000 (01:52 +0000)] 
(const): Do not define; that is now config.h's job.
(YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Do not infringe on the global user namespace when using C++.
(YYFPRINTF, YYSTDERR): New macros, needed for the above.
All uses of `fprintf' and `stderr' changed.

22 years agoDocument YYFPRINTF, YYSTDERR.
Paul Eggert [Fri, 14 Dec 2001 01:51:33 +0000 (01:51 +0000)] 
Document YYFPRINTF, YYSTDERR.

22 years agoThe computation of nullable is broken: it doesn't handle empty
Akim Demaille [Thu, 13 Dec 2001 11:02:21 +0000 (11:02 +0000)] 
The computation of nullable is broken: it doesn't handle empty
RHS's properly.
* tests/torture.at (GNU AWK Grammar): New.
* tests/sets.at (Nullable): New.
* src/nullable.c (set_nullable): Instead of blindly looping over
`ritems', loop over the rules, and then over their rhs's.
Work around Autotest bugs.
* src/warshall.c (bitmatrix_print): Don't use `+--+' as table
frame, because Autotest understand lines starting with a `+' as
traces from the shell.  Then, they are not processed properly.
Admittedly an Autotest bug, but we don't have time to wait for
Autotest to catch up.
* tests/regression.at (Broken Closure): Adjust to the new table
frames.
Move to...
* tests/sets.at: here.

22 years ago* src/closure.c (closure): Use nrules instead of playing tricks
Akim Demaille [Thu, 13 Dec 2001 11:02:04 +0000 (11:02 +0000)] 
* src/closure.c (closure): Use nrules instead of playing tricks
with BITS_PER_WORD.

22 years ago* src/print.c (print_actions): Output the handling of `$' as the
Akim Demaille [Thu, 13 Dec 2001 11:01:51 +0000 (11:01 +0000)] 
* src/print.c (print_actions): Output the handling of `$' as the
traces do: shifting the token EOF.  Before EOF was treated as a
nonterminal.
* tests/regression.at: Adjust some tests.
* src/print_graph.c (print_core): Complete the set of items via
closure.  The next-to-final and final states are still unsatisfying,
but that's to be addressed elsewhere.
No longer output the rule numbers, but do output the state number.
A single loop for the shifts + gotos is enough, but picked a
distinct color for each.
(print_graph): Initialize and finalize closure.

22 years ago* src/reader.c (readgram): Remove dead code, an strip useless
Akim Demaille [Thu, 13 Dec 2001 11:01:36 +0000 (11:01 +0000)] 
* src/reader.c (readgram): Remove dead code, an strip useless
braces.
(get_type): Remove, unused.

22 years ago* src/complain.h, src/complain.c: Remove error_one_per_line, rely
Akim Demaille [Wed, 12 Dec 2001 15:22:46 +0000 (15:22 +0000)] 
* src/complain.h, src/complain.c: Remove error_one_per_line, rely
on that of lib/error.c.

22 years agoSome hosts don't like `/' in includes.
Akim Demaille [Wed, 12 Dec 2001 11:58:19 +0000 (11:58 +0000)] 
Some hosts don't like `/' in includes.
* src/system.h: Include libgettext.h without qualifying the path.
* src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
$(top_srcdir).

22 years agoRegen.
Akim Demaille [Wed, 12 Dec 2001 11:56:52 +0000 (11:56 +0000)] 
Regen.

22 years agoUpdate.
Marc Autret [Tue, 11 Dec 2001 23:03:44 +0000 (23:03 +0000)] 
Update.

22 years agoUpdate.
Marc Autret [Tue, 11 Dec 2001 20:21:09 +0000 (20:21 +0000)] 
Update.

22 years ago* src/output.c (output_parser): Remove useless muscle.
Marc Autret [Tue, 11 Dec 2001 20:19:44 +0000 (20:19 +0000)] 
* src/output.c (output_parser): Remove useless muscle.

22 years ago* src/bison.simple: Remove #line just before %%epilogue. It
Marc Autret [Tue, 11 Dec 2001 20:10:22 +0000 (20:10 +0000)] 
* src/bison.simple: Remove #line just before %%epilogue. It
is now handled in ...
* src/reader.c (read_additionnal_code): Add the output of a
#line for the epilogue.

22 years ago* src/reader.c (copy_definition): Re-use CPP-outed code which
Marc Autret [Mon, 10 Dec 2001 23:19:09 +0000 (23:19 +0000)] 
* src/reader.c (copy_definition): Re-use CPP-outed code which
replace precedent remove.
* src/bison.simple: Remove #line before %%prologue because
%%input-line is wrong at this time.

22 years agoUpdate.
Marc Autret [Mon, 10 Dec 2001 22:56:40 +0000 (22:56 +0000)] 
Update.

22 years ago* src/reader.c (symbols_output): Clean up.
Marc Autret [Mon, 10 Dec 2001 22:55:06 +0000 (22:55 +0000)] 
* src/reader.c (symbols_output): Clean up.
* src/output.c (output_gram, output): Clean up.

22 years agoTypo.
Akim Demaille [Mon, 10 Dec 2001 09:11:42 +0000 (09:11 +0000)] 
Typo.

22 years ago* src/lalr.c (initialize_lookaheads): New. Extracted from...
Akim Demaille [Mon, 10 Dec 2001 09:10:28 +0000 (09:10 +0000)] 
* src/lalr.c (initialize_lookaheads): New.  Extracted from...
* src/LR0.c (set_state_table): here.
* src/lalr.c (lalr): Call it.

22 years ago* src/state.h (shifts): Remove the `number' member: shifts are
Akim Demaille [Mon, 10 Dec 2001 09:10:10 +0000 (09:10 +0000)] 
* src/state.h (shifts): Remove the `number' member: shifts are
attached to state, hence no longer need to be labelled with a
state number.

22 years agoNow that states have a complete set of members, the linked list of
Akim Demaille [Mon, 10 Dec 2001 09:09:49 +0000 (09:09 +0000)] 
Now that states have a complete set of members, the linked list of
shifts is useless: just fill directly the state's shifts member.
* src/state.h (shifts): Remove the `next' member.
* src/LR0.c (first_state, last_state): Remove.
Adjust the callers.
(augment_automaton): Don't look for the shifts that must be added
a shift on EOF: it is those of the state we looked for!  But now,
since shifts are attached, it is no longer needed to looking
merely by its id: its number.

22 years ago* src/LR0.c (augment_automaton): Better variable locality.
Akim Demaille [Mon, 10 Dec 2001 09:09:28 +0000 (09:09 +0000)] 
* src/LR0.c (augment_automaton): Better variable locality.
Remove an impossible branch: if there is a state corresponding to
the start symbol being shifted, then there is shift for the start
symbol from the initial state.

22 years ago* src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
Akim Demaille [Mon, 10 Dec 2001 09:09:14 +0000 (09:09 +0000)] 
* src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
only when appropriate: when insert_start_shifting_state' is not
invoked.
* tests/regression.at (Rule Line Numbers): Adjust.

22 years ago* src/LR0.c (augment_automaton): Now that all states have shifts,
Akim Demaille [Mon, 10 Dec 2001 09:09:00 +0000 (09:09 +0000)] 
* src/LR0.c (augment_automaton): Now that all states have shifts,
merge the two cases addition shifts to the initial state.

22 years ago* src/lalr.c (set_state_table): Move to...
Akim Demaille [Mon, 10 Dec 2001 09:08:46 +0000 (09:08 +0000)] 
* src/lalr.c (set_state_table): Move to...
* src/LR0.c: here.
* src/lalr.c (lalr): Don't call it...
* src/LR0.c (generate_states): do it.
* src/LR0.h (first_state): Remove, only the table is used.

22 years ago* src/LR0.h (first_shift, first_reduction): Remove.
Akim Demaille [Mon, 10 Dec 2001 09:08:28 +0000 (09:08 +0000)] 
* src/LR0.h (first_shift, first_reduction): Remove.
* src/lalr.c: Don't use first_shift: find shifts through the
states.

22 years ago* src/LR0.c: Attach shifts to states as soon as they are
Akim Demaille [Mon, 10 Dec 2001 09:08:09 +0000 (09:08 +0000)] 
* src/LR0.c: Attach shifts to states as soon as they are
computed.
* src/lalr.c (set_state_table): Instead of assigning shifts to
state, just assert that the mapping was properly done.

22 years ago* src/LR0.c (insert_start_shift): Rename as...
Akim Demaille [Mon, 10 Dec 2001 09:07:55 +0000 (09:07 +0000)] 
* src/LR0.c (insert_start_shift): Rename as...
(insert_start_shifting_state): this.
(insert_eof_shifting_state, insert_accepting_state): New.
(augment_automaton): Adjust.
Better locality of the variables.
When looking if the start_symbol is shifted from the initial
state, using `while (... symbol != start_symbol ...)' sounds
better than `while (... symbol < start_symbol ...)': If fail
to see how the order between symbols could be relevant!

22 years ago* src/getargs.h: Don't declare `spec_name_prefix' and
Akim Demaille [Mon, 10 Dec 2001 09:07:41 +0000 (09:07 +0000)] 
* src/getargs.h: Don't declare `spec_name_prefix' and
`spec_file_prefix', declared by src/files.h.
* src/files.c, src/files.h: Default for spec_name_prefix is "yy".
* src/muscle_tab.c (muscle_init): Default prefix to NULL.
* src/output.c (prepare): Adjust.
* src/reader.c (symbols_output): Likewise.
* src/vmsgetargs.c: Vaguely adjust, but who cares?

22 years ago* src/muscle_tab.c (muscle_init): NULL is a better default than
Akim Demaille [Mon, 10 Dec 2001 09:07:17 +0000 (09:07 +0000)] 
* src/muscle_tab.c (muscle_init): NULL is a better default than
`"0"'.

22 years ago* src/reader.c (reader): Calling symbols_output once is enough.
Akim Demaille [Mon, 10 Dec 2001 09:07:03 +0000 (09:07 +0000)] 
* src/reader.c (reader): Calling symbols_output once is enough.