Commit Graph

2286 Commits

Author SHA1 Message Date
Akim Demaille
df09ef2e8f * src/symtab.c (symbol_check_alias_consistency): Also check
type names, destructors, and printers.
Reported by Alexandre Duret-Lutz.
Recode the handling of associativity and precedence in terms
of symbol_precedence_set.
Accept no redeclaration at all, not even equal to the previous
value.
(redeclaration): New.
Use it to factor redeclaration complaints.
(symbol_make_alias): Don't set the type of the alias, let
symbol_check_alias_consistency do it as for other features.
* src/symtab.h (symbol): Add new member prec_location, and
type_location.
* src/symtab.c (symbol_precedence_set, symbol_type_set): Set them.
* tests/input.at (Incompatible Aliases): New.
2004-10-11 09:03:55 +00:00
Paul Eggert
2ed24dd8c7 Regenerate. 2004-10-09 18:08:21 +00:00
Paul Eggert
146bc99dcf .cvsignore fixes to accommodate gnulib changes,
and the practice of naming build directories "_build".
2004-10-09 17:59:04 +00:00
Paul Eggert
7d1be3bdff Add "*_gl.m4". 2004-10-09 17:57:39 +00:00
Paul Eggert
bd22e8363a Add getopt_.h, xalloc-die.c. 2004-10-09 17:57:21 +00:00
Paul Eggert
13c29075c5 Add "_*". Sort. 2004-10-09 17:57:06 +00:00
Akim Demaille
e503aa60d5 * src/parse-gram.y (add_param): Fix the truncation of trailing
spaces.
2004-10-06 15:52:24 +00:00
Akim Demaille
2c0ddf03ab Word changes. 2004-10-05 09:58:58 +00:00
Akim Demaille
8a8dc872fa Regen. 2004-10-05 08:41:44 +00:00
Akim Demaille
b4a2033855 In Bison 1.875's yacc.c, YYLLOC_DEFAULT was called regardless
whether the reducion was empty or not.  This leaves room to
improve the use of YYLLOC_DEFAULT in such a case.
lalr1.cc is still experimental, so changing this is acceptable.
And finally, there are probably not many users who changed the
handling of locations in GLR, so changing is admissible too.
* data/glr.c, data/lalr1.cc, data/yacc.c (YYLLOC_DEFAULT): On an
empty reduction, set @$ to an empty location ending the previously
stacked symbol.
Adjust uses to make sure the code is triggered on empty
reductions.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust the
expected output: empty reductions have empty locations.
2004-10-05 08:39:17 +00:00
Akim Demaille
f85a5e6f4b * data/lalr1.cc: Move towards a more standard C++ coding style
for templates: Class < T > -> Class<T>.
2004-09-29 12:49:50 +00:00
Akim Demaille
b203fc2c07 * data/lalr1.cc: Reinstall the former ctor, for sake of
compatibility, but warn it will be removed.
Move towards a more standard C++ coding style (i.e., type *var ->
type* var).
2004-09-29 12:41:58 +00:00
Paul Eggert
3fee967f83 Fix comment in latest checkin; there wasn't a bug. 2004-09-27 22:06:45 +00:00
Paul Eggert
5b7e1e73e6 * src/parse-gram.y (add_param): Fix bug where NUL was mishandled. 2004-09-27 22:04:13 +00:00
Paul Eggert
ead9e56eb2 (add_param): Fix bug where NUL was mishandled.
Avoid the use of strchr to avoid future recurrences.
2004-09-27 22:03:42 +00:00
Akim Demaille
0dcca5c22f * data/yacc.c (YY_LOCATION_PRINT): Fix its default declaration. 2004-09-27 07:47:47 +00:00
Akim Demaille
6dde1c82cd * data/lalr1.cc (b4_parse_param_decl_1): New.
(b4_parse_param_decl): Use it to have different names bw attribute
and argument names.
(b4_cc_constructor_call): Likewise.
2004-09-27 07:45:09 +00:00
Akim Demaille
b233d5558f * src/parse-gram.y (add_param): Strip the leading and trailing
blanks from a formal argument declaration.
(YY_LOCATION_PRINT): New.
2004-09-27 07:42:04 +00:00
Akim Demaille
619404e3fd * data/c.m4 (b4_yysymprint_generate): Move the YYINPUT invocation
after the location.
2004-09-24 14:14:58 +00:00
Akim Demaille
dd8d90221a * doc/bison.texinfo (Table of Symbols): Sort. 2004-09-24 11:55:40 +00:00
Akim Demaille
0092f063af * data/yacc.c, data/glr.c (b4_at_dollar, b4_dollar_dollar): Remove
the useless parentheses.
Suggested by Paul Eggert.
2004-09-21 06:59:19 +00:00
Akim Demaille
451364edb1 Let the initial-action act on the look-ahead, and use it for the
"initial push" (corresponding to an hypothetical beginning-of-file).
And let lalr1.cc honor %initial-action.
* doc/bison.texinfo (Initial Action Decl): Clarify, and add an
example.
* data/lalr1.cc (Parser::initlocation_): Remove, bad experiment.
(Parser::Parser): Remove the ctor that used to initialize it.
(Parser::parse): Like in the other skeletons, issue the "starting
parse" message before any action.
Honor %initial-action.
Initialize the stacks with the lookahead.
* data/yacc.c: Let $$ and @$ in %initial-action designate the
look-ahead.
Push them in the stacks.
* tests/actions.at, tests/calc.at: Adjust the C++ ctor invocations.
2004-09-20 15:25:25 +00:00
Akim Demaille
18d192f0ea * doc/bison.texinfo (Initial Action Decl): New. 2004-09-20 14:29:31 +00:00
Akim Demaille
b8458aa5cc * data/yacc.c (YY_LOCATION_PRINT): Use YYLTYPE_IS_TRIVIAL as a
clearer criterion to define it.
(parse): Initialize the initial location when YYLTYPE_IS_TRIVIAL.
When reducing on an empty RHS, use the latest stacked location as
location.
yylloc is not always available.
* data/glr.c: Likewise.
Also, honor initial-actions.
2004-09-20 12:24:45 +00:00
Akim Demaille
3fc16193d9 * data/yacc.c (YY_LOCATION_PRINT): New.
Define when we know YYLTYPE's structure, i.e., when the default
YYLLOC_DEFAULT is used.
* data/c.m4 (b4_yysymprint_generate): Use it.
* data/lalr1.cc (YYLLOC_DEFAULT): Stop relying on the initial
value of the result.
(error_start_): Replace with...
(error_range_): this location array.
This allows to replace code relying on the implementation of
locations by portable code.
* data/yacc.c (yylerrsp): Replace with...
(yyerror_range): this.
Every time a token is popped, update yyerror_range[0], to have an
accurate location for the error token.
* data/glr.c (YY_LOCATION_PRINT): New.
(yyprocessOneStack): Fix an invocation of YY_SYMBOL_PRINT:
deference a pointer.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): No longer
report the location in %printers.
* src/scan-skel.l: Instead of abort, report error messages to ease
understanding skeleton scanning failures.
2004-09-20 09:32:55 +00:00
Akim Demaille
ecfe33e799 * data/lalr1.cc (Stack::Iterator, Stack::ConstIterator): Rename as...
(iterator, const_iterator): these, to be more in the C++ spirit.
Also, return reverse iterators so that when displaying the stack
we display its bottom first.
(Parser::stack_print_, Parser::reduce_print_): Match the messages
from yacc.c.
We should probably use vector here though.
2004-09-16 14:41:18 +00:00
Akim Demaille
1576d44dce Have more complete shift traces.
* data/yacc.c, data/lalr1.c, data/glr.c: Use YY_SYMBOL_PRINT
to report Shifts instead of ad hoc YYDPRINTF invocations,
including for the error token.
* data/lalr1.cc (symprint_): Output the location.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): In C++, don't
output the location within the %printer.
Activate GLR tests, at least to make sure they compile properly.
They still don't pass though.
* tests/calc.at: Adjust expect verbose output, since now "Entering
state..." is on a different line than the "Shifting" message.
2004-09-16 14:14:27 +00:00
Akim Demaille
9c66f418c4 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Move the
Bison directive from the Bison file to the invocation of this
macro, so that these directives are passed to
AT_BISON_OPTION_PUSHDEFS to get correct help macros.
Use these helping macros (e.g., AT_LOC, AT_VAL and so forth).
Move the AT_SETUP/AT_CLEANUP outside, to report as test title
the extra Bison directives instead of the whole series.
Change the grammar so that there are recoverable errors, and
unrecoverable errors.  Now we can have the parser give up before
consuming the whole input.  As a result we now can observe that
the lookahead is freed when needed.
Change the parser source to parse argv[1] instead of a hard coded
string.
Simplify yylex, and give a value and location to EOF.
Simplify some invocations of AT_CHECK_PRINTER_AND_DESTRUCTOR that
passed directives already coded in the file.
Add some tests to check the location of "error".
For some tests, the C++ parser is correct, and not yacc.c.
For other tests, they provide different, but unsatisfying, values,
so keep the C++ value so that at least one parser is "correct"
according to the test suite.
(Actions after errors): Remove, this is subsumed by the
AT_CHECK_PRINTER_AND_DESTRUCTOR series.
2004-09-08 14:36:25 +00:00
Akim Demaille
52d5733ff0 * data/lalr1.cc: Adjust the indentation of the labels.
Use it.
2004-09-06 14:32:05 +00:00
Akim Demaille
a0e68930d8 * data/yacc.cc, data/glr.cc (yydestruct): Accept an additional
argument, an informative message.
Call YY_SYMBOL_PRINT.
Adjust all callers: integrate the associated YY_SYMBOL_PRINT.
* data/lalr1.cc (destruct_): Likewise.
In addition, no longer depend on b4_yysymprint_generate and
b4_yydestruct_generate to generate these functions, do it "by
hand".
2004-09-06 10:29:52 +00:00
Akim Demaille
e757bb10bc * data/glr.c, data/lalr1.cc, data/yacc.c: When YYABORT was
invoked, yydestruct the lookahead.
* tests/calc.at (Calculator $1): Update the expected lengths of
traces: there is an added line for the discarded lookahead.
* doc/bison.texinfo (Destructor Decl): Some rewording.
Define "discarded" symbols.
2004-09-06 07:48:20 +00:00
Akim Demaille
0fe1f06d36 * data/lalr1.cc (translate_, destruct_): No reason to be static. 2004-09-02 14:30:55 +00:00
Akim Demaille
284acc8ba7 * data/glr.c, yacc.c (YYDSYMPRINT): Remove, not used.
(YYDSYMPRINTF): Rename as...
(YY_SYMBOL_PRINT): this.
* data/lalr1.cc (YY_SYMBOL_PRINT): New, modeled after the previous
two.
Use it instead of direct symprint_ calls.
(yybackup): Tweak the "Now at end of input" case to match yacc.c's
one.
2004-09-02 14:27:02 +00:00
Akim Demaille
b7c72fe1c4 Fix ChangeLog. 2004-09-02 13:25:23 +00:00
Akim Demaille
a5eb1ed262 * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust
%printer calls to use cdebug_ when using lalr1.cc.
* data/lalr1.cc (b4_yysymprint_generate): New.
2004-09-02 13:04:11 +00:00
Akim Demaille
417141dd61 * data/glr.c: Guard the declarations of yypstack and yypdumpstack
with #ifdef YYDEBUG.
2004-08-30 07:50:08 +00:00
Akim Demaille
2fa09258b1 * doc/bison.texinfo (Implementing Loops): Rename as...
(Implementing Gotos/Loops): this.
2004-08-26 13:05:41 +00:00
Paul Eggert
2ed973bf1d Regenerate. 2004-08-18 20:35:31 +00:00
Paul Eggert
9378b5082b Adjust to latest gnulib. 2004-08-13 14:29:05 +00:00
Paul Eggert
a9f027b9c4 Adjust to latest gnulib.
(gnulib_modules): Add xalloc-die.
Set LC_ALL=C so that file names sort consistently.
Prefer the gnulib copies of gettext.m4, glibc21.m4,
inttypes_h.m4, lib-ld.m4, lib-prefix.m4, po.m4, stdint_h.m4,
uintmax_t.m4, ulonglong.m4.
(intl_files_to_remove): Add gettext.m4, lib-ld.m4, lib-prefix.m4,
po.m4 since we are now using _gl.m4 instead.
2004-08-13 14:28:43 +00:00
Paul Eggert
87a8ad5cd3 Remove src/scan-action.l. 2004-08-11 04:19:14 +00:00
Paul Eggert
dca81a78f8 uniqstr wasn't being used for handle_syncline like it should. 2004-08-08 04:57:06 +00:00
Paul Eggert
c9cbf7c58e Fix bug with non-%union parsers that have printers or destructors,
which led to a Bison core dump.
2004-07-22 14:42:11 +00:00
Paul Eggert
ac700aa646 (_AT_CHECK_PRINTER_AND_DESTRUCTOR,
AT_CHECK_PRINTER_AND_DESTRUCTOR): New argument
UNION-FLAG.  All callers changed.
(_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't assume %union.
Use type char, not unsigned int, when declaring an array of char;
this lets us remove a cast.
(Printers and Destructors): Add non-%union test cases.
2004-07-22 14:40:21 +00:00
Paul Eggert
ee42c6166b (symbol_destructors_output, symbol_printers_output):
Don't assume %union.
2004-07-22 14:39:58 +00:00
Paul Eggert
c0659069d0 (yystype) [defined YYSTYPE]: Define to YYSTYPE, not to our own type. 2004-07-22 14:39:34 +00:00
Paul Eggert
60c8294801 (b4_symbol_actions): Don't assume %union was used. 2004-07-22 14:39:03 +00:00
Paul Eggert
fa7e68c397 Reorganize GLR section a bit. 2004-06-22 06:50:29 +00:00
Paul Eggert
0817d1eccb One more "lookahead" -> "look-ahead" change. 2004-06-21 21:01:42 +00:00
Paul Eggert
99a9344e77 New section "Simple GLR Parsers". 2004-06-21 20:55:20 +00:00