]> git.saurik.com Git - bison.git/log
bison.git
22 years agoEquip the skeleton chain with location tracking, runtime trace,
Akim Demaille [Wed, 2 Jan 2002 14:56:12 +0000 (14:56 +0000)] 
Equip the skeleton chain with location tracking, runtime trace,
pure parser and scanner.
* src/parse-skel.y: Request a pure parser, locations, and prefix
renaming.
(%union): Having several members with the same type does not help
type mismatches, simplify.
(YYPRINT, yyprint): New.
(yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
(skel_error): this.
Handle locations.
* src/scan-skel.l: Adjust to these changes.
* src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
(LOCATION_PRINT, skel_control_t): New.

22 years ago* src/parse-skel.y: Get rid of the shift/reduce conflict:
Akim Demaille [Sun, 30 Dec 2001 21:06:36 +0000 (21:06 +0000)] 
* src/parse-skel.y: Get rid of the shift/reduce conflict:
replace `gb' with BLANKS.
* src/scan-skel.l: Adjust.

22 years ago* src/system.h: We don't need nor want bcopy.
Akim Demaille [Sun, 30 Dec 2001 21:06:22 +0000 (21:06 +0000)] 
* src/system.h: We don't need nor want bcopy.
Throw away MS-DOS crap: we don't need getpid.
* configure.in: We don't need strndup.  It was even causing
problems: because Flex includes the headers *before* us,
_GNU_SOURCE is not defined by config.h, and therefore strndup was
not visible.
* lib/xstrndup.c: New.
* src/scan-skel.l: Use it.
Be sure to initialize yylval.muscle member when scanning a MUSCLE.
* src/parse-skel.y: Use %directives instead of #defines.

22 years ago* src/skeleton.h: New.
Akim Demaille [Sun, 30 Dec 2001 21:05:12 +0000 (21:05 +0000)] 
* src/skeleton.h: New.
* src/output.c (output_parser, output_master_parser): Remove, dead
code.
* src/output.h (get_lines_number, actions_output, guards_output)
(token_definitions_output): Prototype them.
* src/parse-skel.y: Add the license notice.
Include output.h and skeleton.h.
(process_skeleton): Returns void, and takes a single parameter.
* src/scan-skel.l: Add the license notice.
Include skeleton.h.
Don't use %option yylineno: it seems that then Flex imagines
REJECT has been used, and therefore it won't reallocate its
buffers (which makes no other sense to me than a bug).  It results
in warnings for `unused: yy_flex_realloc'.
to guess if the generated parsers should have '.tab' in their
* src/Makefile.am (bison_SOURCES): Add scan-skel.l and

22 years ago* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
Robert Anisko [Sun, 30 Dec 2001 15:01:06 +0000 (15:01 +0000)] 
* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
(MUSCLE_INSERT_PREFIX): ...to there.
* src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
(MUSCLE_INSERT_PREFIX): Move from here...
* src/bison.hairy: Add a section directive.  Put braces around muscle
names.  This parser skeleton is still broken, but Bison should not
choke on a bad muscle 'syntax'.
* src/bison.simple: Add a section directive.  Put braces around muscle
names.
* src/files.h (strsuffix, stringappend): Add declarations.
(tab_extension): Add declaration.
(short_base_name): Add declaration.
* src/files.c (strsuffix, stringappend): No longer static.  These
functions are used in the skeleton parser.
(tab_extension): New.
(compute_base_names): Use the computations done in this function
to guess if the generated parsers should have '.tab' in their
names.
(short_base_name): No longer static.
* src/output.c (output_skeleton): New.
(output): Disable call to output_master_parser, and give a try to
a new skeleton handling system.
(guards_output, actions_output): No longer static.
(token_definitions_output, get_lines_number): No longer static.
* configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
* src/Makefile.am (bison_SOURCES): Add scan-skel.l and
parse-skel.y.
* src/parse-skel.y: New file.
* src/scan-skel.l: New file.

22 years agoRegen.
Akim Demaille [Sat, 29 Dec 2001 14:46:03 +0000 (14:46 +0000)] 
Regen.

22 years ago%name-prefix is broken.
Akim Demaille [Sat, 29 Dec 2001 14:27:45 +0000 (14:27 +0000)] 
%name-prefix is broken.
* src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
Adjust all dependencies.
* tests/headers.at (export YYLTYPE): Strengthen this test: use
%name-prefix.
Renaming yylval but not yylloc is not consistent.  Now we do.
* src/bison.simple: Prefix yylloc if used.
* doc/bison.texinfo (Decl Summary): Document that.

22 years ago* doc/bison.texinfo: Promote `%long-directive' over
Akim Demaille [Sat, 29 Dec 2001 14:27:20 +0000 (14:27 +0000)] 
* doc/bison.texinfo: Promote `%long-directive' over
`%long_directive'.
Remove all references to fixed-output-files, yacc is enough.

22 years ago* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
Akim Demaille [Sat, 29 Dec 2001 14:27:01 +0000 (14:27 +0000)] 
* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
user prologue.  These are defaults.
* tests/actions.at (Mid-rule actions): Make sure the user can
define YYDEBUG and YYERROR_VERBOSE.

22 years ago* src/output.c (header_output): Don't forget to export YYLTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:26:49 +0000 (14:26 +0000)] 
* src/output.c (header_output): Don't forget to export YYLTYPE and
yylloc.
* tests/headers.at (export YYLTYPE): New, make sure it does.
* tests/regression.at (%union and --defines, Invalid CPP headers):
Move to...
* tests/headers.at: here.

22 years ago* src/gram.h (rule_s): Member `assoc' is of type `associativity'.
Akim Demaille [Sat, 29 Dec 2001 14:26:21 +0000 (14:26 +0000)] 
* src/gram.h (rule_s): Member `assoc' is of type `associativity'.

22 years ago* tests/actions.at (Mid-rule actions): Output on a single line
Akim Demaille [Sat, 29 Dec 2001 14:25:58 +0000 (14:25 +0000)] 
* tests/actions.at (Mid-rule actions): Output on a single line
instead of several.

22 years ago* doc/bison.texinfo: Formatting changes.
Akim Demaille [Sat, 29 Dec 2001 14:25:45 +0000 (14:25 +0000)] 
* doc/bison.texinfo: Formatting changes.

22 years agoDon't store the token defs in a muscle, just be ready to output it
Akim Demaille [Sat, 29 Dec 2001 14:25:27 +0000 (14:25 +0000)] 
Don't store the token defs in a muscle, just be ready to output it
on command.  Now possible via `symbols'.  Fixes a memory leak.
* src/output.c (token_definitions_output): New.
(output_parser, header_output): Use it.
* src/reader.c (symbols_save): Remove.

22 years ago* src/bison.simple: Do not provide a default for YYSTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:25:08 +0000 (14:25 +0000)] 
* src/bison.simple: Do not provide a default for YYSTYPE and
YYLTYPE before the user's prologue.  Otherwise it's hardly... a
default.

22 years agoMid-rule actions are simply... ignored!
Akim Demaille [Sat, 29 Dec 2001 14:24:51 +0000 (14:24 +0000)] 
Mid-rule actions are simply... ignored!
* src/reader.c (readgram): Be sure to attach mid-rule actions to
the empty-rule associated to the dummy symbol, not to the host
rule.
* tests/actions.at (Mid-rule actions): New.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:24:35 +0000 (14:24 +0000)] 
Memory leak.
* src/reader.c (reader): Free grammar.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:21:23 +0000 (14:21 +0000)] 
Memory leak.
* src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
since it allocates it for each state, although only one is needed.
(allocate_storage): Do it here.

22 years ago* src/options.h, src/options.c (create_long_option_table): Rename
Akim Demaille [Sat, 29 Dec 2001 14:21:06 +0000 (14:21 +0000)] 
* src/options.h, src/options.c (create_long_option_table): Rename
as...
(long_option_table_new): this, with a clearer prototype.
(percent_table): Remove, unused,
* src/getargs.c (getargs): Adjust.

22 years ago* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
Akim Demaille [Sat, 29 Dec 2001 14:20:47 +0000 (14:20 +0000)] 
* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
* src/print.c, src/print_graph.c, src/state.h: Rename state_table
as states.

22 years ago* src/lalr.c (build_relations): Rename `states' as `states1'.
Akim Demaille [Sat, 29 Dec 2001 14:20:27 +0000 (14:20 +0000)] 
* src/lalr.c (build_relations): Rename `states' as `states1'.
Sorry, I don't understand exactly what it is, no better name...

22 years ago* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
Akim Demaille [Sat, 29 Dec 2001 14:20:13 +0000 (14:20 +0000)] 
* src/closure.c, src/conflicts.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: Rename rule_table
as rules.

22 years ago* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
Akim Demaille [Sat, 29 Dec 2001 14:19:46 +0000 (14:19 +0000)] 
* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
ago.

22 years ago* src/reader.c, src/reader.h (user_toknums): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:31 +0000 (14:19 +0000)] 
* src/reader.c, src/reader.h (user_toknums): Remove.
Adjust all users to use symbols[i]->user_token_number.

22 years ago* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:13 +0000 (14:19 +0000)] 
* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Adjust all users to use symbols[i]->prec or ->assoc.

22 years ago* src/reader.c, src/reader.h (tags): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:18:52 +0000 (14:18 +0000)] 
* src/reader.c, src/reader.h (tags): Remove.
Adjust all users to use symbols[i]->tag.

22 years ago* src/gram.h, src/gram.c (symbols): New, similar to state_table
Akim Demaille [Sat, 29 Dec 2001 14:18:32 +0000 (14:18 +0000)] 
* src/gram.h, src/gram.c (symbols): New, similar to state_table
and rule_table.
* src/reader.c (packsymbols): Fill this table.
Drop sprec.
* src/conflicts.c (resolve_sr_conflict): Adjust.
* src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
single table.
Use symbols[i]->tag instead of tags[i].

22 years ago* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
Akim Demaille [Sat, 29 Dec 2001 14:18:08 +0000 (14:18 +0000)] 
* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
In addition, put a comment in there, to replace...
* tests/regression.at (%union and C comments): Remove.

22 years ago* tests/regression.at (Web2c Actions): Blindly move the actual
Akim Demaille [Sat, 29 Dec 2001 14:17:56 +0000 (14:17 +0000)] 
* tests/regression.at (Web2c Actions): Blindly move the actual
output as expected output.  The contents *seem* right to me, but I
can't pretend reading perfectly parser tables...  Nonetheless, all
the other tests pass correctly, the table look OK, even though the
presence of `$axiom' is to be noted: AFAICS it is useless (but
harmless).

22 years ago* src/reader.c (readgram): Don't add the rule 0 if there were no
Akim Demaille [Sat, 29 Dec 2001 14:17:43 +0000 (14:17 +0000)] 
* src/reader.c (readgram): Don't add the rule 0 if there were no
rules read.  In other words, add it _after_ having performed
grammar sanity checks.
Fixes the `tests/regression.at (Invalid input: 1)' Failure.

22 years ago* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
Akim Demaille [Sat, 29 Dec 2001 14:17:29 +0000 (14:17 +0000)] 
* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
visible, and some states have now a different number.

22 years ago* src/reader.c (readgram): Bind the initial rule's lineno to that
Akim Demaille [Sat, 29 Dec 2001 14:17:18 +0000 (14:17 +0000)] 
* src/reader.c (readgram): Bind the initial rule's lineno to that
of the first rule.
* tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
(Solved SR Conflicts): Adjust rule 0's line number.

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.