Paul Eggert [Mon, 9 Dec 2002 04:48:38 +0000 (04:48 +0000)]
* data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__,
since this causes problems when __file__ contains character
sequences like "@" that are treated specially by src/scan-skel.l.
Instead, just use the file's basename. This fixes the bug
reported by Martin Mokrejs in
<http://mail.gnu.org/pipermail/bug-bison/2002-December/001949.html>.
Paul Eggert [Sat, 7 Dec 2002 06:14:27 +0000 (06:14 +0000)]
Include "files.h".
(YY_USER_INIT): Initialize scanner_cursor instead
of *loc.
(STEP): Remove. No longer needed, now that adjust_location does
the work. All uses removed.
(scanner_cursor): New var.
(adjust_location): Renamed from extend_location. It now sets
*loc and adjusts the scanner cursor. All uses changed.
Don't bother testing for CR.
(handle_syncline): Remove location arg; now updates scanner cursor.
All callers changed.
(unexpected_end_of_file): Now accepts start boundary of token or
comment, not location. All callers changed. Update scanner cursor,
not the location.
(SC_AFTER_IDENTIFIER): New state.
(context_state): Renamed from c_context. All uses changed.
(id_loc, code_start, token_start): New local vars.
(<INITIAL,SC_AFTER_IDENTIFIER>): New initial context. Move all
processing of Yacc white space and equivalents here.
(<INITIAL>{id}): Save id_loc. Begin state SC_AFTER_IDENTIFIER
instead of returning ID immediately, since we need to search for
a subsequent colon.
(<INITIAL>"'", "\""): Save token_start.
(<INITIAL>"%{", "{", "%%"): Save code_start.
(<SC_AFTER_IDENTIFIER>): New state, looking for a colon.
(<SC_YACC_COMMENT>, <SC_COMMENT>, <SC_LINE_COMMENT>):
BEGIN context_state at end, not INITIAL.
(<SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'",
<SC_BRACED_CODE>"}", <SC_PROLOGUE>"%}", <SC_EPILOGUE><<EOF>>):
Return correct token start.
(<SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>): Save start boundary when
the start of a character, string or multiline comment is found.
Paul Eggert [Sat, 7 Dec 2002 05:58:38 +0000 (05:58 +0000)]
Do not include <quotearg.h>; no longer needed.
(boundary): New type.
(location_t): Use it. This allows locations to span file boundaries.
All member uses changed: file -> start.file or end.file (as needed),
first_line -> start.line, first_column -> start.column,
last_line -> end.line, last_column -> end.column.
(equal_boundaries): New function.
(LOCATION_RESET, LOCATION_STEP): Remove.
(LOCATION_PRINT): Remove. All callers changed to use location_print.
(empty_location): Now const.
(location_print): New decl.
Paul Eggert [Sat, 7 Dec 2002 05:57:32 +0000 (05:57 +0000)]
* src/location.c: Include <quotearg.h>.
(empty_location): Now const.
(location_print): New function. Follow the recommendation of the
GNU Coding Standards for locations that span file boundaries.
Paul Eggert [Sat, 7 Dec 2002 05:50:45 +0000 (05:50 +0000)]
(Table of Symbols): YYERROR_VERBOSE should
be #defined in the prologue, not in the Bison declarations.
This fixes Debian Bug 102878, reported by Shaul Karl.
Paul Eggert [Sun, 1 Dec 2002 02:37:56 +0000 (02:37 +0000)]
(no_cr_read, extend_location): Move to epilogue,
and put only a forward declaration in the prologue. This is for
consistency with the other scanner helper functions.
Paul Eggert [Sat, 30 Nov 2002 07:42:37 +0000 (07:42 +0000)]
Emphasize that yylex and yyerror must be declared before being used.
E.g., one should typically declare them in the prologue. Use GNU
coding style in examples. Put "const" consistently after the type it
modifies. Mention that C99 supports "inline". Mention that yyerror
traditionally returns "int".
Paul Eggert [Fri, 29 Nov 2002 08:43:12 +0000 (08:43 +0000)]
(Parser Function, Pure Calling, Error Reporting, Table of Symbols):
%parse-param and %lex-param now take just one argument, the
declaration; the argument name is deduced from the declaration.
Paul Eggert [Wed, 27 Nov 2002 18:34:14 +0000 (18:34 +0000)]
(STEP): Renamed from YY_STEP. All uses changed.
(STRING_GROW): Renamed from YY_OBS_GROW. All uses changed.
(STRING_FINISH): Renamed from YY_OBS_FINISH. All uses changed.
(STRING_FREE): Renamed from YY_OBS_FREE. All uses changed.
Paul Eggert [Wed, 27 Nov 2002 18:33:18 +0000 (18:33 +0000)]
(print_token_value): Renamed from yyprint.
All uses changed.
(YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove. All uses changed.
The name "yycontrol" violates the name space rules, and this stuff
wasn't being used anyway.
(input): Remove action; this stuff wasn't being used.
(gram_error): Rename local variable yylloc -> loc.
Paul Eggert [Wed, 27 Nov 2002 18:31:27 +0000 (18:31 +0000)]
(_AT_CHECK_PRINTER_AND_DESTRUCTOR): yyout -> yyoutput,
to avoid collision with lex macro described by Bruce Lilly in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001929.html>.
Paul Eggert [Wed, 27 Nov 2002 18:30:50 +0000 (18:30 +0000)]
(b4_yysymprint_generate): yyout -> yyoutput,
to avoid collision with lex macro described by Bruce Lilly in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001929.html>.
Paul Eggert [Mon, 25 Nov 2002 07:36:54 +0000 (07:36 +0000)]
(Actions after errors): Use an output format
more similar to that of the Printers and Destructors test.
Test the position of the ';' token too.
(Printers and Destructors): Likewise.
(Printers and Destructors: %glr-parser): Remove for now, to avoid
unnecessarily alarming people when the test fails.
Paul Eggert [Mon, 25 Nov 2002 06:42:10 +0000 (06:42 +0000)]
(yyerrlab1): Move this label down, so that the
parser does not discard the lookahead token if the user code
invokes YYERROR. This change is required for POSIX conformance.
Paul Eggert [Thu, 21 Nov 2002 07:37:24 +0000 (07:37 +0000)]
* lib/argmatch.c, lib/argmatch.h: Sync with gnulib.
Avoid use of <assert.h>, as the GNU Coding Standards hint that one
should use `if (! x) abort ();' rather than `assert (x);', and
anyway it's one less thing to worry about configuring.
Paul Eggert [Tue, 19 Nov 2002 09:33:21 +0000 (09:33 +0000)]
* data/glr.c (yygetLRActions): Replace `yyindex' with
`yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
This fixes the regression with Sun ONE Studio 7 cc that I reported in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001892.html>.
Paul Eggert [Tue, 19 Nov 2002 07:35:29 +0000 (07:35 +0000)]
(yygetLRActions): Replace `yyindex' with
`yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch.
This fixes the regression with Sun ONE Studio 7 cc that I reported in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001892.html>.
Paul Eggert [Mon, 18 Nov 2002 07:51:47 +0000 (07:51 +0000)]
(YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do not define to
{}, since this breaks the common use of `YYDPRINTF ((...));' if a
single statement is desired (e.g. before `else'). Work around GCC
warnings by surrounding corresponding calls with {} if needed.
(yyhasResolvedValue): Remove unused function.
(yymergeOptionSets, yyresolvStack): Use `continue;' for empty
loop body.
(yyreportSyntaxError): Renamed from yyreportParseError.
(yyrecoverSyntaxError): Renamed from yyrecoverParseError.
All uses changed.
Akim Demaille [Sat, 16 Nov 2002 12:32:27 +0000 (12:32 +0000)]
Augment the similarity between GLR and LALR traces.
* data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print)
(YY_REDUCE_PRINT): New.
(yyparse): Use them.
* data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for
YYDPRINT here.
(yyglrReduce, yyrecoverParseError, yyparse): Don't report the
state reached after the reduction/recovery, since...
(yyparse, yyprocessOneStack): Report the state we are entering in.
Akim Demaille [Sat, 16 Nov 2002 12:31:36 +0000 (12:31 +0000)]
* src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types):
Add support for --trace=skeleton.
* src/scan-skel.l: %option debug.
Scan strings of non-@ or n instead of character by character.
(scan_skel): Handle trace_skeleton.
(QPUTS): New.
(@output_parser_name@, @output_header_name@): ``Restore'' their
support (used to be M4 macros).
* data/yacc.c: Quote larger chunks, a la glr.c.
* data/lalr1.cc: Likewise.
The header guards are no longer available, so use some other
string than `YYLSP_NEEDED'.