217598dadc
In verbose parse error message, don't report `error' as an expected token. * tests/actions.at (Printers and Destructors): Adjust. * tests/calc.at (Calculator $1): Adjust. * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose error message, do not report the parser accepts the error token in that state.
Akim Demaille2002-07-30 11:56:44 +00:00
e8832397ea
Report rules which are never reduced by the parser: those hidden by conflicts. * src/LR0.c (save_reductions): Don't make the final state too different: save its reduction (accept) instead of having a state without any action (no shift or goto, no reduce). Note: the final state is now a `regular'' state, i.e., the parsers now contain reduce 0' as default reduction. Nevertheless, since they decide to `accept' when yystate = final_state, they still will not reduce rule 0. * src/print.c (print_actions, print_reduction): Adjust. * src/output.c (action_row): Track reduced rules. (token_actions): Report rules never reduced. * tests/conflicts.at, tests/regression.at: Adjust.
Akim Demaille2002-07-30 11:06:50 +00:00
caf23d249c
`stage' was accidently included in a previous patch. Initiate its autoconfiscation. * configure.in: Look for malloc.h and sys/times.h. * src/main.c (stage): Adjust. Report only when trace_flag.
Akim Demaille2002-07-30 08:15:04 +00:00
88bce5a2ef
Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $. * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as... (endtoken, accept): these. * src/reader.c (reader): Set endtoken's default tag to "$end". Set undeftoken's tag to "$undefined" instead of "$undefined.". * doc/bison.texinfo (Table of Symbols): Mention $accept and $end. Adjust.
Akim Demaille2002-07-29 17:30:33 +00:00
1bfb97dba5
* src/reduce.c (reduce_grammar): When the language is empty, complain about the start symbol, not the axiom. Use its location. * tests/reduce.at (Empty Language): New.
Akim Demaille2002-07-29 17:28:56 +00:00
fc5734fe23
* src/reader.h, src/reader.c (gram_error): ... can't get yycontrol without making too strong assumptions on the parser itself. * src/output.c (prepare_tokens): Use the real 0th value of token_translations instead of `0'. * src/parse-gram.y (yyerror): Don't rely on yycontrol being visible here. * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc for the time being: %locations ought to provide it to yyerror.
Akim Demaille2002-07-26 06:25:35 +00:00
3650b4b8dd
* src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1. * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./. * tests/regression.at (Web2c Actions): Adjust.
Akim Demaille2002-07-26 06:24:11 +00:00
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.
Akim Demaille2002-07-25 21:21:02 +00:00
4a2a22f4c0
* data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg) (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls) (b4_c_knr_arg_decl): New. * data/yacc.c: Use it to define yysymprint, yydestruct, and yyreport_parse_error.
Akim Demaille2002-07-25 19:34:54 +00:00
fae437e835
* doc/bison.texinfo: Properly set the `header'' part. Use @dircategory `GNU programming tools'' as per Texinfo's documentation. Use @copying.
Akim Demaille2002-07-09 17:01:42 +00:00
1a715ef2fc
* lib/quotearg.h: Protect against multiple inclusions. * src/location.h (location_t): Add a file' member. (LOCATION_RESET, LOCATION_PRINT): Adjust. * src/complain.c (warn_at, complain_at, fatal_at): Drop error_one_per_line' support.
Akim Demaille2002-07-09 16:24:57 +00:00
a5d5099417
* src/complain.h, src/complain.c (warn, complain): Remove, unused. * src/reader.c (lineno): Remove. Adjust all dependencies. (get_merge_function): Take a location and use complain_at. * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise. * tests/regression.at (Invalid inputs, Mixing %token styles): Adjust.
Akim Demaille2002-07-09 15:54:39 +00:00
b275314e2d
* src/parse-gram.y (rules_or_grammar_declaration): Add an error recovery rule, and forbid extensions when --yacc. (gram_error): Use complain_at. * src/reader.c (reader): Exit if there were parse errors.
Akim Demaille2002-07-09 14:48:01 +00:00
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.
Akim Demaille2002-07-03 06:52:02 +00:00
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'.
Akim Demaille2002-07-03 06:51:43 +00:00
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.
Akim Demaille2002-07-02 13:51:27 +00:00
26e0cadc37
* src/scan-gram.l (<SC_ESCAPED_CHARACTER>): Convert to unsigned char, so that negative chars don't collide with $.
Paul Eggert2002-07-01 08:37:14 +00:00
e68d4575b3
(<SC_ESCAPED_CHARACTER>): Convert to unsigned char, so that negative chars don't collide with $.
Paul Eggert2002-07-01 08:36:37 +00:00
1154ccedaf
Have the GLR tests be warning' checked, and fix the warnings. * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG (yyuserAction, yyreportAmbiguity): Use' all the arguments. (yyremoveDeletes): yyi' and yyj' are size_t. Use YYFPRINTF when under if (YYDEBUG) to avoid empty if' bodies. (yyaddDeferredAction): static. (yyglrReduce): yyi, yyk, amd yyposn are size_t. (yyreportParseError): yyprefix is const. yytokenp is used only when verbose. (yy__GNUC__): Replace with __GNUC__. (yypdumpstack): yyi is size_t. (yypreference): Un-yy local variables and arguments, to avoid clashes with yyr1'. Anyway, we are not in the user name space. (yytname_size): be an int, as is compared with ints. * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New. Use them. * tests/cxx-gram.at: Use quotation to protect $1. Use AT_COMPILE to enable warnings hunts. Prototype yylex and yyerror. Use' argc. Include string.h', not `strings.h'. Produce and prototype stmtMerge only when used. yylex takes a location.
Akim Demaille2002-06-30 17:35:06 +00:00
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.
Akim Demaille2002-06-30 17:34:52 +00:00
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.
Akim Demaille2002-06-30 17:34:31 +00:00
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.
Akim Demaille2002-06-30 17:30:29 +00:00
e5fb671032
* src/vcg.c (quote): Use slot 2, since we often pass symbol tag escaped in slot 0.
Akim Demaille2002-06-30 17:30:09 +00:00
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'.
Akim Demaille2002-06-30 17:29:36 +00:00
5a08f1ce21
Make the test suite pass with warnings checked. * tests/actions.at (Printers and Destructors): Improve. Avoid unsigned vs. signed issues. * tests/calc.at: Don't exercise the scanner here, do it... * tests/input.at (Torturing the Scanner): here.
Akim Demaille2002-06-30 17:27:14 +00:00
720623af84
* data/glr.c: Correct typo in Emacs-mode directive. Slightly reorganize first lines parallel to yacc.c.
Paul Hilfinger2002-06-28 22:42:58 +00:00
676385e29c
Initial check-in introducing experimental GLR parsing. See entry in ChangeLog dated 2002-06-27 from Paul Hilfinger for details.
Paul Hilfinger2002-06-28 02:26:44 +00:00
1ae7286376
* data/bison.simple (b4_symbol_actions): New, replaces... (b4_symbol_destructor, b4_symbol_printer): these. (yysymprint): Be sure to call YYPRINT only for tokens, and using user token numbers.
Akim Demaille2002-06-20 11:46:59 +00:00
1a31ed21b1
* src/symtab.h, src/symtab.c (symbol_type_set) (symbol_destructor_set, symbol_precedence_set): The location is the last argument. Adjust all callers.
Akim Demaille2002-06-20 11:20:25 +00:00
e776192e4f
* src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser internals. * src/reader.h, src/reader.c (grammar_current_rule_prec_set): Takes a location. * src/symtab.h, src/symtab.c (symbol_class_set) (symbol_user_token_number_set): Likewise. Adjust all callers. Promote complain_at. * tests/input.at (Type Clashes): Adjust.
Akim Demaille2002-06-20 11:10:56 +00:00
5c1180b3c4
* data/bison.simple (YYLEX): Fix the declaration when %pure-parser.
Akim Demaille2002-06-20 10:29:27 +00:00
e317006080
* data/bison.simple (yysymprint): Don't print the token number, just its name. * tests/actions.at (Destructors): Rename as... (Printers and Destructors): this. Also exercise %printer.
Akim Demaille2002-06-20 09:47:44 +00:00
253862fd4c
* data/bison.simple (YYDSYMPRINT): New. Use it to remove many of the #if YYDEBUG/if (yydebug).
Akim Demaille2002-06-20 09:22:56 +00:00
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!).
Akim Demaille2002-06-20 09:08:37 +00:00
4f25ebb043
* src/scan-gram.l: Complete the scanner with the missing patterns to pacify Flex. Use quote' and symbol_tag_get' where appropriate.
Akim Demaille2002-06-20 07:19:13 +00:00
93b68a0e09
* tests/actions.at (Destructors): Augment to test locations. * data/bison.simple (yydestructor): Pass it the current location if locations are enabled. Prototype only when __STDC__ or C++. Change the argument names to move into the yy name space: there is user code here.
Akim Demaille2002-06-19 12:03:22 +00:00
7431029172
* data/bison.simple (b4_pure_if): New. Use it instead of #ifdef YYPURE.
Akim Demaille2002-06-19 10:00:24 +00:00
58612f1de0
* data/bison.simple (m4_location_if): New. Use it instead of #ifdef YYLSP_NEEDED.
Akim Demaille2002-06-19 09:07:36 +00:00
f25bfb75aa
Prepare @$ in %destructor, but currently don't bind it in the skeleton, as %location use is not cleaned up yet. * src/scan-gram.l (handle_dollar, handle_destructor_at) (handle_action_at): New. (handle_at, handle_action_dollar, handle_destructor_dollar): Take a braced_code_t and a location as additional arguments. (handle_destructor_dollar): Instead of requiring b4_eval', just unquote one when outputting b4_dollar_dollar'. Adjust callers. * data/bison.simple (b4_eval): Remove. (b4_symbol_destructor): Adjust. * tests/input.at (Invalid @n): Adjust.
Akim Demaille2002-06-19 08:22:49 +00:00
c732d2c6dc
* doc/bison.texinfo: Document ability to have multiple prologue sections.
Akim Demaille2002-06-19 07:46:11 +00:00
8c165d891d
* src/files.c (compute_base_names): When computing the output file names from the input file name, strip the directory part.
Akim Demaille2002-06-18 12:39:54 +00:00
ca98bf5758
* data/bison.simple.new: Comment changes. Reported by Andreas Schwab.
Akim Demaille2002-06-18 11:37:20 +00:00
0bfb02fff7
* data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that there are no label yyoverflowlab' defined but not used' warnings when yyoverflow is defined.
Akim Demaille2002-06-18 10:00:36 +00:00
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.
Akim Demaille2002-06-18 09:55:35 +00:00
5719c1092f
and Akim Demaille <[email protected]> * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy what's left on the stack when the error recovery hits EOF. * tests/actions.at (Destructors): Complete to exercise this case.
Akim Demaille2002-06-18 09:12:58 +00:00