b756bb754c
* data/bison.simple (YYCOPY): Fix [] quoting problem in the non-GCC case.
Paul Eggert
2002-04-27 01:21:14 +00:00
0c76a0c911
(YYCOPY): Fix [] quoting problem in the non-GCC case.
Paul Eggert
2002-04-27 01:20:51 +00:00
71cd15d49b
(YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL): Define if we define YYSTYPE and YYLTYPE, respectively.
Paul Eggert
2002-04-27 01:10:59 +00:00
8c6d399ada
* data/bison.simple (YYSTYPE_IS_TRIVIAL, YYLTYPE_IS_TRIVIAL): Define if we define YYSTYPE and YYLTYPE, respectively.
Paul Eggert
2002-04-27 01:10:28 +00:00
2b7ed18a60
* src/scan-skel.l: Postprocess quadrigraphs. * src/reader.c (copy_character): New function, used to output single characters while replacing [' and ]' with quadrigraphs, to avoid troubles with M4 quotes. (copy_comment): Output characters with copy_character. (read_additionnal_code): Likewise. (copy_string2): Likewise. (copy_definition): Likewise. * tests/calc.at: Exercise M4 quoting.
Robert Anisko
2002-04-25 14:36:38 +00:00
34a89c5066
* tests/sets.at (AT_EXTRACT_SETS): Sed portability issue: no space between `!' and the command. Reported by Paul Eggert.
Akim Demaille
2002-04-25 10:30:27 +00:00
0dd1580afc
* tests/calc.at: Exercise prologue splitting. * data/bison.simple, data/bison.c++: Use b4_pre_prologue' and b4_post_prologue' instead of b4_prologue'. * src/output.c (prepare): Add the pre_prologue' and post_prologue' muscles. (output): Free pre_prologue_obstack and post_prologue_obstack. * src/files.h, src/files.c (attrs_obstack): Remove. (pre_prologue_obstack, post_prologue_obstack): New. * src/reader.c (copy_definition): Add a parameter to specify the obstack to fill, instead of using attrs_obstack unconditionally. (read_declarations): Pass pre_prologue_obstack to copy_definition if %union' has not yet been seen, pass post_prologue_obstack otherwise.
Robert Anisko
2002-04-24 16:22:57 +00:00
b98ec53ee4
Remove a dead item.
Akim Demaille
2002-04-24 12:04:53 +00:00
b4cbf822eb
Language independent actions.
Akim Demaille
2002-04-24 11:23:13 +00:00
c47dc59adc
Also pass --install to the second invocation of autoreconf, to let automake install its files.
Akim Demaille
2002-04-24 09:44:31 +00:00
83c1796f41
* data/bison.simple: Remove unnecessary commentary and white space differences from 1_29-branch. Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
Paul Eggert
2002-04-24 05:56:13 +00:00
cf44a9aea7
Remove unnecessary commentary and white space differences from 1_29-branch. Depend on YYERROR_VERBOSE, not defined (YYERROR_VERBOSE).
Paul Eggert
2002-04-24 05:55:48 +00:00
5c0a0514da
More.
Akim Demaille
2002-04-23 14:07:56 +00:00
1207eeacc2
* tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels. * tests/synclines.at (AT_TEST_SYNCLINE): Be robust to GCC's location with columns. * tests/conflicts.at (%nonassoc and eof): Don't use `error.h'. All reported by Paul Eggert.
Akim Demaille
2002-04-23 09:06:42 +00:00
8e521837dc
Use rm/mv -f. Suggested by Paul Eggert.
Akim Demaille
2002-04-23 08:33:24 +00:00
08e49d20f0
Replace @var{...(...}} with something else, as Texinfo 4.2 warns about that construct.
Paul Eggert
2002-04-22 22:10:22 +00:00
e91ff6ce3d
Point to an official beta.
Akim Demaille
2002-04-22 14:35:14 +00:00
78ab8f674f
* src/reduce.c (dump_grammar): Move to... * src/gram.h, src/gram.c (grammar_dump): here. Be sure to separate long item numbers. Don't read the members of a rule's prec if its nil.
Akim Demaille
2002-04-22 08:23:07 +00:00
133c20e252
* src/output.c (table_size, table_grow): New. (MAXTABLE): Remove, replace uses with table_size. (pack_vector): Instead of dying when the table is too big, grow it.
Akim Demaille
2002-04-22 08:22:39 +00:00
9515e8a7f8
* data/bison.simple (yyr1): Its type is that of a token number. * data/bison.c++ (r1_): Likewise. * tests/regression.at (Web2c Actions): Adjust.
Akim Demaille
2002-04-22 08:22:22 +00:00
23c5a17453
* src/reader.c (token_translations_init): 256 is now the default value for the error token, i.e., it will be assigned another number if the user assigned 256 to one of her tokens. (reader): Don't force 256 to error. * doc/bison.texinfo (Symbols): Adjust. * tests/torture.at (AT_DATA_HORIZONTAL_GRAMMAR) (AT_DATA_TRIANGULAR_GRAMMAR): Number the tokens as 1, 2, 3 etc. instead of 10, 20, 30 (which was used to `jump' over error (256) and undefined (2)).
Akim Demaille
2002-04-22 08:22:11 +00:00
5fbb0954b8
Propagate more token_number_t. * src/gram.h (token_number_as_item_number) (item_number_as_token_number): New. * src/output.c (GENERATE_OUTPUT_TABLE): New. Use it to create output_item_number_table and output_token_number_table. * src/LR0.c, src/derives.c, src/gram.c, src/gram.h, src/lalr.c, * src/lex.c, src/nullable.c, src/output.c, src/print.c, * src/print_graph.c, src/reader.c, src/reduce.c, src/state.h, * src/symtab.c, src/symtab.h: Use token_number_t instead of shorts.
Akim Demaille
2002-04-22 08:21:55 +00:00
69991a5827
more.
Akim Demaille
2002-04-19 14:52:00 +00:00
20c37f213a
More.
Akim Demaille
2002-04-19 14:14:11 +00:00
3ded9a63e3
* doc/bison.texinfo (Actions): Make clear that `|' is not the same as Lex/Flex'. (Debugging): More details about enabling the debugging features. (Table of Symbols): Describe $$, $n, @$, and @n. Suggested by Tim Josling.
Akim Demaille
2002-04-19 14:04:31 +00:00
e0c471a9e6
* doc/bison.texinfo: Remove the uses of the obsolete @refill.
Akim Demaille
2002-04-19 13:35:08 +00:00
6b44f458f2
More.
Akim Demaille
2002-04-19 08:41:46 +00:00
eaff5ee3c5
More ideas.
Akim Demaille
2002-04-10 11:03:39 +00:00
aef1ffd56f
More ideas.
Akim Demaille
2002-04-10 08:55:43 +00:00
51dec47b37
* tests/calc.at (_AT_CHECK_CALC_ERROR): Receive as argument the full stderr, and strip it according to the bison options, instead of composing the error message from different bits. This makes it easier to check for several error messages. Adjust all the invocations. Add an invocation exercising the error token. Add an invocation demonstrating a stupid error message. (_AT_DATA_CALC_Y): Follow the GCS: initial column is 1, not 0. Adjust the tests. Error message are for stderr, not stdout.
Akim Demaille
2002-04-09 19:20:10 +00:00
007a50a493
* src/gram.h, src/gram.c (error_token_number): Remove, use errtoken->number. * src/reader.c (reader): Don't specify the user token number (2) for $undefined, as it uselessly prevents using it. * src/gram.h (token_number_t): Move to... * src/symtab.h: here. (state_t.number): Is a token_number_t. * src/print.c, src/reader.c: Use undeftoken->number instead of hard coded 2. (Even though this 2 is not the same as above: the number of the undeftoken remains being 2, it is its user token number which might not be 2). * src/output.c (prepare_tokens): Rename the maxtok' muscle with user_token_number_max'. Output undef_token_number'. * data/bison.simple, data/bison.c++: Use them. Be sure to map invalid yylex return values to undef_token_number'. This saves us from gratuitous SEGV. * tests/conflicts.at (Solved SR Conflicts) (Unresolved SR Conflicts): Adjust. * tests/regression.at (Web2c Actions): Adjust.
Akim Demaille
2002-04-09 19:19:59 +00:00
06446ccf94
* data/bison.c++: s/b4_item_number_max/b4_rhs_number_max/. Adding #line. Remove the duplicate `typedefs'. (RhsNumberType): Fix the declaration and various other typos. Use __ofile__. * data/bison.simple: Use __ofile__. * src/scan-skel.l: Handle __ofile__.
Akim Demaille
2002-04-08 12:31:15 +00:00
62a3e4f0c5
* src/gram.h (item_number_t): New, the type of item numbers in RITEM. Note that it must be able to code symbol numbers as positive number, and the negation of rule numbers as negative numbers. Adjust all dependencies (pretty many). * src/reduce.c (rule): Remove this short *' pointer: use item_number_t. * src/system.h (MINSHORT, MAXSHORT): Remove. Include limits.h'. Adjust dependencies to using SHRT_MAX and SHRT_MIN. (shortcpy): Remove. (MAXTABLE): Move to... * src/output.c (MAXTABLE): here. (prepare_rules): Use output_int_table to output rhs. * data/bison.simple, data/bison.c++: Adjust. * tests/torture.at (Big triangle): Move the limit from 254 to 500. * tests/regression.at (Web2c Actions): Ajust. Trying with bigger grammars shows various phenomena: at 3000 (28Mb of grammar file) bison is killed by my system, at 2000 (12Mb) bison passes, but produces negative #line number, once fixed, GCC is killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of C), it passes. * src/state.h (state_h): Code input lines on ints, not shorts.
Akim Demaille
2002-04-08 11:46:26 +00:00
355e7c1cd1
* src/gram.h (item_number_t): New, the type of item numbers in RITEM. Note that it must be able to code symbol numbers as positive number, and the negation of rule numbers as negative numbers. Adjust all dependencies (pretty many). * src/reduce.c (rule): Remove this short *' pointer: use item_number_t. * src/system.h (MINSHORT, MAXSHORT): Remove. Include limits.h'. Adjust dependencies to using SHRT_MAX and SHRT_MIN. (shortcpy): Remove. (MAXTABLE): Move to... * src/output.c (MAXTABLE): here. (prepare_rules): Use output_int_table to output rhs. * data/bison.simple, data/bison.c++: Adjust. * tests/torture.at (Big triangle): Move the limit from 254 to 500. * tests/regression.at (Web2c Actions): Ajust. Trying with bigger grammars shows various phenomena: at 3000 (28Mb of grammar file) bison is killed by my system, at 2000 (12Mb) bison passes, but produces negative #line number, once fixed, GCC is killed while compiling 14Mb, at 1500 (6.7 Mb of grammar, 8.2Mb of C), it passes. * src/state.h (state_h): Code input lines on ints, not shorts.
Akim Demaille
2002-04-08 11:46:05 +00:00
bb88b0fc9e
* src/reduce.c (reduce_grammar): First reduce the nonterminals, and then the grammar.
Akim Demaille
2002-04-08 11:45:29 +00:00
9a636f47ce
* src/system.h: No longer using strndup.
Akim Demaille
2002-04-08 11:45:16 +00:00
0e95c1ddc1
More ideas.
Akim Demaille
2002-04-08 10:02:19 +00:00
680e8701b5
* src/muscle_tab.h (MUSCLE_INSERT_LONG_INT): New. * src/output.c (output_table_data): Return the longest number. (prepare_tokens): Output `token_number_max'). * data/bison.simple, data/bison.c++ (b4_sint_type, b4_uint_type): New. Use them to define yy_token_number_type/TokenNumberType. Use this type for yytranslate. * tests/torture.at (Big triangle): Push the limit from 124 to 253. * tests/regression.at (Web2c Actions): Adjust.
Akim Demaille
2002-04-07 17:44:59 +00:00
72a23c9797
Use lib/hash for the symbol table. * src/gram.c (ntokens): Initialize to 1, to reserve a slot for EOF. * src/lex.c (lex): Set the `number' member of new terminals. * src/reader.c (bucket_check_defined, bucket_make_alias) (bucket_check_alias_consistence, bucket_translation): New. (reader, grammar_free, readgram, token_translations_init) (packsymbols): Adjust. (reader): Number the predefined tokens. * src/reduce.c (inaccessable_symbols): Just use hard coded numbers for predefined tokens. * src/symtab.h (bucket): Remove all the hash table related members. * src/symtab.c (symtab): Replace by... (bucket_table): this. (bucket_new, bucket_free, hash_compare_bucket, hash_bucket) (buckets_new, buckets_do): New.
Akim Demaille
2002-04-07 17:43:21 +00:00
03b31c0ce8
* src/gram.h (rule_s): prec and precsym are now pointers to the bucket giving the priority/associativity. Member `associativity' removed: useless. * src/reduce.c, src/conflicts.c: Adjust.
Akim Demaille
2002-04-07 17:42:31 +00:00
8b3df748a3
* src/lalr.c, src/LR0.c, src/closure.c, src/gram.c, src/reduce.c: Properly escape the symbols' TAG when outputting them.
Akim Demaille
2002-04-07 17:42:12 +00:00
e601aa1d35
* src/lalr.h (LA): Is a bitsetv, not bitset*.
Akim Demaille
2002-04-07 17:41:59 +00:00
b0299a2ebb
* src/lalr.h, src/lalr.c (LAruleno): Replace with... (LArule): this, which is an array to rule_t*. * src/print.c, src/conflicts.c: Adjust.
Akim Demaille
2002-04-07 17:41:44 +00:00
d7e1f00c13
* src/gram.h (rule_t): Rename number' as user_number'. `number' is a new member. Adjust dependencies. * src/reduce.c (reduce_grammar_tables): Renumber rule_t.number.
Akim Demaille
2002-04-07 17:41:28 +00:00
cc9305dd68
As a result of the previous patch, it is no longer needed to reorder ritem itself. * src/reduce.c (reduce_grammar_tables): Don't sort RITEM.
Akim Demaille
2002-04-07 17:41:08 +00:00
b0940840ac
Be sure never to walk through RITEMS, but use only data related to the rules themselves. RITEMS should be banished. * src/output.c (output_token_translations): Rename as... (prepare_tokens): this. In addition to translate', prepare the muscles tname' and `toknum', which were handled by... (output_rule_data): this. Remove, and move the remainder of its outputs into... (prepare_rules): this new routines, which also merges content from (output_gram): this. (prepare_rules): Be sure never to walk through RITEMS. (output_stos): Rename as... (prepare_stos): this. (output): Always invoke prepare_states, after all, just don't use it in the output if you don't need it.
Akim Demaille
2002-04-07 17:40:56 +00:00
643a599471
* src/LR0.c (new_state): Display nstates' as the name of the newly created state. Adjust to initialize first_state and last_state if needed. Be sure to distinguish the initial from the final state. (new_states): Create the itemset of the initial state, and use new_state. * src/closure.c (closure): Now that the initial state has its items properly set, there is no need for a special case when creating ruleset'. As a result, now the rule 0, reducing to $axiom, is visible in the outputs. Adjust the test suite. * tests/conflicts.at (Solved SR Conflicts) (Unresolved SR Conflicts): Adjust. * tests/regression.at (Web2c Report, Rule Line Numbers): Idem. * tests/conflicts.at (S/R in initial): New.
Akim Demaille
2002-04-07 17:40:16 +00:00
b4c4ccc2b3
* src/LR0.c (allocate_itemsets): Don't loop over ritem: loop over the RHS of the rules. * src/output.c (output_gram): Likewise.
Akim Demaille
2002-04-07 17:38:37 +00:00
bba97eb2c1
* src/gram.h (rule_t): lhs' is now a pointer to the symbol's bucket. Adjust all dependencies. * src/reduce.c (nonterminals_reduce): Don't forget to renumber the number' of the buckets too. * src/gram.h: Include symtab.h'. (associativity): Move to... * src/symtab.h: here. No longer include gram.h'.
Akim Demaille
2002-04-07 17:38:22 +00:00
c3b407f430
* src/gram.h, src/gram.c (rules_rhs_length): New. (ritem_longest_rhs): Use it. * src/gram.h (rule_t): number' is a new member. * src/reader.c (packgram): Set it. * src/reduce.c (reduce_grammar_tables): Move the useless rules at the end of rules', and count them out of nrules'. (reduce_output, dump_grammar): Adjust. * src/print.c (print_grammar): It is no longer needed to check for the usefulness of a rule, as useless rules are beyond nrules + 1'. * tests/reduce.at (Reduced Automaton): New test.
Akim Demaille
2002-04-07 17:36:38 +00:00
a31932aa0b
* src/gram.h, src/gram.c (rules_swap): New. (ritem_longest_rhs): Use it. * src/gram.h (rule_t): number' is a new member. * src/reader.c (packgram): Set it. * src/reduce.c (reduce_grammar_tables): Move the useless rules at the end of rules', and count them out of nrules'. (reduce_output, dump_grammar): Adjust. * src/print.c (print_grammar): It is no longer needed to check for the usefulness of a rule, as useless rules are beyond nrules + 1'. * tests/reduce.at (Reduced Automaton): New test.
Akim Demaille
2002-04-07 16:39:49 +00:00
aa96fda183
* src/output.c (output_rule_data): Fix various range errors: `rules' starts at 1, not 0.
Akim Demaille
2002-04-07 16:29:32 +00:00
588db0a892
Remove the useless rules from the parser. * src/gram.h, src/gram.c (rules_swap, rule_rhs_length): New. (ritem_longest_rhs): Use the latter. * src/gram.h (rule_t): number' is a new member. * src/reader.c (packgram): Set it. * src/reduce.c (reduce_grammar_tables): Move the useless rules at the end of rules', and count them out of nrules'. (reduce_output, dump_grammar): Adjust. * src/print.c (print_grammar): It is no longer needed to check for the usefulness of a rule, as useless rules are beyond nrules + 1'. * tests/reduce.at (Reduced Automaton): New test. Changes in version 1.49a: * False Token not used' report fixed. On a grammar such as /* Allocate input grammar variables for bison, This file is part of Bison, the GNU Compiler Compiler. int error_token_number; /*------------------------. | Dump RITEM for traces. | ------------------------*/ size_t ritem_longest_rhs (void) { int i; return max; } typedef struct rule_s { short lhs; short *rhs; short prec; extern int error_token_number; /* Dump RITEM for traces. */ void ritem_print PARAMS ((FILE *out)); fprintf (out, "%snn", _("Grammar")); fprintf (out, " %sn", _("Number, Line, Rule")); for (i = 1; i < nrules + 1; i++) fputs ("nn", out); while (p) { bucket *ruleprec = p->ruleprec; rules[ruleno].lhs = p->sym->number; rules[ruleno].rhs = ritem + itemno; rules[ruleno].line = p->line; bitset_set (V1, rules[i].precsym); } static void reduce_grammar_tables (void) { if (nuseless_productions > 0) { int pn; for (pn = 1; pn < nrules + 1; pn++) rules[pn].useful = bitset_test (P, pn); } } { int i; fprintf (out, "%snn", _("Useless rules:")); fputs ("nn", out); } } fprintf (out, "nn"); fprintf (out, "Rulesn-----nn"); fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]n"); { int rhs_count = 0; /* Find the last RHS index in ritems. */ } fprintf (out, "nn"); fprintf (out, "Rules interpretedn-----------------nn"); { fprintf (out, "%-5d %s :", i, symbols[rules[i].lhs]->tag); for (r = rules[i].rhs; *r >= 0; r++) ## ------------------- ## ## Underivable Rules. ## ## ------------------- ##
Akim Demaille
2002-04-07 16:28:39 +00:00
11652ab3dc
* src/reduce.c (inaccessable_symbols): Fix a buglet: because of a lacking `+ 1' to nrules, Bison reported as useless a token if it was used solely to set the precedence of the last rule...
Akim Demaille
2002-04-07 15:30:42 +00:00
26b23c1a49
* data/bison.c++, data/bison.simple: Don't output the current file name in #line, to avoid useless diffs between two identical outputs under different names.
Akim Demaille
2002-04-07 15:30:31 +00:00
18bcecb07d
* src/closure.c, src/print.c, src/reader.c, src/reduce.c: Normalize loops to using < nrules + 1', not <= nrules'.
Akim Demaille
2002-04-07 15:30:20 +00:00
9901390012
* src/closure.c, src/derives.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: Let rule_t.rhs point directly to the RHS, instead of being an index in RITEMS.
Akim Demaille
2002-04-07 15:29:36 +00:00
e966383bf4
* doc/bison.texinfo: Update copyright date. (Rpcalc Lexer, Symbols, Token Decl): Don't assume ASCII. (Symbols): Warn about running Bison in one character set, but compiling and/or running in an incompatible one. Warn about character code 256, too.
Paul Eggert
2002-04-04 21:34:34 +00:00
8d6c48b983
Merge fixes from Debian bison_1.34-1.diff. * configure.in (AC_PREREQ): 2.53.
Paul Eggert
2002-03-20 22:47:21 +00:00
b4e4c0d14a
(AC_PREREQ): 2.53.
Paul Eggert
2002-03-20 22:46:59 +00:00
679eba1067
Merge fixes from Debian bison_1.34-1.diff.
Paul Eggert
2002-03-20 22:45:06 +00:00
0e96bb2121
(AC_PREREQ): 2.53.
Paul Eggert
2002-03-20 22:44:00 +00:00
3c9127d55c
("Conflict in state %d between rule %d and token %s resolved as %s.\n"): Fix typo by replacing "%s" with "%d'. From Debian bison_1.34-1.diff.
Paul Eggert
2002-03-20 22:00:51 +00:00