e6970f2ed0
* tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and its argument. Reported by Peter Hmorsk.
Akim Demaille
2001-12-05 10:58:44 +00:00
076ab0334d
* src/reduce.c (reduce_grammar_tables): No longer disable the removal of useless rules via CPP but via if (0)', so that the compiler still check the code is valid. For instance, it should have noticed rline' no longer exists: use the `line' member of rule_t. * src/gram.c (dummy, rline): Remove, unused.
Akim Demaille
2001-12-05 09:43:53 +00:00
3843c413d0
* src/output.c (pack_vector): Use assert, not berror. * src/main.c (berror): Remove, unused.
Akim Demaille
2001-12-05 09:43:21 +00:00
4316896018
New experimental feature: if --verbose --trace output all the items of a state, not only its kernel. * src/print.c (print_core): If `trace_flag', then invoke closure before outputting the items of the state (print_core is no longer a correct name them). (print_results): Invoke new_closure/free_closure if needed.
Akim Demaille
2001-12-05 09:41:15 +00:00
b2872512f1
* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount. * src/closure.c, src/closure.h (itemsetsize): Rename as... (nitemset): for consistency with the rest of the project.
Akim Demaille
2001-12-05 09:41:01 +00:00
23cbcc6c19
* src/closure.c (print_closure): Improve. (closure): Use it for printing input and output.
Akim Demaille
2001-12-05 09:40:47 +00:00
03ec521cc5
* src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are indexed by nonterminals.
Akim Demaille
2001-12-05 09:40:31 +00:00
3a7456dd96
* src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of what it was!). * src/warshall.h: Remove accidental duplication of the content.
Akim Demaille
2001-12-05 09:40:16 +00:00
7a5350baa0
* src/output.c (action_row): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET, RESETBIT etc.
Akim Demaille
2001-12-05 09:39:02 +00:00
5e893e1c88
Add src/state.c to the repo.
Akim Demaille
2001-12-05 09:38:44 +00:00
d954473dee
Pessimize the code to simplify it: from now on, all the states have a valid SHIFTS, which NSHIFTS is possibly 0. * src/LR0.c (shifts_new): Be global and move to.. * src/state.c, src/state.h: here. * src/conflicts, src/lalr.c, src/output.c, src/print.c, * src/print_graph: Adjust.
Akim Demaille
2001-12-05 09:34:55 +00:00
9839bbe557
* src/state.h (SHIFT_DISABLE, SHIFT_IS_DISABLED): New. * src/conflicts.c: Use it. Restore a few missing if (!SHIFT_IS_DISABLED)' which were incorrectly `simplified''.
Akim Demaille
2001-12-05 09:32:23 +00:00
9f136c0720
* src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET, RESETBIT etc.
Akim Demaille
2001-12-05 09:32:00 +00:00
b608206eca
* src/state.h (SHIFT_SYMBOL): New. * src/conflicts.c: Use it to deobfuscate.
Akim Demaille
2001-12-05 09:31:46 +00:00
52afa962d1
* src/conflicts.c (count_sr_conflicts, count_rr_conflicts) (print_reductions): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET.
Akim Demaille
2001-12-05 09:31:23 +00:00
e74dc3213f
* src/conflicts.c (print_reductions): Arrays, not pointers. Use BITISSET.
Akim Demaille
2001-12-05 09:31:09 +00:00
9887c18aca
* src/lalr.c (transpose): Free the memory allocated to the argument, as it is replaced by the results by the unique caller. (build_relations): Merely invoke transpose: it handles the memory deallocation. Improve variable locality. Avoid variables used as mere abbreviations. (compute_lookaheads): Use arrays instead of pointers.
Akim Demaille
2001-12-05 09:28:27 +00:00
4d4f699ca4
* src/lalr.c (initialize_F): Improve variable locality. Avoid variables used as mere abbreviations.
Akim Demaille
2001-12-05 09:28:13 +00:00
80a6975034
* src/derives.c (print_derives): Display the ruleno. * src/lalr.c (initialize_F, transpose): Better variable locality to improve readability. Avoid variables used as mere abbreviations.
Akim Demaille
2001-12-05 09:28:00 +00:00
fe96109760
* src/lalr.c (traverse): Use arrays instead of pointers.
Akim Demaille
2001-12-05 09:27:47 +00:00
e3e4e81446
* src/nullable.c (set_nullable): Use a for loop to de-obfuscate the handling of squeue. symbol >= 0' is wrong now, use rule_table[ruleno].useful'.
Akim Demaille
2001-12-05 09:27:35 +00:00
630e182b7b
Because useless nonterminals are now kept alive (instead of being destroyed'), we now sometimes examine them, and store information related to them. Hence we need to know their number, and adjust memory allocations. * src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer static. * src/LR0.c (allocate_itemsets): The memory allocated to symbol_count' was used for two different purpose: once to count the number of occurrences of each symbol, and later reassigned to shift_symbol', containing the symbol that can be shifted from a given state. Deobfuscate, i.e., allocate, use and free symbol_count' here only, and... (new_itemsets): Allocate shift_symbol' here. (allocate_itemsets): symbol_count includes useless nonterminals. Make room for them. (free_storage): Use free', not `XFREE', for pointers that cannot be null.
Akim Demaille
2001-12-05 09:27:23 +00:00
81b51460c9
* src/nullable.c (set_nullable): Deobfuscate the handling of ritem. symbol >= 0' is wrong now, use rule_table[ruleno].useful'.
Akim Demaille
2001-12-05 09:27:08 +00:00
3067fbef53
* src/gram.c, src/gram.h (ritem_print): New. * src/gram.c (dummy): Remove, now there is actual code in gram.c. (This useless function was defined only to work around VMS linkers that can't handle compilation units with variables only). * src/reduce.c (dump_grammar): Use it to trace the construction of ritem.
Akim Demaille
2001-12-05 09:26:05 +00:00
5844cd0cfa
* src/reduce.c (reduce_grammar_tables): No longer disable the removal of useless rules via CPP but via if (0)', so that the compiler still check the code is valid. For instance, it should have noticed rline' no longer exists: use the `line' member of rule_t. * src/gram.c (dummy, rline): Remove, unused.
Akim Demaille
2001-12-05 09:24:35 +00:00
0fc1a97d9f
* src/output.c (pack_vector): Use assert, not berror. * src/main.c (berror): Remove, unused.
Akim Demaille
2001-12-05 09:24:21 +00:00
84b6f48351
New experimental feature: if --verbose --trace output all the items of a state, not only its kernel. * src/print.c (print_core): If `trace_flag', then invoke closure before outputting the items of the state (print_core is no longer a correct name them). (print_results): Invoke new_closure/free_closure if needed.
Akim Demaille
2001-12-05 09:24:06 +00:00
b6a70d99a6
* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount. * src/closure.c, src/closure.h (itemsetsize): Rename as... (nitemset): for consistency with the rest of the project.
Akim Demaille
2001-12-05 09:23:52 +00:00
66d35de779
* src/closure.c (print_closure): Improve. (closure): Use it for printing input and output.
Akim Demaille
2001-12-05 09:23:38 +00:00
5e5b240715
* src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are indexed by nonterminals.
Akim Demaille
2001-12-05 09:23:24 +00:00
aaf7be2c4b
* src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of what it was!). * src/warshall.h: Remove accidental duplication of the content.
Akim Demaille
2001-12-05 09:23:10 +00:00
766ffc1523
* src/output.c (action_row): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET, RESETBIT etc.
Akim Demaille
2001-12-05 09:22:14 +00:00
06a2f464b1
Pessimize the code to simplify it: from now on, all the states have a valid SHIFTS, which NSHIFTS is possibly 0. * src/LR0.c (shifts_new): Be global and move to.. * src/state.c, src/state.h: here. * src/conflicts, src/lalr.c, src/output.c, src/print.c, * src/print_graph: Adjust.
Akim Demaille
2001-12-05 09:21:55 +00:00
15ab9127f5
* src/state.h (SHIFT_DISABLE, SHIFT_IS_DISABLED): New. * src/conflicts.c: Use it. Restore a few missing if (!SHIFT_IS_DISABLED)' which were incorrectly `simplified''.
Akim Demaille
2001-12-05 09:21:15 +00:00
32f18df511
* src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET, RESETBIT etc.
Akim Demaille
2001-12-05 09:20:55 +00:00
19f8d30b9c
* src/state.h (SHIFT_SYMBOL): New. * src/conflicts.c: Use it to deobfuscate.
Akim Demaille
2001-12-05 09:20:41 +00:00
7b106ce5f0
* src/conflicts.c (count_sr_conflicts, count_rr_conflicts) (print_reductions): De-obfuscate using the good o' techniques: arrays not pointers, variable locality, BITISSET.
Akim Demaille
2001-12-05 09:20:22 +00:00
b5c15946a1
* src/conflicts.c (print_reductions): Arrays, not pointers. Use BITISSET.
Akim Demaille
2001-12-05 09:20:07 +00:00
4cecb5a248
* src/lalr.c (transpose): Free the memory allocated to the argument, as it is replaced by the results by the unique caller. (build_relations): Merely invoke transpose: it handles the memory deallocation. Improve variable locality. Avoid variables used as mere abbreviations. (compute_lookaheads): Use arrays instead of pointers.
Akim Demaille
2001-12-05 09:17:50 +00:00
76c97f6a39
* src/lalr.c (initialize_F): Improve variable locality. Avoid variables used as mere abbreviations.
Akim Demaille
2001-12-05 09:17:34 +00:00
e4ef7aa1c9
* src/derives.c (print_derives): Display the ruleno. * src/lalr.c (initialize_F, transpose): Better variable locality to improve readability. Avoid variables used as mere abbreviations.
Akim Demaille
2001-12-05 09:17:20 +00:00
3557477440
* src/lalr.c (traverse): Use arrays instead of pointers.
Akim Demaille
2001-12-05 09:17:05 +00:00
4b412c9eca
* src/nullable.c (set_nullable): Use a for loop to de-obfuscate the handling of squeue. symbol >= 0' is wrong now, use rule_table[ruleno].useful'.
Akim Demaille
2001-12-05 09:16:51 +00:00
fa7f94f217
Because useless nonterminals are now kept alive (instead of being destroyed'), we now sometimes examine them, and store information related to them. Hence we need to know their number, and adjust memory allocations. * src/reduce.c, src/reduce.h (nuseless_nonterminals): No longer static. * src/LR0.c (allocate_itemsets): The memory allocated to symbol_count' was used for two different purpose: once to count the number of occurrences of each symbol, and later reassigned to shift_symbol', containing the symbol that can be shifted from a given state. Deobfuscate, i.e., allocate, use and free symbol_count' here only, and... (new_itemsets): Allocate shift_symbol' here. (allocate_itemsets): symbol_count includes useless nonterminals. Make room for them. (free_storage): Use free', not `XFREE', for pointers that cannot be null.
Akim Demaille
2001-12-05 09:16:37 +00:00
d854cc9e5a
* src/nullable.c (set_nullable): Deobfuscate the handling of ritem. symbol >= 0' is wrong now, use rule_table[ruleno].useful'.
Akim Demaille
2001-12-05 09:16:22 +00:00
2dfb4daf9b
* src/gram.c, src/gram.h (ritem_print): New. * src/gram.c (dummy): Remove, now there is actual code in gram.c. (This useless function was defined only to work around VMS linkers that can't handle compilation units with variables only). * src/reduce.c (dump_grammar): Use it to trace the construction of ritem.
Akim Demaille
2001-12-05 09:16:07 +00:00
7d27c823de
* src/bison.simple (union yyalloc): Change member names to be the same as the stack names. (yyparse): yyptr is now union yyalloc *, not char *. (YYSTACK_RELOCATE): Likewise. This avoids a GCC warning, and may generate better code on some machines.
Paul Eggert
2001-12-04 14:10:51 +00:00
2729e106a7
(union yyalloc): Change member names to be the same as the stack names. (YYPOINTER): Remove. (yyparse): yyptr is now union yyalloc *, not char *. (YYSTACK_RELOCATE): Likewise. This avoids a GCC warning, and may generate better code on some machines.
Paul Eggert
2001-12-04 14:10:07 +00:00
cc904af579
* src/bison.simple (union yyalloc): Change member names to be the same as the stack names. (yyparse): yyptr is now union yyalloc *, not char *. (YYSTACK_RELOCATE): Likewise. This avoids a GCC warning, and may generate better code on some machines.
Paul Eggert
2001-12-04 14:06:43 +00:00
716c50b877
* src/bison.simple (union yyalloc): Change member names to be the same as the stack names. (YYPOINTER): Remove. (yyparse): yyptr is now union yyalloc *, not char *. (YYSTACK_RELOCATE): Likewise. This avoids a GCC warning, and may generate better code on some machines.
Paul Eggert
2001-12-04 14:06:06 +00:00
c2bea5f96f
* src/bison.simple (YYPOINTER): New macro. (YYSTACK_RELOCATE): Use it to avoid a GCC warning. (yystpcpy): Use prototype if __STDC__ is defined, not just if __cplusplus is defined.
Paul Eggert
2001-12-04 13:29:59 +00:00
f11966ffc5
(YYPOINTER): New macro. (YYSTACK_RELOCATE): Use it to avoid a GCC warning. (yystpcpy): Use prototype if __STDC__ is defined, not just if __cplusplus is defined.
Paul Eggert
2001-12-04 13:29:27 +00:00
9f41bcaae8
* src/bison.simple (YYPOINTER): New macro. (YYSTACK_RELOCATE): Use it to avoid a GCC warning. (yystpcpy): Use prototype if __STDC__ is defined, not just if __cplusplus is defined.
Paul Eggert
2001-12-04 13:28:51 +00:00
1ccbf4bb8b
(YYPOINTER): New macro. (YYSTACK_RELOCATE): Use it to avoid a GCC warning. (yystpcpy): Use prototype if __STDC__ is defined, not just if __cplusplus is defined.
Paul Eggert
2001-12-04 13:28:18 +00:00
2c8a9dfa1d
* configure.in (WARNING_CFLAGS): Add -Werror when possible. (CFLAGS): Do not include the WARNING_CFLAGS here, since GNU Gettext doesn't compile cleanly, and dies with -Werror. * src/Makefile.am, lib/Makefile.am, tests/atlocal.in (CFLAGS): Include WARNING_CFLAGS here. * lib/xstrdup.c: Include xalloc.h, so that xstrdup be declared before being defined.
Akim Demaille
2001-11-30 14:25:16 +00:00
a69f6fa569
* configure.in (WARNING_CFLAGS): Add -Werror when possible. (CFLAGS): Do not include the WARNING_CFLAGS here, since GNU Gettext doesn't compile cleanly, and dies with -Werror. * src/Makefile.am, lib/Makefile.am, tests/atlocal.in (CFLAGS): Include WARNING_CFLAGS here. * lib/xstrdup.c: Include xalloc.h, so that xstrdup be declared before being defined.
Akim Demaille
2001-11-30 14:23:47 +00:00
f4e421e6e4
* lib/quotearg.h (quotearg_n, quotearg_n_style): First arg is int, not unsigned. * lib/quotearg.c (quotearg_n, quotearg_n_style): Likewise. (SIZE_MAX, UINT_MAX): New macros. (quotearg_n_options): Abort if N is negative. Avoid overflow check on hosts where size_t is 64 bits and int is 32 bits, as overflow is impossible there. Fix off-by-one typo that caused unnecessary reallocation.
Akim Demaille
2001-11-30 14:04:24 +00:00
3757d84e90
* lib/quotearg.h (quotearg_n, quotearg_n_style): First arg is int, not unsigned. * lib/quotearg.c (quotearg_n, quotearg_n_style): Likewise. (SIZE_MAX, UINT_MAX): New macros. (quotearg_n_options): Abort if N is negative. Avoid overflow check on hosts where size_t is 64 bits and int is 32 bits, as overflow is impossible there. Fix off-by-one typo that caused unnecessary reallocation.
Akim Demaille
2001-11-30 14:04:22 +00:00
7093d0f541
Name space cleanup in generated parser. * doc/bison.texinfo (Bison Parser): Discuss system headers and their effect on the user name space. * src/bison.simple: (YYSTACK_ALLOC, YYSTACK_FREE, union yyalloc, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE): Do not define unless necessary, i.e. unless ! defined (yyoverflow) || defined (YYERROR_VERBOSE). (YYSIZE_T): New macro. Use it instead of size_t, to avoid infringing on user names when possible. (YYSTACK_USE_ALLOCA): Do not define; just use any existing defn. Simplify test for whather <alloca.h> exists. (<stdlib.h>): Include if we will use malloc, and if standard C or C++. (<stdio.h>): Include if YYDEBUG. (yymemcpy): Renamed from __yy_memcpy. Do not define unless ! defined (yyoverflow) && ! defined (yymemcpy). (yymemcpy, yyparse): Rename local variables as needed so that they all begin with 'yy'. (yystrlen, yystpcpy): New functions. (YY_DECL_NON_LSP_VARIABLES): Renamed from _YY_DECL_VARIABLES. All uses changed. (yyparse): size_t -> YYSIZE_T. Use yystrlen and yystpcpy instead of relying on string.h functions. Use YYSTACK_ALLOC and YYSTACK_FREE instead of malloc and free.
Akim Demaille
2001-11-30 14:00:14 +00:00
cac4f75e15
Add the missing ChangeLog of the previous checkin.
Akim Demaille
2001-11-30 13:15:39 +00:00
fc7ddd2818
* src/bison.simple (YYSTACK_FREE): Use do {;} while (0)' as empty if body instead of ;' to pacify GCC's warnings.
Akim Demaille
2001-11-30 13:14:10 +00:00
fd51e5ffa2
* src/bison.simple (YYSTYPE, YYLTYPE): Move their definitions before their first uses. (YYBISON, YYPURE): Move to the top of the output.
Akim Demaille
2001-11-30 11:23:29 +00:00
892a39950d
* src/bison.simple (YYSTACK_FREE): Use do {;} while (0)' as empty if body instead of ;' to pacify GCC's warnings.
Akim Demaille
2001-11-30 11:11:34 +00:00
9e55edfc29
* src/bison.simple (YYSTACK_FREE): Use do {;} while (0)' as empty if body instead of ;' to pacify GCC's warnings.
Akim Demaille
2001-11-30 11:11:08 +00:00
68f1e3edc3
Instead of mapping the LHS of unused rules to -1, keep the LHS valid, but flag the rules as invalid. * src/gram.h (rule_t): `useful' is a new member. * src/print.c (print_grammar): Adjust. * src/derives.c (set_derives): Likewise. * src/reader.c (packgram, reduce_output): Likewise. * src/reduce.c (reduce_grammar_tables): Likewise. * tests/reduce.at (Underivable Rules, Useless Rules): New.
Akim Demaille
2001-11-30 10:49:24 +00:00
d2d1b42b07
* src/reduce.c (reduce_output): Formatting changes. * src/print.c (print_results, print_grammar): Likewise. * tests/regression.at (Rule Line Numbers) (Solved SR Conflicts, Unresolved SR Conflicts): Adjust.
Akim Demaille
2001-11-30 10:49:01 +00:00
760b53a84b
* src/reduce.c (nonterminals_reduce): Instead of throwing away useless nonterminals, move them at the end of the symbol arrays. (reduce_output): Adjust. * tests/reduce.at (Useless Nonterminals): Adjust.
Akim Demaille
2001-11-30 10:48:14 +00:00
d39a6b7ca9
Instead of mapping the LHS of unused rules to -1, keep the LHS valid, but flag the rules as invalid. * src/gram.h (rule_t): `useful' is a new member. * src/print.c (print_grammar): Adjust. * src/derives.c (set_derives): Likewise. * src/reader.c (packgram, reduce_output): Likewise. * src/reduce.c (reduce_grammar_tables): Likewise. * tests/reduce.at (Underivable Rules, Useless Rules): New.
Akim Demaille
2001-11-30 10:46:08 +00:00
d287d66a69
* src/reduce.c (reduce_output): Formatting changes. * src/print.c (print_results, print_grammar): Likewise. * tests/regression.at (Rule Line Numbers) (Solved SR Conflicts, Unresolved SR Conflicts): Adjust.
Akim Demaille
2001-11-30 10:45:45 +00:00
ea451a17d7
* src/reduce.c (nonterminals_reduce): Instead of throwing away useless nonterminals, move them at the end of the symbol arrays. (reduce_output): Adjust. * tests/reduce.at (Useless Nonterminals): Adjust.
Akim Demaille
2001-11-30 10:45:28 +00:00