Compare commits

...
183 Commits
Author SHA1 Message Date
Akim Demaille 3491db2e44 Regen. 2002-02-28 15:16:44 +00:00
Akim Demaille 9fef6a2a0b Version 1.33a. 2002-02-28 15:12:19 +00:00
Akim Demaille fe24ffa45a Update. 2002-02-28 15:11:44 +00:00
Akim Demaille 28f490e38d * src/bison.simple (yydebug): Fix the comment.
From Bruce Lilly.
2002-02-25 18:02:06 +00:00
Juan Manuel Guerrero 48dccdf81a DJGPP spicific: NULL pointer fix 2002-02-21 12:13:50 +00:00
Paul Eggert 039e51a37c Remove the support for C++ namespace cleanliness; it was
causing more problems than it was curing, since it didn't work
properly on some nonstandard C++ compilers.  This can wait
for a proper C++ parser.

* NEWS: Document this.
* doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
of C++, as it's treated like C now.
* src/bison.simple (YYSTD): Remove.
(YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
Treat C++ just like Standard C instead of trying to support
namespace cleanliness.
2002-02-14 20:17:53 +00:00
Paul Eggert 20b9de21c7 Revert the C++ namespace changes introduced in 1.31. 2002-02-14 20:16:29 +00:00
Paul Eggert 26ae304aa6 (YYSTD): Remove.
(YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
Treat C++ just like Standard C instead of trying to support
namespace cleanliness.
2002-02-14 20:10:54 +00:00
Paul Eggert 2d0bf7bdd5 (Bison Parser, Debugging): Remove special mention of C++, as it's
treated like C now.
2002-02-14 20:09:29 +00:00
Akim Demaille e1fe241dc8 * tests/regression.at (else): Adjust to Andreas' change. 2002-02-14 12:37:44 +00:00
Akim Demaille e334b4a99b * src/output.c (output_rule_data): Don't output NULL, it might
not be defined yet.
2002-02-13 18:34:59 +00:00
Akim Demaille 1bb14a172a Typo. 2002-02-13 18:34:40 +00:00
Juan Manuel Guerrero cc20bc3166 DJGPP support added 2002-02-13 16:13:31 +00:00
Akim Demaille 9cbe3c4878 * tests/regression.at (%nonassoc and eof): Don't include non
portable headers.
2002-02-11 13:31:14 +00:00
Akim Demaille d961d172be Bump to 1.33a. 2002-02-11 13:28:56 +00:00
Akim Demaille dbbe1eb433 . 2002-02-07 17:44:12 +00:00
Akim Demaille 0e25677ee2 Version 1.33. 2002-02-07 17:39:57 +00:00
Akim Demaille e89a22bfab * tests/regression.at, tests/torture.at, tests/calc.at: Adjust to
newest Autotest, where `.' is not in the PATH.
2002-02-07 17:30:49 +00:00
Akim Demaille f5c0dc4880 * src/reader.c (copy_at): Detect invalid @N values. 2002-02-07 17:17:16 +00:00
Akim Demaille 7307a21a45 * tests/input.at: New. 2002-02-07 17:13:46 +00:00
Akim Demaille 63f7fb275a Update. 2002-02-07 14:59:47 +00:00
Paul Eggert 4f55c2577d * src/bison.simple (YYSIZE_T): Do not define merely because
YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
On some platforms, <alloca.h> does not declare YYSTD (size_t).
2002-01-29 13:52:05 +00:00
Paul Eggert 62a21d52ce (YYSIZE_T): Do not define merely because YYSTACK_USE_ALLOCA is nonzero
or alloca or _ALLOCA_H are defined.  On some platforms, <alloca.h>
does not declare YYSTD (size_t).
2002-01-29 13:50:11 +00:00
Akim Demaille 27fb1c24b7 * tests/regression.at (%nonassoc and eof): New.
Suggested by Robert Anisko.
2002-01-25 16:24:21 +00:00
Akim Demaille 281a98c77a 1.32a. 2002-01-25 11:29:31 +00:00
Akim Demaille 83ce390155 Adjust. 2002-01-24 18:57:32 +00:00
Akim Demaille c96ef8e0b9 Update. 2002-01-24 18:51:04 +00:00
Akim Demaille 501cc96c68 . 2002-01-23 13:31:25 +00:00
Akim Demaille a69417c066 Version 1.32. 2002-01-23 13:27:47 +00:00
Akim Demaille d138fdbf19 Update. 2002-01-23 13:24:22 +00:00
Akim Demaille 9326268a46 * src/getargs.c (version): Bump to 2002.
Patch the PO files to help translators.
2002-01-23 13:14:56 +00:00
Akim Demaille 88964d04d9 Update. 2002-01-22 17:14:38 +00:00
Akim Demaille e803581008 Missing ]. 2002-01-22 14:29:56 +00:00
Akim Demaille 015af8c168 Bison dumps core when trying to complain about broken input files.
Reported by Cris van Pelt.
* src/lex.c (parse_percent_token): Be sure to set token_buffer.
* tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
into...
(Invalid inputs): Strengthen: exercise parse_percent_token.
2002-01-22 10:29:28 +00:00
Akim Demaille 3a48f72d7e Regen. 2002-01-21 19:33:36 +00:00
Akim Demaille 3e0f96bc08 * po/it.po: New. 2002-01-21 19:27:34 +00:00
Akim Demaille ef1a77c2c9 * src/files.c (skeleton_find) [MSDOS]: Fix cp definition. 2002-01-21 15:48:25 +00:00
Akim Demaille 2842171a4c Regen. 2002-01-21 14:09:53 +00:00
Marc Autret 64fa1ea1b8 * src/system.h: Need to define __attribute__ away for non-GCC
compilers as well (i.e.	the vendor C compiler).
Suggested by Albert Chin-A-Young.
2002-01-20 10:59:44 +00:00
Marc Autret 7700a71572 * tests/output.at: New test.
* src/files.c (compute_base_names): Don't map extensions when
the YACC flag is set, use defaults.
Reported by Evgeny Stambulchik.
2002-01-19 12:50:56 +00:00
Marc Autret 7baed3bf89 * configure.in, doc/version.texi: Bump to 1.31a. 2002-01-19 12:47:28 +00:00
Akim Demaille 1710ea3d30 . 2002-01-14 10:58:00 +00:00
Akim Demaille 12de352a6f Bump to 1.31. 2002-01-14 10:28:31 +00:00
Akim Demaille 6fc75bfd3a * tests/regression.at (Invalid CPP headers): Remove. 2002-01-14 10:16:49 +00:00
Akim Demaille 96df91407c Bump to 1.30m. 2002-01-14 10:16:41 +00:00
Akim Demaille b30efba0d0 . 2002-01-12 11:45:03 +00:00
Akim Demaille fd2d280114 Version 1.30l. 2002-01-12 11:41:45 +00:00
Akim Demaille 68e202f30f * lib/Makefile.am (EXTRA_DIST): Add strnlen.c: Automake is still
not using Autoconf traces and does not see Autoconf's AC_LIBOBJ.
2002-01-12 11:39:54 +00:00
Akim Demaille d7848b138c . 2002-01-11 13:46:33 +00:00
Akim Demaille 40c6b975e9 Update. 2002-01-11 13:42:16 +00:00
Akim Demaille a5fb3dead0 Version 1.30k. 2002-01-11 13:37:00 +00:00
Akim Demaille ac5ff6a908 * configure.in: Use AC_FUNC_STRNLEN. 2002-01-11 13:31:33 +00:00
Akim Demaille 0b1cb33137 . 2002-01-09 15:17:22 +00:00
Akim Demaille 9f3c97f74f Version 1.30j. 2002-01-09 15:12:39 +00:00
Akim Demaille a99566be67 * configure.in (WERROR_CFLAGS): Compute it.
* src/Makefile.am (CFLAGS): Pass it.
* tests/atlocal.in (CFLAGS): Idem.
2002-01-09 15:06:25 +00:00
Akim Demaille ca66b45a86 Update. 2002-01-09 14:56:07 +00:00
Akim Demaille 55601256c2 * lib/Makefile.am (libbison_a_SOURCES): Add xstrndup.c.
* src/getargs.c (AS_FILE_NAME): New.
(getargs): Use it to convert DOSish file names.
* src/files.c (base_name): Rename as full_base_name to avoid
clashes with `base_name ()'.
(get_extension_index): Remove.
(filename_split): New.
(compute_base_names): N-th rewrite, using filename_split.
2002-01-08 17:41:38 +00:00
Akim Demaille 43cc2463d2 * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c,
* lib/xstrndup.c, lib/strchr.c:
New, stolen from the Fileutils 4.1.
* lib/Makefile.am (libbison_a_SOURCES): Adjust.
* configure.in: Check for the presence of memrchr, strchr,
strnlen, and of their prototypes.
Don't check for strndup: we no longer use it.
* src/system.h: Adjust the prototypes.
2002-01-08 17:30:53 +00:00
Akim Demaille 25a46077de * src/conflicts.c (count_rr_conflicts): The previous RR conflicts
patch was improperly applied: fix it.
2002-01-07 08:42:59 +00:00
Akim Demaille 62d3162c4c Revert the previous patch which was meant for the trunk only. 2002-01-07 08:40:29 +00:00
Akim Demaille 3f2f7848cc * src/reader.c (parse_braces): Don't fetch the next char, the
convention is to fetch on entry.
* tests/torture.at (GNU Cim Grammar): Reintroduce their weird
'switch' without a following semicolon.
* tests/regression.at (braces parsing): New.
2002-01-06 20:59:30 +00:00
Akim Demaille c4267a3d35 Bison is dead wrong in its RR conflict reports.
* tests/torture.at (GNU Cim Grammar): New.
* src/conflicts.c (count_rr_conflicts): Fix.
2002-01-06 20:59:12 +00:00
Akim Demaille ae774286e8 Creating package.m4 from configure.ac causes too many problems.
* tests/Makefile.am (package.m4): Create it by hand,
AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2002-01-06 20:57:20 +00:00
Akim Demaille 43f8a3245a Regen. 2002-01-06 20:56:42 +00:00
Paul Eggert a22d7bd8d6 * doc/bison.texinfo (Debugging):
Remove YYSTDERR; it's no longer defined or used.
Also, s/cstdio.h/cstdio/.
2002-01-05 01:20:57 +00:00
Paul Eggert f36280e16e (Debugging): Remove YYSTDERR; it's no longer defined or used.
Also, s/cstdio.h/cstdio/.
2002-01-05 01:18:26 +00:00
Akim Demaille 38612b10a3 * src/files.h: Add it prototype. 2002-01-03 13:55:09 +00:00
Akim Demaille ffc03584ad * src/files.c, src/files.h (strsuffix): Not static.
* src/conflicts.c (conflicts_print): Don't consider it is an error
to have a %expectation violation on a file ending by `plural.y'.
Eek.
2002-01-03 13:39:20 +00:00
Akim Demaille dd3c3f3006 * tests/bison.in: Adjust to CVS Autoconf.
* tests/calc.at (exp): We no longer need to special case GCC as
the warning flags are passed by configure.
* tests/atlocal.in: Adjust.
* configure.in: Bump to 1.30j.
2002-01-03 11:10:50 +00:00
Akim Demaille f1d93aa21c Regen. 2002-01-03 11:09:47 +00:00
Akim Demaille a4f0747a2a . 2002-01-03 10:45:14 +00:00
Akim Demaille ca69f83c53 Version 1.30i. 2002-01-03 10:42:17 +00:00
Akim Demaille b06c1dfb75 Update. 2002-01-03 10:40:03 +00:00
Akim Demaille 7525f95ed5 * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
The ISO C++ standard is extremely clear about it: stderr is
considered a macro, not a regular symbol (see table 94 `Header
<cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
Therefore std:: does not apply to it.  It still does with fprintf.
Also, s/cstdio.h/cstdio/.
2002-01-03 09:48:08 +00:00
Akim Demaille 1daed0de8a * lib/quotearg.c: Use #include "..."' instead of #include <...>'
for non system headers.
2002-01-03 09:27:34 +00:00
Akim Demaille 32e175835b Regen. 2002-01-03 09:24:59 +00:00
Akim Demaille ea04a14c5c * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
Sparc, as they were causing more porting problems than the
(minor) performance improvement was worth.
2001-12-27 18:30:40 +00:00
Akim Demaille d6b12c2d8b * src/output.c (output_short_table, output_short_or_char_table):
Change the prototype to use `int' for array ranges: some
invocations do pass an int, not a short.
Reported by Wayne Green.
2001-12-27 18:28:23 +00:00
Akim Demaille f4ffa313a2 Regen. 2001-12-22 15:13:48 +00:00
Akim Demaille 1214dfb03b Some actions of web2c.y are improperly triggered.
Reported by Mike Castle.
* src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
* tests/regression.at (Web2c): Rename as...
(Web2c Report): this.
(Web2c Actions): New.
2001-12-22 14:44:25 +00:00
Akim Demaille 55b4181996 Reductions in web2c.y are improperly reported.
Reported by Mike Castle.
* src/conflicts.c (print_reductions): Fix.
* tests/regression.at (Web2c): New.
2001-12-22 14:41:15 +00:00
Akim Demaille 12a04365ce Bump to 1.30i 2001-12-22 14:39:44 +00:00
Akim Demaille 6929a4a0e8 Adjust. 2001-12-18 09:58:07 +00:00
Akim Demaille 07cccc8bc6 . 2001-12-18 09:51:33 +00:00
Akim Demaille 36791b5576 Version 1.30h. 2001-12-18 09:46:36 +00:00
Akim Demaille dba44a1367 Update. 2001-12-18 09:42:58 +00:00
Akim Demaille d4593e87be Some host fail on `assert (!"foo")', which expands to
((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
Reported by Nelson Beebee.
* src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
`#define it_succeeded 0' and `assert (it_succeeded)'.
2001-12-18 09:33:23 +00:00
Paul Eggert 6b1ec1fb33 * src/bison.simple (YYSTD): New macro.
(YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE, YYFPRINTF, YYSTDERR): Use
it to simplify macros, and fix some C++ porting problems reported
by Hans Aberg.
2001-12-17 23:51:46 +00:00
Paul Eggert bfb74f79b8 (YYSTD): New macro.
(YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE, YYFPRINTF, YYSTDERR): Use it to
simplify macros, and fix some C++ porting problems reported by Hans Aberg.
2001-12-17 23:50:16 +00:00
Paul Eggert c520f816b1 * src/output.c (output): Define YYDEBUG to 0 if it is not defined
and if we are not debugging.  POSIX requires this.
* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document this.

* src/output.c (output_gram, output_rule_data): Do not assume that
the user defines YYDEBUG to a properly parenthesized expression.
2001-12-17 18:49:14 +00:00
Paul Eggert cc6ed5f7f1 Define YYDEBUG to 0 if it is not defined and if we are not debugging.
POSIX requires this.
2001-12-17 18:48:43 +00:00
Paul Eggert ac28f67c0b (output): Define YYDEBUG to 0 if it is not defined and if we are not
debugging.  POSIX requires this.

(output_gram, output_rule_data): Do not assume that
the user defines YYDEBUG to a properly parenthesized expression.
2001-12-17 18:45:59 +00:00
Akim Demaille f30e1ab65c * src/nullable.c (set_nullable): Useless rules must be skipped,
otherwise, since we range over their symbols, we might look at a
nonterminal which no longer ``exists'', i.e., it is not counted in
`nvars', hence we overflow our arrays.
2001-12-15 16:22:13 +00:00
Akim Demaille 52e9776027 * src/reader.c (copy_action): When --yacc, don't append a `;'
to the user action: let it fail if lacking.
Suggested by Aharon Robbins and Tom Tromey.
2001-12-15 11:07:56 +00:00
Akim Demaille 21292982fe Regen. 2001-12-15 10:59:00 +00:00
Akim Demaille 9f0938ad32 Bump to 1.30h. 2001-12-13 12:07:48 +00:00
Akim Demaille cb948818d0 . 2001-12-13 11:18:19 +00:00
Akim Demaille c0760f18e0 Version 1.30g. 2001-12-13 11:14:19 +00:00
Akim Demaille c884affb0b Update. 2001-12-13 11:06:18 +00:00
Akim Demaille f7e7f57941 The computation of nullable is broken: it doesn't handle empty
RHS's properly.
* tests/torture.at (GNU AWK Grammar): New.
* tests/sets.at (Nullable): New.
* src/nullable.c (set_nullable): Instead of blindly looping over
`ritems', loop over the rules, and then over their rhs's.
Work around Autotest bugs.
* src/warshall.c (bitmatrix_print): Don't use `+--+' as table
frame, because Autotest understand lines starting with a `+' as
traces from the shell.  Then, they are not processed properly.
Admittedly an Autotest bug, but we don't have time to wait for
Autotest to catch up.
* tests/regression.at (Broken Closure): Adjust to the new table
frames.
Move to...
* tests/sets.at: here.
2001-12-13 10:59:37 +00:00
Paul Eggert d1210d1d6e Document YYPRINTF, YYSTDERR. 2001-12-13 02:45:14 +00:00
Paul Eggert d5c2eff246 * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Do not infringe on the global user namespace when using C++.
	(YYFPRINTF, YYSTDERR): New macros, needed for the above.
	All uses of `fprintf' and `stderr' changed.

	* src/output.c (output): Do not output "#include <stdio.h>"; that
	is bison.simple's job.  stdio.h should be included only if
	necessary, to avoid infringing on the user name space when
	possible.
2001-12-13 02:22:05 +00:00
Paul Eggert b59b91bb6e (output): Do not output "#include <stdio.h>"; that is bison.simple's
job.  stdio.h should be included only if necessary, to avoid
infringing on the user name space when possible.
2001-12-13 02:21:12 +00:00
Paul Eggert 63e75f2e38 (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Do not infringe on the global user namespace when using C++.
(YYFPRINTF, YYSTDERR): New macros, needed for the above.
All uses of `fprintf' and `stderr' changed.
2001-12-13 02:20:28 +00:00
Akim Demaille 69dc1147ba * src/complain.h, src/complain.c: Remove error_one_per_line, rely
on that of lib/error.c.
2001-12-12 15:21:59 +00:00
Akim Demaille 3d9d5d34ff Regen. 2001-12-12 15:19:25 +00:00
Akim Demaille 701d80ffa0 Regen. 2001-12-12 12:01:09 +00:00
Akim Demaille 88f06d2beb Some hosts don't like `/' in includes.
* src/system.h: Include libgettext.h without qualifying the path.
* src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
$(top_srcdir).
2001-12-12 11:55:56 +00:00
Akim Demaille daa938e7f0 Regen. 2001-12-12 11:55:29 +00:00
Akim Demaille ed45e93ed8 Bison dumps core on bash.y.
Reported by Pascal Bart.
* src/warshall.c (bitmatrix_print): New.
(TC): Use it.
When performing a transitive closure R(i, j) && R(j, k) => R(i,	k),
j must be the outer loop.
* tests/regression.at (Broken Closure): New.
2001-12-10 08:43:38 +00:00
Akim Demaille 74d757ab92 Fix an es.po problem. 2001-12-06 14:24:41 +00:00
Akim Demaille 4be25f1591 Version 1.30g. 2001-12-05 15:24:53 +00:00
Akim Demaille b7008317cf . 2001-12-05 12:01:24 +00:00
Akim Demaille 3f66ed1c8b Update. 2001-12-05 11:57:46 +00:00
Akim Demaille 58dce15432 Version 1.30f. 2001-12-05 11:46:05 +00:00
Akim Demaille e6970f2ed0 * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
its argument.
Reported by Peter Hámorský.
2001-12-05 10:58:44 +00:00
Akim Demaille b9866ce4da Regen. 2001-12-05 09:30:34 +00:00
Akim Demaille b32ba448c8 * src/conflicts.c (err_table): Remove.
(resolve_sr_conflict): Adjust.
* src/lalr.h (state_t.reduction_table, state_t.shift_table):
Rename as...
(state_t.reductions, state_t.shifts): this.
2001-12-05 09:24:54 +00:00
Akim Demaille 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.
2001-12-05 09:24:35 +00:00
Akim Demaille 0fc1a97d9f * src/output.c (pack_vector): Use assert, not berror.
* src/main.c (berror): Remove, unused.
2001-12-05 09:24:21 +00:00
Akim Demaille 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.
2001-12-05 09:24:06 +00:00
Akim Demaille 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.
2001-12-05 09:23:52 +00:00
Akim Demaille 66d35de779 * src/closure.c (print_closure): Improve.
(closure): Use it for printing input and output.
2001-12-05 09:23:38 +00:00
Akim Demaille 5e5b240715 * src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are
indexed by nonterminals.
2001-12-05 09:23:24 +00:00
Akim Demaille 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.
2001-12-05 09:23:10 +00:00
Akim Demaille 0ea80316a9 * src/closure.c (set_fderives): De-obfuscate. 2001-12-05 09:22:55 +00:00
Akim Demaille 09b2117db7 * src/closure.c (print_firsts, print_fderives): De-obfuscate. 2001-12-05 09:22:40 +00:00
Akim Demaille 78fc5ce865 * src/closure.c (set_firsts): De-obfuscate. 2001-12-05 09:22:27 +00:00
Akim Demaille 766ffc1523 * src/output.c (action_row): De-obfuscate
using the good o' techniques: arrays not pointers, variable
locality, BITISSET, RESETBIT etc.
2001-12-05 09:22:14 +00:00
Akim Demaille 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.
2001-12-05 09:21:55 +00:00
Akim Demaille 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''.
2001-12-05 09:21:15 +00:00
Akim Demaille 32f18df511 * src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate
using the good o' techniques: arrays not pointers, variable
locality, BITISSET, RESETBIT etc.
2001-12-05 09:20:55 +00:00
Akim Demaille 19f8d30b9c * src/state.h (SHIFT_SYMBOL): New.
* src/conflicts.c: Use it to deobfuscate.
2001-12-05 09:20:41 +00:00
Akim Demaille 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.
2001-12-05 09:20:22 +00:00
Akim Demaille b5c15946a1 * src/conflicts.c (print_reductions): Arrays, not pointers.
Use BITISSET.
2001-12-05 09:20:07 +00:00
Akim Demaille 980929ba0b * src/conflicts.c (print_reductions): Pessimize, but clarify. 2001-12-05 09:19:53 +00:00
Akim Demaille 4c3791f08d * src/conflicts.c (print_reductions): Improve variable locality. 2001-12-05 09:19:41 +00:00
Akim Demaille a8355549a5 * src/conflicts.c (print_reductions): Pessimize, but clarify. 2001-12-05 09:19:27 +00:00
Akim Demaille 2883204382 * src/conflicts.c (print_reductions): Improve variable locality. 2001-12-05 09:19:13 +00:00
Akim Demaille 825b9e4ef4 * src/state.h (SHIFT_IS_ERROR, SHIFT_IS_GOTO, SHIFT_IS_SHIFT): New.
* src/lalr.c: Use them.
2001-12-05 09:18:57 +00:00
Akim Demaille 57339f0421 * src/LR0.c (augment_automaton): Formatting changes.
Better variable locality.
2001-12-05 09:18:39 +00:00
Akim Demaille 963c0cf62f * src/lalr.c (matrix_print): New.
(transpose): Use it.
Use arrays instead of pointers.
2001-12-05 09:18:25 +00:00
Akim Demaille 6a1e01f060 * src/lalr.c (maxrhs): Move to...
* src/gram.c, src/gram.h (ritem_longest_rhs): here.
* src/lalr.c (build_relations): Adjust.
2001-12-05 09:18:12 +00:00
Akim Demaille 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.
2001-12-05 09:17:50 +00:00
Akim Demaille 76c97f6a39 * src/lalr.c (initialize_F): Improve variable locality.
Avoid variables used as mere abbreviations.
2001-12-05 09:17:34 +00:00
Akim Demaille 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.
2001-12-05 09:17:20 +00:00
Akim Demaille 3557477440 * src/lalr.c (traverse): Use arrays instead of pointers. 2001-12-05 09:17:05 +00:00
Akim Demaille 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'.
2001-12-05 09:16:51 +00:00
Akim Demaille 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.
2001-12-05 09:16:37 +00:00
Akim Demaille d854cc9e5a * src/nullable.c (set_nullable): Deobfuscate the handling of
ritem.
`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.
2001-12-05 09:16:22 +00:00
Akim Demaille 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.
2001-12-05 09:16:07 +00:00
Paul Eggert 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.
2001-12-04 14:06:43 +00:00
Paul Eggert 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.
2001-12-04 14:06:06 +00:00
Paul Eggert 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.
2001-12-04 13:28:51 +00:00
Paul Eggert 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.
2001-12-04 13:28:18 +00:00
Akim Demaille 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.
2001-11-30 14:23:47 +00:00
Akim Demaille 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.
2001-11-30 14:04:22 +00:00
Akim Demaille cac4f75e15 Add the missing ChangeLog of the previous checkin. 2001-11-30 13:15:39 +00:00
Akim Demaille fc7ddd2818 * src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
if body instead of `;' to pacify GCC's warnings.
2001-11-30 13:14:10 +00:00
Akim Demaille 0ffdf37212 Regen. 2001-11-30 13:10:01 +00:00
Akim Demaille 9e55edfc29 * src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
if body instead of `;' to pacify GCC's warnings.
2001-11-30 11:11:08 +00:00
Akim Demaille 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.
2001-11-30 10:46:08 +00:00
Akim Demaille 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.
2001-11-30 10:45:45 +00:00
Akim Demaille 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.
2001-11-30 10:45:28 +00:00
Akim Demaille 24b1e65f04 * src/reduce.c: Various comment/formatting changes.
(nonterminals_reduce): New, extracted from...
(reduce_grammar_tables): here.
(reduce_grammar): Call nonterminals_reduce.
2001-11-30 10:45:14 +00:00
Paul Eggert 7ad28769d6 (YYSTACK_REALLOC): Remove.
(YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
(YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
New macros.
(union yyalloc): New type.
(__yy_memcpy): Last arg is size_t, not unsigned int, to remove
an arbitrary restriction on hosts where size_t is wider than int.

(yyparse): Don't dump core if alloca or malloc fails; instead, report
a parser stack overflow.  Allocate just one block of memory for all
three stacks, instead of allocating three blocks; this typically is
faster and reduces fragmentation.

Do not limit the number of items in the stack to a value that fits
in 'int', as this is an arbitrary limit on hosts with 64-bit
size_t and 32-bit int.
2001-11-30 02:47:56 +00:00
Paul Eggert 57d4ee2b82 * src/bison.simple (YYSTACK_REALLOC): Remove.
(YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
(YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
New macros.
(union yyalloc): New type.
(__yy_memcpy): Last arg is size_t, not unsigned int, to remove
an arbitrary restriction on hosts where size_t is wider than int.

(yyparse): Don't dump core if alloca or malloc fails; instead, report
a parser stack overflow.  Allocate just one block of memory for all
three stacks, instead of allocating three blocks; this typically is
faster and reduces fragmentation.

Do not limit the number of items in the stack to a value that fits
in 'int', as this is an arbitrary limit on hosts with 64-bit
size_t and 32-bit int.
2001-11-30 02:45:34 +00:00
Akim Demaille d8a9ec00b8 Regen. 2001-11-28 14:59:32 +00:00
Akim Demaille 872e1b86c4 Typo. 2001-11-28 14:58:05 +00:00
Akim Demaille ad4c2c7a57 * src/LR0.c (shifts_new): New.
(save_shifts, insert_start_shift, augment_automaton): Use it.
2001-11-28 14:57:44 +00:00
Akim Demaille 0785dec2c8 * src/closure.c (closure): b' and ruleno' denote the same value:
keep ruleno only.
2001-11-28 14:57:30 +00:00
Akim Demaille e1828f4f07 * src/closure.c (closure): Instead of looping over word in array
then bits in words, loop over bits in array.
2001-11-28 14:57:16 +00:00
Akim Demaille a816bf3eac * src/closure.c (closure): No longer optimize the special case
where all the bits of `ruleset[r]' are set to 0, to make the code
clearer.
2001-11-28 14:57:02 +00:00
Akim Demaille 2ce6476804 * src/closure.c (closure): r' and c' are new variables, used to
de-obfuscate accesses to RULESET and CORE.
2001-11-28 14:55:38 +00:00
Akim Demaille 457b6d1e72 * src/reduce.c (reduce_print): Use ngettext.
(dump_grammar): Improve the trace accuracy.
2001-11-28 13:38:15 +00:00
Akim Demaille 79ebbdb36a * src/reduce.c (dump_grammar): Don't translate trace messages. 2001-11-28 11:58:00 +00:00
Akim Demaille 0aa2ac9063 * tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
as all tags are free'ed afterwards.
From Enrico Scholz.
2001-11-28 11:42:56 +00:00
Akim Demaille e7d79012ae * src/system.h: Use intl/libgettext.h.
* src/Makefile.am (INCLUDES): Add -I $(top_srcdir).
2001-11-28 10:32:48 +00:00
Paul Eggert eb4a4d73bc * src/bison.simple (YYSTACK_REALLOC): Fix typo that caused us to
use alloca when we didn't want to, and vice versa.
2001-11-27 23:31:47 +00:00
Akim Demaille dee96b5a07 * tests/torture.at (Exploding the Stack Size with Malloc):
s/YYSTACK_USE_ALLOCA_ALLOCA/YYSTACK_USE_ALLOCA/.
2001-11-27 18:57:02 +00:00
Akim Demaille 4bfeeafb00 * src/files.c: Include error.h.
From Hans Aberg.
2001-11-27 18:42:32 +00:00
Marc Autret c18cf8cb26 Revert doc patch. 2001-11-26 19:19:21 +00:00
Akim Demaille 54b982ae70 Bump to 1.30f. 2001-11-26 17:13:05 +00:00
94 changed files with 9338 additions and 4790 deletions
+818 -5
View File
@@ -1,3 +1,821 @@
2002-02-28 Akim Demaille <[email protected]>
Version 1.33a.
2002-02-25 Akim Demaille <[email protected]>
* src/bison.simple (yydebug): Fix the comment.
From Bruce Lilly.
2002-02-21 Guerrero, Juan Manuel <[email protected]>
* src/getargs.c [AS_FILE_NAME] [__DJGPP__]: New macro STRLWR.
Check that no NULL pointer is passed to strlwr.
2002-02-14 Paul Eggert <[email protected]>
Remove the support for C++ namespace cleanliness; it was
causing more problems than it was curing, since it didn't work
properly on some nonstandard C++ compilers. This can wait
for a proper C++ parser.
* NEWS: Document this.
* doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
of C++, as it's treated like C now.
* src/bison.simple (YYSTD): Remove.
(YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
Treat C++ just like Standard C instead of trying to support
namespace cleanliness.
2002-02-14 Akim Demaille <[email protected]>
* tests/regression.at (else): Adjust to Andreas' change.
2002-02-13 Andreas Schwab <[email protected]>
* src/output.c (output_rule_data): Don't output NULL, it might
not be defined yet.
2002-02-13 Guerrero, Juan Manuel <[email protected]>
* doc/bison.texinfo: Add DJGPP specific information about
file name extensions used on different file systems.
* src/files.c (output_files): MSDOS conditional removed.
New macro EXT_TYPE will provide at runtime the appropiate
output file extension.
(skeleton_find) [MSDOS]: __DJGPP__ conditional added to
inhibit the use of DOSish code. POSIX like behaviour.
* src/getargs.c [AS_FILE_NAME]: __DJGPP__ conditional added.
Check at runtime if LFN-API (case preserving) is available or not.
Do not unconditionly convert upper case strings in lower case strings.
* src/system.h [MSDOS] [__GO32__]: __DJGPP__ conditional added.
__GO32__ is obsolete and its use is deprecated.
[MSDOS]: __DJGPP__ conditional added. Use pathconf
to choose POSIX or DOS file extensions at run time.
[MSDOS] [__DJGPP__]: New macro EXT_TYPE. If LFN-API is
available, the src or header file extension (.c or .h) will be
added to the output file name. If no LFN-API is available no src
or header file extension will be added to the output file name.
[MSDOS] [!__DJGPP__]: New macro EXT_TYPE. Src file and header
file extension will never be added to the output file name.
[!MSDOS]: New macro EXT_TYPE. Src file and header file
extensions will always be added to the output file name.
2002-02-11 Akim Demaille <[email protected]>
* tests/regression.at (%nonassoc and eof): Don't include non
portable headers.
2002-02-07 Akim Demaille <[email protected]>
Version 1.33.
2002-02-07 Akim Demaille <[email protected]>
* tests/regression.at, tests/torture.at, tests/calc.at: Adjust to
newest Autotest, where `.' is not in the PATH.
2002-02-07 Florian Krohm <[email protected]>
* src/reader.c (copy_at): Detect invalid @N values.
2002-02-07 Akim Demaille <[email protected]>
* tests/input.at: New.
2002-01-29 Paul Eggert <[email protected]>
* src/bison.simple (YYSIZE_T): Do not define merely because
YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
On some platforms, <alloca.h> does not declare YYSTD (size_t).
2002-01-25 Akim Demaille <[email protected]>
* tests/regression.at (%nonassoc and eof): New.
Suggested by Robert Anisko.
2002-01-23 Akim Demaille <[email protected]>
Version 1.32.
2002-01-23 Akim Demaille <[email protected]>
* src/getargs.c (version): Bump to 2002.
Patch the PO files to help translators.
2002-01-22 Akim Demaille <[email protected]>
Bison dumps core when trying to complain about broken input files.
Reported by Cris van Pelt.
* src/lex.c (parse_percent_token): Be sure to set token_buffer.
* tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
into...
(Invalid inputs): Strengthen: exercise parse_percent_token.
2002-01-21 Paolo Bonzini <[email protected]>
* po/it.po: New.
2002-01-21 Kees Zeelenberg <[email protected]>
* src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
2002-01-20 Marc Autret <[email protected]>
* src/system.h: Need to define __attribute__ away for non-GCC
compilers as well (i.e. the vendor C compiler).
Suggested by Albert Chin-A-Young.
2002-01-19 Marc Autret <[email protected]>
* tests/output.at: New test.
* src/files.c (compute_base_names): Don't map extensions when
the YACC flag is set, use defaults.
Reported by Evgeny Stambulchik.
2002-01-19 Marc Autret <[email protected]>
* configure.in, doc/version.texi: Bump to 1.31a.
2002-01-14 Akim Demaille <[email protected]>
Version 1.31.
2002-01-14 Akim Demaille <[email protected]>
* tests/regression.at (Invalid CPP headers): Remove.
2002-01-12 Akim Demaille <[email protected]>
Version 1.30l.
2002-01-12 Akim Demaille <[email protected]>
* lib/Makefile.am (EXTRA_DIST): Add strnlen.c: Automake is still
not using Autoconf traces and does not see Autoconf's AC_LIBOBJ.
2002-01-11 Akim Demaille <[email protected]>
Version 1.30k.
2002-01-11 Akim Demaille <[email protected]>
* configure.in: Use AC_FUNC_STRNLEN.
Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
2002-01-09 Akim Demaille <[email protected]>
Version 1.30j.
2002-01-09 Akim Demaille <[email protected]>
* configure.in (WERROR_CFLAGS): Compute it.
* src/Makefile.am (CFLAGS): Pass it.
* tests/atlocal.in (CFLAGS): Idem.
2002-01-08 Akim Demaille <[email protected]>
* lib/Makefile.am (libbison_a_SOURCES): Add xstrndup.c.
* src/getargs.c (AS_FILE_NAME): New.
(getargs): Use it to convert DOSish file names.
* src/files.c (base_name): Rename as full_base_name to avoid
clashes with `base_name ()'.
(get_extension_index): Remove.
(filename_split): New.
(compute_base_names): N-th rewrite, using filename_split.
2002-01-08 Akim Demaille <[email protected]>
* lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c,
* lib/xstrndup.c, lib/strchr.c:
New, stolen from the Fileutils 4.1.
* lib/Makefile.am (libbison_a_SOURCES): Adjust.
* configure.in: Check for the presence of memrchr, strchr,
strnlen, and of their prototypes.
Don't check for strndup: we no longer use it.
* src/system.h: Adjust the prototypes.
2002-01-07 Akim Demaille <[email protected]>
* src/conflicts.c (count_rr_conflicts): The previous RR conflicts
patch was improperly applied: fix it.
2002-01-07 Akim Demaille <[email protected]>
* tests/torture.at (GNU Cim Grammar): Reintroduce their weird
'switch' without a following semicolon.
* tests/regression.at (braces parsing): New.
2002-01-06 Akim Demaille <[email protected]>
Bison is dead wrong in its RR conflict reports.
* tests/torture.at (GNU Cim Grammar): New.
* src/conflicts.c (count_rr_conflicts): Fix.
2002-01-06 Akim Demaille <[email protected]>
Creating package.m4 from configure.ac causes too many problems.
* tests/Makefile.am (package.m4): Create it by hand,
AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
2002-01-04 Paul Eggert <[email protected]>
* doc/bison.texinfo (Debugging):
Remove YYSTDERR; it's no longer defined or used.
Also, s/cstdio.h/cstdio/.
2002-01-03 Akim Demaille <[email protected]>
* src/files.h: Add it prototype.
2002-01-03 Akim Demaille <[email protected]>
* src/files.c, src/files.h (strsuffix): Not static.
* src/conflicts.c (conflicts_print): Don't consider it is an error
to have a %expectation violation on a file ending by `plural.y'.
Eek.
2002-01-03 Akim Demaille <[email protected]>
* tests/bison.in: Adjust to CVS Autoconf.
* tests/calc.at (exp): We no longer need to special case GCC as
the warning flags are passed by configure.
* tests/atlocal.in: Adjust.
* configure.in: Bump to 1.30j.
2002-01-03 Akim Demaille <[email protected]>
Version 1.30i.
2002-01-03 Akim Demaille <[email protected]>
* src/bison.simple (YYSTDERR): Remove, replace `stderr'.
The ISO C++ standard is extremely clear about it: stderr is
considered a macro, not a regular symbol (see table 94 `Header
<cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
Therefore std:: does not apply to it. It still does with fprintf.
Also, s/cstdio.h/cstdio/.
2002-01-03 Akim Demaille <[email protected]>
* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
for non system headers.
2001-12-27 Paul Eggert <[email protected]>
* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
Sparc, as they were causing more porting problems than the
(minor) performance improvement was worth.
2001-12-22 Akim Demaille <[email protected]>
* src/output.c (output_short_table, output_short_or_char_table):
Change the prototype to use `int' for array ranges: some
invocations do pass an int, not a short.
Reported by Wayne Green.
2001-12-22 Akim Demaille <[email protected]>
Some actions of web2c.y are improperly triggered.
Reported by Mike Castle.
* src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
* tests/regression.at (Web2c): Rename as...
(Web2c Report): this.
(Web2c Actions): New.
2001-12-22 Akim Demaille <[email protected]>
Reductions in web2c.y are improperly reported.
Reported by Mike Castle.
* src/conflicts.c (print_reductions): Fix.
* tests/regression.at (Web2c): New.
2001-12-18 Akim Demaille <[email protected]>
Version 1.30h.
2001-12-18 Akim Demaille <[email protected]>
Some host fail on `assert (!"foo")', which expands to
((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
Reported by Nelson Beebee.
* src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
`#define it_succeeded 0' and `assert (it_succeeded)'.
2001-12-17 Paul Eggert <[email protected]>
* src/bison.simple (YYSTD): New macro.
(YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE, YYFPRINTF, YYSTDERR): Use
it to simplify macros, and fix some C++ porting problems reported
by Hans Aberg.
* src/output.c (output): Define YYDEBUG to 0 if it is not defined
and if we are not debugging. POSIX requires this.
* NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document this.
* src/output.c (output_gram, output_rule_data): Do not assume that
the user defines YYDEBUG to a properly parenthesized expression.
2001-12-15 Akim Demaille <[email protected]>
* src/nullable.c (set_nullable): Useless rules must be skipped,
otherwise, since we range over their symbols, we might look at a
nonterminal which no longer ``exists'', i.e., it is not counted in
`nvars', hence we overflow our arrays.
2001-12-15 Akim Demaille <[email protected]>
* src/reader.c (copy_action): When --yacc, don't append a `;'
to the user action: let it fail if lacking.
Suggested by Arnold Robbins and Tom Tromey.
2001-12-13 Akim Demaille <[email protected]>
Version 1.30g.
2001-12-13 Akim Demaille <[email protected]>
The computation of nullable is broken: it doesn't handle empty
RHS's properly.
* tests/torture.at (GNU AWK Grammar): New.
* tests/sets.at (Nullable): New.
* src/nullable.c (set_nullable): Instead of blindly looping over
`ritems', loop over the rules, and then over their rhs's.
Work around Autotest bugs.
* src/warshall.c (bitmatrix_print): Don't use `+--+' as table
frame, because Autotest understand lines starting with a `+' as
traces from the shell. Then, they are not processed properly.
Admittedly an Autotest bug, but we don't have time to wait for
Autotest to catch up.
* tests/regression.at (Broken Closure): Adjust to the new table
frames.
Move to...
* tests/sets.at: here.
2001-12-12 Paul Eggert <[email protected]>
* src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
Do not infringe on the global user namespace when using C++.
(YYFPRINTF, YYSTDERR): New macros, needed for the above.
All uses of `fprintf' and `stderr' changed.
* src/output.c (output): Do not output "#include <stdio.h>"; that
is bison.simple's job. stdio.h should be included only if
necessary, to avoid infringing on the user name space when
possible.
2001-12-12 Akim Demaille <[email protected]>
* src/complain.h, src/complain.c: Remove error_one_per_line, rely
on that of lib/error.c.
2001-12-12 Akim Demaille <[email protected]>
Some hosts don't like `/' in includes.
* src/system.h: Include libgettext.h without qualifying the path.
* src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
$(top_srcdir).
2001-12-10 Akim Demaille <[email protected]>
Bison dumps core on bash.y.
Reported by Pascal Bart.
* src/warshall.c (bitmatrix_print): New.
(TC): Use it.
When performing a transitive closure R(i, j) && R(j, k) => R(i, k),
j must be the outer loop.
* tests/regression.at (Broken Closure): New.
2001-12-05 Akim Demaille <[email protected]>
Version 1.30f.
2001-12-05 Akim Demaille <[email protected]>
* tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and
its argument.
Reported by Peter Hámorský.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (err_table): Remove.
(resolve_sr_conflict): Adjust.
* src/lalr.h (state_t.reduction_table, state_t.shift_table):
Rename as...
(state_t.reductions, state_t.shifts): this.
2001-12-05 Akim Demaille <[email protected]>
* 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.
2001-12-05 Akim Demaille <[email protected]>
* src/output.c (pack_vector): Use assert, not berror.
* src/main.c (berror): Remove, unused.
2001-12-05 Akim Demaille <[email protected]>
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.
2001-12-05 Akim Demaille <[email protected]>
* 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.
2001-12-05 Akim Demaille <[email protected]>
* src/closure.c (print_closure): Improve.
(closure): Use it for printing input and output.
2001-12-05 Akim Demaille <[email protected]>
* src/closure.c (FIRSTS, FDERIVES): Adjust to reality: they are
indexed by nonterminals.
2001-12-05 Akim Demaille <[email protected]>
* src/warshall.c (TC, RTC): De-obsfucate (source reduced to 22% of
what it was!).
* src/warshall.h: Remove accidental duplication of the content.
2001-12-05 Akim Demaille <[email protected]>
* src/closure.c (set_fderives): De-obfuscate.
2001-12-05 Akim Demaille <[email protected]>
* src/closure.c (print_firsts, print_fderives): De-obfuscate.
2001-12-05 Akim Demaille <[email protected]>
* src/closure.c (set_firsts): De-obfuscate.
2001-12-05 Akim Demaille <[email protected]>
* src/output.c (action_row): De-obfuscate
using the good o' techniques: arrays not pointers, variable
locality, BITISSET, RESETBIT etc.
2001-12-05 Akim Demaille <[email protected]>
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.
2001-12-05 Akim Demaille <[email protected]>
* 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''.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (flush_shift, resolve_sr_conflict): De-obfuscate
using the good o' techniques: arrays not pointers, variable
locality, BITISSET, RESETBIT etc.
2001-12-05 Akim Demaille <[email protected]>
* src/state.h (SHIFT_SYMBOL): New.
* src/conflicts.c: Use it to deobfuscate.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (count_sr_conflicts, count_rr_conflicts)
(print_reductions): De-obfuscate using the good o' techniques:
arrays not pointers, variable locality, BITISSET.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (print_reductions): Arrays, not pointers.
Use BITISSET.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (print_reductions): Pessimize, but clarify.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (print_reductions): Improve variable locality.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (print_reductions): Pessimize, but clarify.
2001-12-05 Akim Demaille <[email protected]>
* src/conflicts.c (print_reductions): Improve variable locality.
2001-12-05 Akim Demaille <[email protected]>
* src/state.h (SHIFT_IS_ERROR, SHIFT_IS_GOTO, SHIFT_IS_SHIFT): New.
* src/lalr.c: Use them.
2001-12-05 Akim Demaille <[email protected]>
* src/LR0.c (augment_automaton): Formatting changes.
Better variable locality.
2001-12-05 Akim Demaille <[email protected]>
* src/lalr.c (matrix_print): New.
(transpose): Use it.
Use arrays instead of pointers.
2001-12-05 Akim Demaille <[email protected]>
* src/lalr.c (maxrhs): Move to...
* src/gram.c, src/gram.h (ritem_longest_rhs): here.
* src/lalr.c (build_relations): Adjust.
2001-12-05 Akim Demaille <[email protected]>
* 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.
2001-12-05 Akim Demaille <[email protected]>
* src/lalr.c (initialize_F): Improve variable locality.
Avoid variables used as mere abbreviations.
2001-12-05 Akim Demaille <[email protected]>
* 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.
2001-12-05 Akim Demaille <[email protected]>
* src/lalr.c (traverse): Use arrays instead of pointers.
2001-12-05 Akim Demaille <[email protected]>
* 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'.
2001-12-05 Akim Demaille <[email protected]>
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.
2001-12-05 Akim Demaille <[email protected]>
* src/nullable.c (set_nullable): Deobfuscate the handling of
ritem.
`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.
2001-12-05 Akim Demaille <[email protected]>
* 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.
2001-12-04 Paul Eggert <[email protected]>
* 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.
(yystpcpy): Use prototype if __STDC__ is defined, not just
if __cplusplus is defined.
2001-11-30 Akim Demaille <[email protected]>
* 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.
2001-11-30 Paul Eggert <[email protected]>
* 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.
2001-11-30 Paul Eggert <[email protected]>
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.
2001-11-30 Akim Demaille <[email protected]>
* src/bison.simple (YYSTACK_FREE): Use `do {;} while (0)' as empty
if body instead of `;' to pacify GCC's warnings.
2001-11-30 Akim Demaille <[email protected]>
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.
2001-11-30 Akim Demaille <[email protected]>
* 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.
2001-11-30 Akim Demaille <[email protected]>
* 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.
2001-11-30 Akim Demaille <[email protected]>
* src/reduce.c: Various comment/formatting changes.
(nonterminals_reduce): New, extracted from...
(reduce_grammar_tables): here.
(reduce_grammar): Call nonterminals_reduce.
2001-11-29 Paul Eggert <[email protected]>
* src/bison.simple (YYSTACK_REALLOC): Remove.
(YYSTACK_ALLOC): Resurrect this macro, with its old meaning.
(YYSTACK_FREE, YYSTACK_GAP_MAX, YYSTACK_BYTES, YYSTACK_RELOCATE):
New macros.
(union yyalloc): New type.
(__yy_memcpy): Last arg is size_t, not unsigned int, to remove
an arbitrary restriction on hosts where size_t is wider than int.
(yyparse): Don't dump core if alloca or malloc fails; instead, report
a parser stack overflow. Allocate just one block of memory for all
three stacks, instead of allocating three blocks; this typically is
faster and reduces fragmentation.
Do not limit the number of items in the stack to a value that fits
in 'int', as this is an arbitrary limit on hosts with 64-bit
size_t and 32-bit int.
2001-11-28 Akim Demaille <[email protected]>
* src/LR0.c (shifts_new): New.
(save_shifts, insert_start_shift, augment_automaton): Use it.
2001-11-28 Akim Demaille <[email protected]>
* src/closure.c (closure): `b' and `ruleno' denote the same value:
keep ruleno only.
2001-11-28 Akim Demaille <[email protected]>
* src/closure.c (closure): Instead of looping over word in array
then bits in words, loop over bits in array.
2001-11-28 Akim Demaille <[email protected]>
* src/closure.c (closure): No longer optimize the special case
where all the bits of `ruleset[r]' are set to 0, to make the code
clearer.
2001-11-28 Akim Demaille <[email protected]>
* src/closure.c (closure): `r' and `c' are new variables, used to
de-obfuscate accesses to RULESET and CORE.
2001-11-28 Akim Demaille <[email protected]>
* src/reduce.c (reduce_print): Use ngettext.
(dump_grammar): Improve the trace accuracy.
2001-11-28 Akim Demaille <[email protected]>
* src/reduce.c (dump_grammar): Don't translate trace messages.
2001-11-28 Akim Demaille <[email protected]>
* tests/reduce.at (Useless Terminals, Useless Nonterminals): New.
* src/reduce.c (reduce_grammar_tables): Do not free useless tags,
as all tags are free'ed afterwards.
From Enrico Scholz.
2001-11-27 Akim Demaille <[email protected]>
* src/system.h: Use intl/libgettext.h.
* src/Makefile.am (INCLUDES): Add -I $(top_srcdir).
2001-11-27 Paul Eggert <[email protected]>
* src/bison.simple (YYSTACK_REALLOC): Fix typo that caused us to
use alloca when we didn't want to, and vice versa.
2001-11-27 Akim Demaille <[email protected]>
* tests/torture.at (Exploding the Stack Size with Malloc):
s/YYSTACK_USE_ALLOCA_ALLOCA/YYSTACK_USE_ALLOCA/.
2001-11-27 Akim Demaille <[email protected]>
* src/files.c: Include error.h.
From Hans Aberg.
2001-11-26 Akim Demaille <[email protected]> 2001-11-26 Akim Demaille <[email protected]>
Version 1.30e. Version 1.30e.
@@ -39,11 +857,6 @@
conflicts as expected. conflicts as expected.
* tests/regression.at (%expect right): Adjust. * tests/regression.at (%expect right): Adjust.
2001-11-25 Marc Autret <[email protected]>
* doc/bison.texinfo (Mystery Conflicts): Hint '-v' use.
From Golubev I. N.
2001-11-23 Akim Demaille <[email protected]> 2001-11-23 Akim Demaille <[email protected]>
* lib/alloca.c: Update, from fileutils. * lib/alloca.c: Update, from fileutils.
+15
View File
@@ -1,3 +1,18 @@
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
## 02111-1307 USA
## Process this file with automake to produce Makefile.in -*-Makefile-*- ## Process this file with automake to produce Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2 AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2
+49 -29
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,11 +92,13 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
@@ -149,7 +151,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile $(AUTOMAKE) --gnu Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $@ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck $(SHELL) ./config.status --recheck
@@ -234,16 +236,19 @@ tags-recursive:
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done done
ETAGS = etags
ETAGSFLAGS =
tags: TAGS tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
mkid -fID $$unique $(LISP) mkid -fID $$unique
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP) $(TAGS_FILES) $(LISP)
@@ -254,14 +259,15 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \ fi; \
done; \ done; \
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.hin$$unique$(LISP)$$tags" \ test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| etags $(ETAGS_ARGS) $$tags config.hin $$unique $(LISP) || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
GTAGS: GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \ here=`$(am__cd) $(top_builddir) && pwd` \
@@ -270,14 +276,18 @@ GTAGS:
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = . top_distdir = .
# Avoid unsightly `./'.
distdir = $(PACKAGE)-$(VERSION) distdir = $(PACKAGE)-$(VERSION)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
GZIP_ENV = --best GZIP_ENV = --best
distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES) distdir: $(DISTFILES)
@if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \ @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \
@@ -285,17 +295,20 @@ distdir: $(DISTFILES)
echo "NEWS not updated; not releasing" 1>&2; \ echo "NEWS not updated; not releasing" 1>&2; \
exit 1; \ exit 1; \
fi fi
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) $(am__remove_distdir)
mkdir $(distdir) mkdir $(distdir)
$(mkinstalldirs) $(distdir)/intl $(distdir)/po $(distdir)/tests $(mkinstalldirs) $(distdir)/intl $(distdir)/po $(distdir)/tests
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -303,7 +316,7 @@ distdir: $(DISTFILES)
|| exit 1; \ || exit 1; \
fi; \ fi; \
done done
for subdir in $(SUBDIRS); do \ list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \ if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \ test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \
@@ -323,22 +336,22 @@ distdir: $(DISTFILES)
|| chmod -R a+r $(distdir) || chmod -R a+r $(distdir)
dist-gzip: distdir dist-gzip: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) $(am__remove_distdir)
dist-bzip2: distdir dist-bzip2: distdir
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) $(am__remove_distdir)
dist dist-all: distdir dist dist-all: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) $(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then # This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another # it guarantees that the distribution is self-contained by making another
# tarfile. # tarfile.
distcheck: dist distcheck: dist
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) $(am__remove_distdir)
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
chmod -R a-w $(distdir); chmod a+w $(distdir) chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/=build mkdir $(distdir)/=build
@@ -348,6 +361,7 @@ distcheck: dist
&& cd $(distdir)/=build \ && cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \ && ../configure --srcdir=.. --prefix=$$dc_install_base \
--with-included-gettext \ --with-included-gettext \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -359,15 +373,20 @@ distcheck: dist
find $$dc_install_base -type f -print ; \ find $$dc_install_base -type f -print ; \
exit 1; } >&2 ) \ exit 1; } >&2 ) \
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
&& $(MAKE) $(AM_MAKEFLAGS) distclean \
&& rm -f $(distdir).tar.gz \ && rm -f $(distdir).tar.gz \
&& (test `find . -type f -print | wc -l` -eq 0 \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|| { echo "ERROR: files left after distclean:" ; \ $(am__remove_distdir)
find . -type f -print ; \
exit 1; } >&2 )
-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
@echo "$(distdir).tar.gz is ready for distribution" | \ @echo "$(distdir).tar.gz is ready for distribution" | \
sed 'h;s/./=/g;p;x;p;x' sed 'h;s/./=/g;p;x;p;x'
distcleancheck: distclean
if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am check-am: all-am
check: check-recursive check: check-recursive
all-am: Makefile config.h all-am: Makefile config.h
@@ -385,6 +404,7 @@ install-am: all-am
installcheck: installcheck-recursive installcheck: installcheck-recursive
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
@@ -439,9 +459,9 @@ uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ .PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
clean-generic clean-recursive dist dist-all dist-bzip2 \ clean-generic clean-recursive dist dist-all dist-bzip2 \
dist-gzip distcheck distclean distclean-generic distclean-hdr \ dist-gzip distcheck distclean distclean-generic distclean-hdr \
distclean-recursive distclean-tags distdir dvi dvi-am \ distclean-recursive distclean-tags distcleancheck distdir dvi \
dvi-recursive info info-am info-recursive install install-am \ dvi-am dvi-recursive info info-am info-recursive install \
install-data install-data-am install-data-recursive \ install-am install-data install-data-am install-data-recursive \
install-exec install-exec-am install-exec-recursive \ install-exec install-exec-am install-exec-recursive \
install-info install-info-am install-info-recursive install-man \ install-info install-info-am install-info-recursive install-man \
install-recursive install-strip installcheck installcheck-am \ install-recursive install-strip installcheck installcheck-am \
+60 -14
View File
@@ -1,7 +1,66 @@
Bison News Bison News
---------- ----------
Changes in version 1.30e: Changes in version 1.33a:
* Revert the C++ namespace changes introduced in 1.31, as they caused too
many portability hassles.
* DJGPP support added.
* Fix portability problems within the test suite.
Changes in version 1.33, 2002-02-07:
* Fix C++ issues
Groff could not be compiled for the definition of size_t was lacking
under some conditions.
* Catch invalid @n
As is done with $n.
Changes in version 1.32, 2002-01-23:
* Fix Yacc output file names
* Portability fixes
* Italian, Dutch translations
Changes in version 1.31, 2002-01-14:
* Many Bug Fixes
* GNU Gettext and %expect
GNU Gettext asserts 10 s/r conflicts, but there are 7. Now that
Bison dies on incorrect %expectations, we fear there will be
too many bug reports for Gettext, so _for the time being_, %expect
does not trigger an error when the input file is named `plural.y'.
* Use of alloca in parsers
If YYSTACK_USE_ALLOCA is defined to 0, then the parsers will use
malloc exclusively. Since 1.29, but was not NEWS'ed.
alloca is used only when compiled with GCC, to avoid portability
problems as on AIX.
* When the generated parser lacks debugging code, YYDEBUG is now 0
(as POSIX requires) instead of being undefined.
* User Actions
Bison has always permitted actions such as { $$ = $1 }: it adds the
ending semicolon. Now if in Yacc compatibility mode, the semicolon
is no longer output: one has to write { $$ = $1; }.
* Better C++ compliance
The output parsers try to respect C++ namespaces.
[This turned out to be a failed experiment, and it was reverted later.]
* Reduced Grammars
Fixed bugs when reporting useless nonterminals.
* 64 bit hosts
The parsers work properly on 64 bit hosts.
* Error messages * Error messages
Some calls to strerror resulted in scrambled or missing error messages. Some calls to strerror resulted in scrambled or missing error messages.
@@ -14,8 +73,6 @@ Changes in version 1.30e:
* Rule line numbers are fixed in traces. * Rule line numbers are fixed in traces.
Changes in version 1.30d:
* Swedish translation * Swedish translation
* Parse errors * Parse errors
@@ -23,17 +80,6 @@ Changes in version 1.30d:
Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'('' Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'(''
Now: parse error: unexpected '/', expecting "number" or '-' or '(' Now: parse error: unexpected '/', expecting "number" or '-' or '('
* Fixed VCG output
Was broken when strings aliases for symbols were used.
Changes in version 1.30c:
* Fixed a few warnings.
* Some portability issues.
Changes in version 1.30b:
* Fixed parser memory leaks. * Fixed parser memory leaks.
When the generated parser was using malloc to extend its stacks, the When the generated parser was using malloc to extend its stacks, the
previous allocations were not freed. previous allocations were not freed.
+14 -1
View File
@@ -5,28 +5,41 @@ Airy Andre [email protected]
Akim Demaille [email protected] Akim Demaille [email protected]
Albert Chin-A-Young [email protected] Albert Chin-A-Young [email protected]
Alexander Belopolsky [email protected] Alexander Belopolsky [email protected]
Andreas Schwab [email protected]
Arnold Robbins [email protected]
Bruce Lilly [email protected]
Cris van Pelt [email protected]
Daniel Hagerty [email protected] Daniel Hagerty [email protected]
David J. MacKenzie [email protected] David J. MacKenzie [email protected]
Dick Streefland [email protected] Dick Streefland [email protected]
Enrico Scholz [email protected]
Evgeny Stambulchik [email protected]
Fabrice Bauzac [email protected] Fabrice Bauzac [email protected]
Golubev I. N [email protected] Florian Krohm [email protected]
H. Merijn Brand [email protected]
Hans Aberg [email protected] Hans Aberg [email protected]
Jesse Thilo [email protected] Jesse Thilo [email protected]
Jim Meyering [email protected] Jim Meyering [email protected]
Juan Manuel Guerrero [email protected] Juan Manuel Guerrero [email protected]
Kees Zeelenberg [email protected]
Keith Browne [email protected] Keith Browne [email protected]
Laurent Mascherpa [email protected] Laurent Mascherpa [email protected]
Marc Autret [email protected] Marc Autret [email protected]
Mike Castle [email protected]
Neil Booth [email protected] Neil Booth [email protected]
Nelson H. F. Beebe [email protected]
Noah Friedman [email protected] Noah Friedman [email protected]
Pascal Bart [email protected] Pascal Bart [email protected]
Paul Eggert [email protected] Paul Eggert [email protected]
Per Allansson [email protected] Per Allansson [email protected]
Peter Hámorský [email protected]
Piotr Gackiewicz [email protected] Piotr Gackiewicz [email protected]
Richard Stallman [email protected] Richard Stallman [email protected]
Robert Anisko [email protected] Robert Anisko [email protected]
Shura [email protected] Shura [email protected]
Tom Lane [email protected] Tom Lane [email protected]
Tom Tromey [email protected]
Wayne Green [email protected]
Wolfram Wagner [email protected] Wolfram Wagner [email protected]
Wwp [email protected] Wwp [email protected]
Vendored
+141 -35
View File
@@ -1,6 +1,6 @@
# aclocal.m4 generated automatically by aclocal 1.5a -*- Autoconf -*- # aclocal.m4 generated automatically by aclocal 1.5c -*- Autoconf -*-
# Copyright 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,8 @@
# This macro actually does too much some checks are only needed if # This macro actually does too much some checks are only needed if
# your package does certain things. But this isn't really a big deal. # your package does certain things. But this isn't really a big deal.
# Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -33,7 +34,7 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# serial 6 # serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4, # written in clear, in which case automake, when reading aclocal.m4,
@@ -48,30 +49,46 @@ AC_PREREQ([2.52])
# the ones we care about. # the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# ---------------------------------------------- # AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE], AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_REQUIRE([AC_PROG_INSTALL])dnl [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
# test to see if srcdir already configured # test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" && if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first]) AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi fi
# Define the identity of the package. # Define the identity of the package.
AC_SUBST([PACKAGE], [$1])dnl dnl Distinguish between old-style and new-style calls.
AC_SUBST([VERSION], [$2])dnl m4_ifval([$2],
ifelse([$3],, [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_SUBST([PACKAGE], [$1])dnl
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl
AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
# Some tools Automake needs. # Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal) AM_MISSING_PROG(ACLOCAL, "aclocal-${am__api_version}")
AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake) AM_MISSING_PROG(AUTOMAKE, "automake-${am__api_version}")
AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo) AM_MISSING_PROG(MAKEINFO, makeinfo)
AM_MISSING_PROG(AMTAR, tar) AM_MISSING_PROG(AMTAR, tar)
@@ -81,9 +98,9 @@ AM_PROG_INSTALL_STRIP
# some platforms. # some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
AC_REQUIRE([AM_SET_DEPDIR])dnl _AM_IF_OPTION([no-dependencies],,
AC_PROVIDE_IFELSE([AC_PROG_][CC], [AC_PROVIDE_IFELSE([AC_PROG_][CC],
[_AM_DEPENDENCIES(CC)], [_AM_DEPENDENCIES(CC)],
[define([AC_PROG_][CC], [define([AC_PROG_][CC],
defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl
@@ -92,6 +109,80 @@ AC_PROVIDE_IFELSE([AC_PROG_][CXX],
[define([AC_PROG_][CXX], [define([AC_PROG_][CXX],
defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl
]) ])
])
# Copyright 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.5c"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.5c])])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright 2001, 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# serial 2
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ------------------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
# _AM_SET_OPTIONS(OPTIONS)
# ----------------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# #
# Check to make sure that the build environment is sane. # Check to make sure that the build environment is sane.
@@ -177,7 +268,7 @@ AC_MSG_RESULT(yes)])
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# serial 2 # serial 3
# AM_MISSING_PROG(NAME, PROGRAM) # AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------ # ------------------------------
@@ -199,8 +290,7 @@ if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run " am_missing_run="$MISSING --run "
else else
am_missing_run= am_missing_run=
am_backtick='`' AC_MSG_WARN([`missing' script is too old or missing])
AC_MSG_WARN([${am_backtick}missing' script is too old or missing])
fi fi
]) ])
@@ -323,6 +413,14 @@ AC_SUBST(install_sh)])
# STRIPPROG with the value of the STRIP variable (set by the user). # STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP], AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using `strip' when the user
# run `make install-strip'. However `strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the `STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])]) AC_SUBST([INSTALL_STRIP_PROGRAM])])
@@ -357,7 +455,7 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
# _AM_DEPENDENCIES(NAME) # _AM_DEPENDENCIES(NAME)
# ---------------------- # ----------------------
# See how the compiler implements dependency checking. # See how the compiler implements dependency checking.
# NAME is "CC", "CXX" or "OBJC". # NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable. # We try a few techniques and use that to set a single cache variable.
# #
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -495,11 +593,13 @@ AC_SUBST([AMDEPBACKSLASH])
# ------------------------------ # ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[for mf in $CONFIG_FILES; do [for mf in $CONFIG_FILES; do
case $mf in # Strip MF so we end up with the name of the file.
Makefile) dirpart=.;; mf=`echo "$mf" | sed -e 's/:.*$//'`
*/Makefile) dirpart=`AS_DIRNAME("$mf")`;; if (head -1 $mf | fgrep 'generated by automake') > /dev/null 2>&1; then
*) continue;; dirpart=`AS_DIRNAME("$mf")`
esac else
dirpart=
fi
grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
# Extract the definition of DEP_FILES from the Makefile without # Extract the definition of DEP_FILES from the Makefile without
# running `make'. # running `make'.
@@ -546,11 +646,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
]) ])
# AM_MAKE_INCLUDE() # Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*-
# -----------------
# Check to see how make treats includes.
# Copyright 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -567,6 +663,11 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# serial 2
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE], AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make} [am_make=${MAKE-make}
cat > confinc << 'END' cat > confinc << 'END'
@@ -575,7 +676,7 @@ doit:
END END
# If we don't find an include directive, just comment out the code. # If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make]) AC_MSG_CHECKING([for style of include used by $am_make])
am__include='#' am__include="#"
am__quote= am__quote=
_am_result=none _am_result=none
# First try GNU make style include. # First try GNU make style include.
@@ -595,7 +696,7 @@ if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf echo '.include "confinc"' > confmf
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
am__include=.include am__include=.include
am__quote='"' am__quote="\""
_am_result=BSD _am_result=BSD
fi fi
fi fi
@@ -642,7 +743,12 @@ if $2; then
else else
$1_TRUE='#' $1_TRUE='#'
$1_FALSE= $1_FALSE=
fi]) fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
AC_MSG_ERROR([conditional \"$1\" was never defined.
Usually this means the macro was only invoked conditionally.])
fi])])
# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+30 -10
View File
@@ -35,10 +35,18 @@
*/ */
#undef HAVE_DECL_MEMCHR #undef HAVE_DECL_MEMCHR
/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
don't. */
#undef HAVE_DECL_MEMRCHR
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. /* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
*/ */
#undef HAVE_DECL_STPCPY #undef HAVE_DECL_STPCPY
/* Define to 1 if you have the declaration of `strchr', and to 0 if you don't.
*/
#undef HAVE_DECL_STRCHR
/* Define to 1 if you have the declaration of `strerror', and to 0 if you /* Define to 1 if you have the declaration of `strerror', and to 0 if you
don't. */ don't. */
#undef HAVE_DECL_STRERROR #undef HAVE_DECL_STRERROR
@@ -47,14 +55,14 @@
don't. */ don't. */
#undef HAVE_DECL_STRERROR_R #undef HAVE_DECL_STRERROR_R
/* Define to 1 if you have the declaration of `strndup', and to 0 if you
don't. */
#undef HAVE_DECL_STRNDUP
/* Define to 1 if you have the declaration of `strnlen', and to 0 if you /* Define to 1 if you have the declaration of `strnlen', and to 0 if you
don't. */ don't. */
#undef HAVE_DECL_STRNLEN #undef HAVE_DECL_STRNLEN
/* Define to 1 if you have the declaration of `strspn', and to 0 if you don't.
*/
#undef HAVE_DECL_STRSPN
/* Define if the malloc check has been performed. */ /* Define if the malloc check has been performed. */
#undef HAVE_DONE_WORKING_MALLOC_CHECK #undef HAVE_DONE_WORKING_MALLOC_CHECK
@@ -133,6 +141,9 @@
/* Define to 1 if you have the `mempcpy' function. */ /* Define to 1 if you have the `mempcpy' function. */
#undef HAVE_MEMPCPY #undef HAVE_MEMPCPY
/* Define to 1 if you have the `memrchr' function. */
#undef HAVE_MEMRCHR
/* Define to 1 if you have the `mkstemp' function. */ /* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP #undef HAVE_MKSTEMP
@@ -190,12 +201,6 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H #undef HAVE_STRING_H
/* Define to 1 if you have the `strndup' function. */
#undef HAVE_STRNDUP
/* Define to 1 if you have the `strnlen' function. */
#undef HAVE_STRNLEN
/* Define to 1 if you have the `strspn' function. */ /* Define to 1 if you have the `strspn' function. */
#undef HAVE_STRSPN #undef HAVE_STRSPN
@@ -241,6 +246,21 @@
/* Name of package */ /* Name of package */
#undef PACKAGE #undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define if compiler has function prototypes */ /* Define if compiler has function prototypes */
#undef PROTOTYPES #undef PROTOTYPES
+13 -9
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,15 +92,16 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
EXTRA_DIST = move-if-change prev-version.txt EXTRA_DIST = move-if-change prev-version.txt
subdir = config subdir = config
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -116,12 +117,11 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu config/Makefile $(AUTOMAKE) --gnu config/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .. top_distdir = ..
@@ -129,13 +129,16 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES) distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -160,6 +163,7 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
+69 -57
View File
@@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# Attempt to guess a canonical system name. # Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# Free Software Foundation, Inc. # 2000, 2001, 2002 Free Software Foundation, Inc.
timestamp='2001-11-26' timestamp='2002-02-19'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ timestamp='2001-11-26'
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program. # the same distribution terms that you use for the rest of that program.
# Originally written by Per Bothner <bothner@cygnus.com>. # Originally written by Per Bothner <per@bothner.com>.
# Please send patches to <[email protected]>. Submit a context # Please send patches to <[email protected]>. Submit a context
# diff and a properly formatted ChangeLog entry. # diff and a properly formatted ChangeLog entry.
# #
@@ -135,23 +135,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# object file format. This provides both forward # object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the # compatibility and a consistent mechanism for selecting the
# object file format. # object file format.
# Determine the machine/vendor (is the vendor relevant). #
case "${UNAME_MACHINE}" in # Note: NetBSD doesn't particularly care about the vendor
amiga) machine=m68k-unknown ;; # portion of the name. We always set it to "unknown".
arm32) machine=arm-unknown ;; UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \
atari*) machine=m68k-atari ;; UNAME_MACHINE_ARCH=unknown
sun3*) machine=m68k-sun ;; case "${UNAME_MACHINE_ARCH}" in
mac68k) machine=m68k-apple ;; arm*) machine=arm-unknown ;;
macppc) machine=powerpc-apple ;; sh3el) machine=shl-unknown ;;
hp3[0-9][05]) machine=m68k-hp ;; sh3eb) machine=sh-unknown ;;
ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
sparc*) machine=`uname -p`-unknown ;;
*) machine=${UNAME_MACHINE}-unknown ;;
esac esac
# The Operating System including object format, if it has switched # The Operating System including object format, if it has switched
# to ELF recently, or will in the future. # to ELF recently, or will in the future.
case "${UNAME_MACHINE}" in case "${UNAME_MACHINE_ARCH}" in
i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep __ELF__ >/dev/null | grep __ELF__ >/dev/null
@@ -291,6 +289,9 @@ EOF
*:[Aa]miga[Oo][Ss]:*:*) *:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;; exit 0 ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
exit 0 ;;
*:OS/390:*:*) *:OS/390:*:*)
echo i370-ibm-openedition echo i370-ibm-openedition
exit 0 ;; exit 0 ;;
@@ -339,7 +340,7 @@ EOF
echo m68k-sun-sunos${UNAME_RELEASE} echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
sun*:*:4.2BSD:*) sun*:*:4.2BSD:*)
UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
case "`/bin/arch`" in case "`/bin/arch`" in
sun3) sun3)
@@ -508,7 +509,7 @@ EOF
fi fi
exit 0 ;; exit 0 ;;
*:AIX:*:[45]) *:AIX:*:[45])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000 IBM_ARCH=rs6000
else else
@@ -682,9 +683,6 @@ EOF
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd echo c4-convex-bsd
exit 0 ;; exit 0 ;;
CRAY*X-MP:*:*:*)
echo xmp-cray-unicos
exit 0 ;;
CRAY*Y-MP:*:*:*) CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;; exit 0 ;;
@@ -706,9 +704,6 @@ EOF
CRAY*SV1:*:*:*) CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;; exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
@@ -736,6 +731,9 @@ EOF
i*:PW*:*) i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32 echo ${UNAME_MACHINE}-pc-pw32
exit 0 ;; exit 0 ;;
x86:Interix*:3*)
echo i386-pc-interix3
exit 0 ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*) i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem? # How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -767,10 +765,24 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;; exit 0 ;;
mips:Linux:*:*) mips:Linux:*:*)
case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in eval $set_cc_for_build
big) echo mips-unknown-linux-gnu && exit 0 ;; sed 's/^ //' << EOF >$dummy.c
little) echo mipsel-unknown-linux-gnu && exit 0 ;; #undef CPU
esac #undef mips
#undef mipsel
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=mipsel
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
rm -f $dummy.c
test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
;; ;;
ppc:Linux:*:*) ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu echo powerpc-unknown-linux-gnu
@@ -819,7 +831,8 @@ EOF
# The BFD linker knows what the default object file format is, so # The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent # first see if it will tell us. cd to the root directory to prevent
# problems with other programs or directories called `ld' in the path. # problems with other programs or directories called `ld' in the path.
ld_supported_targets=`cd /; ld --help 2>&1 \ # Set LC_ALL=C to ensure ld outputs messages in English.
ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
| sed -ne '/supported targets:/!d | sed -ne '/supported targets:/!d
s/[ ][ ]*/ /g s/[ ][ ]*/ /g
s/.*supported targets: *// s/.*supported targets: *//
@@ -843,32 +856,29 @@ EOF
esac esac
# Determine whether the default compiler is a.out or elf # Determine whether the default compiler is a.out or elf
eval $set_cc_for_build eval $set_cc_for_build
cat >$dummy.c <<EOF sed 's/^ //' << EOF >$dummy.c
#include <features.h> #include <features.h>
#ifdef __cplusplus #ifdef __ELF__
#include <stdio.h> /* for printf() prototype */ # ifdef __GLIBC__
int main (int argc, char *argv[]) { # if __GLIBC__ >= 2
#else LIBC=gnu
int main (argc, argv) int argc; char *argv[]; { # else
#endif LIBC=gnulibc1
#ifdef __ELF__ # endif
# ifdef __GLIBC__ # else
# if __GLIBC__ >= 2 LIBC=gnulibc1
printf ("%s-pc-linux-gnu\n", argv[1]); # endif
# else #else
printf ("%s-pc-linux-gnulibc1\n", argv[1]); #ifdef __INTEL_COMPILER
# endif LIBC=gnu
# else #else
printf ("%s-pc-linux-gnulibc1\n", argv[1]); LIBC=gnuaout
# endif #endif
#else #endif
printf ("%s-pc-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF EOF
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
rm -f $dummy.c $dummy rm -f $dummy.c
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;; ;;
i*86:DYNIX/ptx:4*:*) i*86:DYNIX/ptx:4*:*)
@@ -1050,8 +1060,10 @@ EOF
*:procnto*:*:* | *:QNX:[0123456789]*:*) *:procnto*:*:* | *:QNX:[0123456789]*:*)
if test "${UNAME_MACHINE}" = "x86pc"; then if test "${UNAME_MACHINE}" = "x86pc"; then
UNAME_MACHINE=pc UNAME_MACHINE=pc
echo i386-${UNAME_MACHINE}-nto-qnx
else
echo `uname -p`-${UNAME_MACHINE}-nto-qnx
fi fi
echo `uname -p`-${UNAME_MACHINE}-nto-qnx
exit 0 ;; exit 0 ;;
*:QNX:*:4*) *:QNX:*:4*)
echo i386-pc-qnx echo i386-pc-qnx
+72 -49
View File
@@ -1,9 +1,9 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# Free Software Foundation, Inc. # 2000, 2001, 2002 Free Software Foundation, Inc.
timestamp='2001-11-21' timestamp='2002-02-22'
# This file is (in principle) common to ALL GNU software. # This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software # The presence of a machine in this file suggests that SOME GNU software
@@ -118,7 +118,7 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations. # Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;; ;;
@@ -227,6 +227,7 @@ case $basic_machine in
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \ | c4x | clipper \
| d10v | d30v | dsp16xx \ | d10v | d30v | dsp16xx \
@@ -234,24 +235,24 @@ case $basic_machine in
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia64 \
| m32r | m68000 | m68k | m88k | mcore \ | m32r | m68000 | m68k | m88k | mcore \
| mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
| mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
| mipsisa32 \ | mipsisa32 \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| ns16k | ns32k \ | ns16k | ns32k \
| openrisc \ | openrisc | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \ | pyramid \
| sh | sh[34] | sh[34]eb | shbe | shle \ | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
| strongarm \ | strongarm \
| tahoe | thumb | tic80 | tron \ | tahoe | thumb | tic80 | tron \
| v850 \ | v850 | v850e \
| we32k \ | we32k \
| x86 | xscale | xstormy16 \ | x86 | xscale | xstormy16 | xtensa \
| z8k) | z8k)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
@@ -278,12 +279,13 @@ case $basic_machine in
580-* \ 580-* \
| a29k-* \ | a29k-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alphapca5[67]-* | arc-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armv*-* \ | arm-* | armbe-* | armle-* | armv*-* \
| avr-* \ | avr-* \
| bs2000-* \ | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c54x-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \
| clipper-* | cray2-* | cydra-* \ | clipper-* | cydra-* \
| d10v-* | d30v-* \ | d10v-* | d30v-* \
| elxsi-* \ | elxsi-* \
| f30[01]-* | f700-* | fr30-* | fx80-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \
@@ -291,7 +293,7 @@ case $basic_machine in
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia64-* \
| m32r-* \ | m32r-* \
| m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | mcore-* \ | m88110-* | m88k-* | mcore-* \
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
@@ -303,13 +305,14 @@ case $basic_machine in
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \ | pyramid-* \
| romp-* | rs6000-* \ | romp-* | rs6000-* \
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | vax-* \ | v850-* | v850e-* | vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
| xtensa-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-*)
;; ;;
@@ -374,6 +377,10 @@ case $basic_machine in
basic_machine=ns32k-sequent basic_machine=ns32k-sequent
os=-dynix os=-dynix
;; ;;
c90)
basic_machine=c90-cray
os=-unicos
;;
convex-c1) convex-c1)
basic_machine=c1-convex basic_machine=c1-convex
os=-bsd os=-bsd
@@ -394,16 +401,8 @@ case $basic_machine in
basic_machine=c38-convex basic_machine=c38-convex
os=-bsd os=-bsd
;; ;;
cray | ymp) cray | j90)
basic_machine=ymp-cray basic_machine=j90-cray
os=-unicos
;;
cray2)
basic_machine=cray2-cray
os=-unicos
;;
[cjt]90)
basic_machine=${basic_machine}-cray
os=-unicos os=-unicos
;; ;;
crds | unos) crds | unos)
@@ -418,6 +417,14 @@ case $basic_machine in
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec basic_machine=mips-dec
;; ;;
decsystem10* | dec10*)
basic_machine=pdp10-dec
os=-tops10
;;
decsystem20* | dec20*)
basic_machine=pdp10-dec
os=-tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \ delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola) | 3300-motorola | delta-motorola)
basic_machine=m68k-motorola basic_machine=m68k-motorola
@@ -598,14 +605,6 @@ case $basic_machine in
basic_machine=m68k-atari basic_machine=m68k-atari
os=-mint os=-mint
;; ;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux-gnu
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux-gnu
;;
mips3*-*) mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;; ;;
@@ -620,6 +619,10 @@ case $basic_machine in
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
os=-coff os=-coff
;; ;;
morphos)
basic_machine=powerpc-unknown
os=-morphos
;;
msdos) msdos)
basic_machine=i386-pc basic_machine=i386-pc
os=-msdos os=-msdos
@@ -699,6 +702,10 @@ case $basic_machine in
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
;; ;;
or32 | or32-*)
basic_machine=or32-unknown
os=-coff
;;
OSE68000 | ose68000) OSE68000 | ose68000)
basic_machine=m68000-ericsson basic_machine=m68000-ericsson
os=-ose os=-ose
@@ -859,7 +866,7 @@ case $basic_machine in
sun386 | sun386i | roadrunner) sun386 | sun386i | roadrunner)
basic_machine=i386-sun basic_machine=i386-sun
;; ;;
sv1) sv1)
basic_machine=sv1-cray basic_machine=sv1-cray
os=-unicos os=-unicos
;; ;;
@@ -867,8 +874,16 @@ case $basic_machine in
basic_machine=i386-sequent basic_machine=i386-sequent
os=-dynix os=-dynix
;; ;;
t3d)
basic_machine=alpha-cray
os=-unicos
;;
t3e) t3e)
basic_machine=t3e-cray basic_machine=alphaev5-cray
os=-unicos
;;
t90)
basic_machine=t90-cray
os=-unicos os=-unicos
;; ;;
tic54x | c54x*) tic54x | c54x*)
@@ -881,6 +896,10 @@ case $basic_machine in
tx39el) tx39el)
basic_machine=mipstx39el-unknown basic_machine=mipstx39el-unknown
;; ;;
toad1)
basic_machine=pdp10-xkl
os=-tops20
;;
tower | tower-32) tower | tower-32)
basic_machine=m68k-ncr basic_machine=m68k-ncr
;; ;;
@@ -931,13 +950,13 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
os=-windows32-msvcrt os=-windows32-msvcrt
;; ;;
xmp)
basic_machine=xmp-cray
os=-unicos
;;
xps | xps100) xps | xps100)
basic_machine=xps100-honeywell basic_machine=xps100-honeywell
;; ;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
z8k-*-coff) z8k-*-coff)
basic_machine=z8k-unknown basic_machine=z8k-unknown
os=-sim os=-sim
@@ -958,13 +977,6 @@ case $basic_machine in
op60c) op60c)
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
;; ;;
mips)
if [ x$os = x-linux-gnu ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp) romp)
basic_machine=romp-ibm basic_machine=romp-ibm
;; ;;
@@ -987,6 +999,9 @@ case $basic_machine in
sh3 | sh4 | sh3eb | sh4eb) sh3 | sh4 | sh3eb | sh4eb)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sh64)
basic_machine=sh64-unknown
;;
sparc | sparcv9 | sparcv9b) sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun basic_machine=sparc-sun
;; ;;
@@ -1074,7 +1089,8 @@ case $os in
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux*) | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@@ -1135,6 +1151,9 @@ case $os in
-ctix* | -uts*) -ctix* | -uts*)
os=-sysv os=-sysv
;; ;;
-nova*)
os=-rtmk-nova
;;
-ns2 ) -ns2 )
os=-nextstep2 os=-nextstep2
;; ;;
@@ -1209,6 +1228,7 @@ case $basic_machine in
arm*-semi) arm*-semi)
os=-aout os=-aout
;; ;;
# This must come before the *-dec entry.
pdp10-*) pdp10-*)
os=-tops20 os=-tops20
;; ;;
@@ -1239,6 +1259,9 @@ case $basic_machine in
mips*-*) mips*-*)
os=-elf os=-elf
;; ;;
or32-*)
os=-coff
;;
*-tti) # must be before sparc entry or we get the wrong os. *-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3 os=-sysv3
;; ;;
+28 -3
View File
@@ -31,7 +31,16 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
fi fi
# `libtool' can also be set to `yes' or `no'. # `libtool' can also be set to `yes' or `no'.
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} if test -z "$depfile"; then
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
dir=`echo "$object" | sed 's,/.*$,/,'`
if test "$dir" = "$object"; then
dir=
fi
# FIXME: should be _deps on DOS.
depfile="$dir.deps/$base"
fi
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile" rm -f "$tmpdepfile"
@@ -204,8 +213,9 @@ tru64)
# dependencies in `foo.d' instead, so we check for that too. # dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected. # Subdirectories are respected.
tmpdepfile1="$object.d" base=`echo "$object" | sed -e 's/\.o$/.d/' -e 's/\.lo$/.d/'`
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` tmpdepfile1="$base.o.d"
tmpdepfile2="$base.d"
if test "$libtool" = yes; then if test "$libtool" = yes; then
"$@" -Wc,-MD "$@" -Wc,-MD
else else
@@ -382,6 +392,21 @@ msvisualcpp)
done done
;; ;;
esac esac
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E | "$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
) & ) &
+2 -2
View File
@@ -87,7 +87,7 @@ Supported PROGRAM values:
exit 1 exit 1
;; ;;
aclocal) aclocal*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed. # We have it, but it failed.
exit 1 exit 1
@@ -139,7 +139,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
touch $touch_files touch $touch_files
;; ;;
automake) automake*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed. # We have it, but it failed.
exit 1 exit 1
+1 -1
View File
@@ -1 +1 @@
1.30d 1.33
+232 -195
View File
@@ -3,10 +3,10 @@
% Load plain if necessary, i.e., if running under initex. % Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
% %
\def\texinfoversion{2001-07-25.07} \def\texinfoversion{2002-02-14.08}
% %
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
% 2000, 01 Free Software Foundation, Inc. % 2000, 01, 02 Free Software Foundation, Inc.
% %
% This texinfo.tex file is free software; you can redistribute it and/or % This texinfo.tex file is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License as % modify it under the terms of the GNU General Public License as
@@ -30,14 +30,17 @@
% Please try the latest version of texinfo.tex before submitting bug % Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from: % reports; you can get the latest version from:
% ftp://ftp.gnu.org/gnu/texinfo.tex % ftp://ftp.gnu.org/gnu/texinfo.tex
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
% ftp://texinfo.org/tex/texinfo.tex % ftp://texinfo.org/texinfo/texinfo.tex
% ftp://us.ctan.org/macros/texinfo/texinfo.tex % ftp://tug.org/tex/texinfo.tex
% (and all CTAN mirrors, finger [email protected] for a list). % (and all CTAN mirrors, see http://www.ctan.org),
% /home/gd/gnu/doc/texinfo.tex on the GNU machines. % and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
%
% The texinfo.tex in any given Texinfo distribution could well be out % The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check. % of date, so if that's what you're using, please check.
% Texinfo has a small home page at http://texinfo.org/. %
% Texinfo has a small home page at http://texinfo.org/ and also
% http://www.gnu.org/software/texinfo.
% %
% Send bug reports to [email protected]. Please include including a % Send bug reports to [email protected]. Please include including a
% complete document in each bug report with which we can reproduce the % complete document in each bug report with which we can reproduce the
@@ -51,12 +54,12 @@
% tex foo.texi % tex foo.texi
% tex foo.texi % tex foo.texi
% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. % dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
% The extra runs of TeX get the cross-reference information correct. % The extra TeX runs get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more % Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary. % than two; texi2dvi does it as many times as necessary.
% %
% It is possible to adapt texinfo.tex for other languages. You can get % It is possible to adapt texinfo.tex for other languages. You can get
% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. % the existing language-specific files from the full Texinfo distribution.
\message{Loading texinfo [version \texinfoversion]:} \message{Loading texinfo [version \texinfoversion]:}
@@ -833,18 +836,32 @@ where each line of input produces a line of output.}
% %
\def\asis#1{#1} \def\asis#1{#1}
% @math means output in math mode. % @math outputs its argument in math mode.
% We don't use $'s directly in the definition of \math because control % We don't use $'s directly in the definition of \math because we need
% sequences like \math are expanded when the toc file is written. Then, % to set catcodes according to plain TeX first, to allow for subscripts,
% we read the toc file back, the $'s will be normal characters (as they % superscripts, special math chars, etc.
% should be, according to the definition of Texinfo). So we must use a %
% control sequence to switch into and out of math mode. % @math does not do math typesetting in section titles, index
% % entries, and other such contexts where the catcodes are set before
% This isn't quite enough for @math to work properly in indices, but it % @math gets a chance to work. This could perhaps be fixed, but for now
% seems unlikely it will ever be needed there. % at least we can have real math in the main text, where it's needed most.
% %
%
\let\implicitmath = $ \let\implicitmath = $
\def\math#1{\implicitmath #1\implicitmath} %
% One complication: _ usually means subscripts, but it could also mean
% an actual _ character, as in @math{@var{some_variable} + 1}. So make
% _ within @math be active (mathcode "8000), and distinguish by seeing
% if the current family is \slfam, which is what @var uses.
%
{\catcode95 = \active % 95 = _
\gdef\mathunderscore{%
\catcode95=\active
\def_{\ifnum\fam=\slfam\_\else\sb\fi}%
}}
%
\def\math{\tex\mathcode`\_="8000\mathunderscore \implicitmath\finishmath}
\def\finishmath#1{#1\implicitmath\Etex}
% @bullet and @minus need the same treatment as @math, just above. % @bullet and @minus need the same treatment as @math, just above.
\def\bullet{\implicitmath\ptexbullet\implicitmath} \def\bullet{\implicitmath\ptexbullet\implicitmath}
@@ -927,10 +944,12 @@ where each line of input produces a line of output.}
\def\dopdfimage#1#2#3{% \def\dopdfimage#1#2#3{%
\def\imagewidth{#2}% \def\imagewidth{#2}%
\def\imageheight{#3}% \def\imageheight{#3}%
% without \immediate, pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14 \ifnum\pdftexversion < 14
\pdfimage \immediate\pdfimage
\else \else
\pdfximage \immediate\pdfximage
\fi \fi
\ifx\empty\imagewidth\else width \imagewidth \fi \ifx\empty\imagewidth\else width \imagewidth \fi
\ifx\empty\imageheight\else height \imageheight \fi \ifx\empty\imageheight\else height \imageheight \fi
@@ -943,7 +962,7 @@ where each line of input produces a line of output.}
\pdfrefximage \pdflastximage \pdfrefximage \pdflastximage
\fi} \fi}
\def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
\def\pdfmkpgn#1{#1@} \def\pdfmkpgn#1{#1}
\let\linkcolor = \Blue % was Cyan, but that seems light? \let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink} \def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines % Adding outlines to PDF; macros for calculating structure of outlines
@@ -955,7 +974,7 @@ where each line of input produces a line of output.}
\expandafter\xdef\csname#1\endcsname{\the\tempnum}} \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
\def\pdfmakeoutlines{{% \def\pdfmakeoutlines{{%
\openin 1 \jobname.toc \openin 1 \jobname.toc
\ifeof 1\else\bgroup \ifeof 1\else\begingroup
\closein 1 \closein 1
\indexnofonts \indexnofonts
\def\tt{} \def\tt{}
@@ -965,6 +984,7 @@ where each line of input produces a line of output.}
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
% %
\def\chapentry ##1##2##3{} \def\chapentry ##1##2##3{}
\let\appendixentry = \chapentry
\def\unnumbchapentry ##1##2{} \def\unnumbchapentry ##1##2{}
\def\secentry ##1##2##3##4{\advancenumber{chap##2}} \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
\def\unnumbsecentry ##1##2{} \def\unnumbsecentry ##1##2{}
@@ -975,6 +995,7 @@ where each line of input produces a line of output.}
\input \jobname.toc \input \jobname.toc
\def\chapentry ##1##2##3{% \def\chapentry ##1##2##3{%
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
\let\appendixentry = \chapentry
\def\unnumbchapentry ##1##2{% \def\unnumbchapentry ##1##2{%
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
\def\secentry ##1##2##3##4{% \def\secentry ##1##2##3##4{%
@@ -990,7 +1011,7 @@ where each line of input produces a line of output.}
\def\unnumbsubsubsecentry ##1##2{% \def\unnumbsubsubsecentry ##1##2{%
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
\input \jobname.toc \input \jobname.toc
\egroup\fi \endgroup\fi
}} }}
\def\makelinks #1,{% \def\makelinks #1,{%
\def\params{#1}\def\E{END}% \def\params{#1}\def\E{END}%
@@ -1107,9 +1128,6 @@ where each line of input produces a line of output.}
}% }%
} }
% Use Computer Modern fonts at \magstephalf (11pt).
\newcount\mainmagstep \mainmagstep=\magstephalf
% Set the font macro #1 to the font named #2, adding on the % Set the font macro #1 to the font named #2, adding on the
% specified font prefix (normally `cm'). % specified font prefix (normally `cm').
% #3 is the font's design size, #4 is a scale factor % #3 is the font's design size, #4 is a scale factor
@@ -1138,13 +1156,16 @@ where each line of input produces a line of output.}
\def\scshape{csc} \def\scshape{csc}
\def\scbshape{csc} \def\scbshape{csc}
\newcount\mainmagstep
\ifx\bigger\relax \ifx\bigger\relax
\let\mainmagstep=\magstep1 % not really supported.
\setfont\textrm\rmshape{12}{1000} \let\mainmagstep=\magstep1
\setfont\texttt\ttshape{12}{1000} \setfont\textrm\rmshape{12}{1000}
\setfont\texttt\ttshape{12}{1000}
\else \else
\setfont\textrm\rmshape{10}{\mainmagstep} \mainmagstep=\magstephalf
\setfont\texttt\ttshape{10}{\mainmagstep} \setfont\textrm\rmshape{10}{\mainmagstep}
\setfont\texttt\ttshape{10}{\mainmagstep}
\fi \fi
% Instead of cmb10, you many want to use cmbx10. % Instead of cmb10, you many want to use cmbx10.
% cmbx10 is a prettier font on its own, but cmb10 % cmbx10 is a prettier font on its own, but cmb10
@@ -1224,20 +1245,6 @@ where each line of input produces a line of output.}
\font\seci=cmmi12 scaled \magstep1 \font\seci=cmmi12 scaled \magstep1
\font\secsy=cmsy10 scaled \magstep2 \font\secsy=cmsy10 scaled \magstep2
% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad.
% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded.
% \setfont\ssecsl\slshape{10}{\magstep1}
% \setfont\ssectt\ttshape{10}{\magstep1}
% \setfont\ssecsf\sfshape{10}{\magstep1}
%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx.
%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than
%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1.
%\setfont\ssectt\ttshape{10}{1315}
%\setfont\ssecsf\sfshape{10}{1315}
%\let\ssecbf=\ssecrm
% Subsection fonts (13.15pt). % Subsection fonts (13.15pt).
\setfont\ssecrm\rmbshape{12}{\magstephalf} \setfont\ssecrm\rmbshape{12}{\magstephalf}
\setfont\ssecit\itbshape{10}{1315} \setfont\ssecit\itbshape{10}{1315}
@@ -1254,17 +1261,16 @@ where each line of input produces a line of output.}
% In order for the font changes to affect most math symbols and letters, % In order for the font changes to affect most math symbols and letters,
% we have to define the \textfont of the standard families. Since % we have to define the \textfont of the standard families. Since
% texinfo doesn't allow for producing subscripts and superscripts, we % texinfo doesn't allow for producing subscripts and superscripts except
% don't bother to reset \scriptfont and \scriptscriptfont (which would % in the main text, we don't bother to reset \scriptfont and
% also require loading a lot more fonts). % \scriptscriptfont (which would also require loading a lot more fonts).
% %
\def\resetmathfonts{% \def\resetmathfonts{%
\textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
\textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
\textfont\ttfam = \tentt \textfont\sffam = \tensf \textfont\ttfam=\tentt \textfont\sffam=\tensf
} }
% The font-changing commands redefine the meanings of \tenSTYLE, instead % The font-changing commands redefine the meanings of \tenSTYLE, instead
% of just \STYLE. We do this so that font changes will continue to work % of just \STYLE. We do this so that font changes will continue to work
% in math mode, where it is the current \fam that is relevant in most % in math mode, where it is the current \fam that is relevant in most
@@ -2753,9 +2759,23 @@ width0pt\relax} \fi
\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
% Take care of texinfo commands likely to appear in an index entry.
% (Must be a way to avoid doing expansion at all, and thus not have to
% laboriously list every single command here.)
%
\def\indexdummies{% \def\indexdummies{%
\def\ { }% \def\ { }%
\def\@{@}% change to @@ when we switch to @ as escape char in aux files.
% Need these in case \tex is in effect and \{ is a \delimiter again.
% But can't use \lbracecmd and \rbracecmd because texindex assumes
% braces and backslashes are used only as delimiters.
\let\{ = \mylbrace
\let\} = \myrbrace
\def\_{{\realbackslash _}}%
\normalturnoffactive
%
% Take care of the plain tex accent commands. % Take care of the plain tex accent commands.
\def\,##1{\realbackslash ,{##1}}%
\def\"{\realbackslash "}% \def\"{\realbackslash "}%
\def\`{\realbackslash `}% \def\`{\realbackslash `}%
\def\'{\realbackslash '}% \def\'{\realbackslash '}%
@@ -2768,69 +2788,66 @@ width0pt\relax} \fi
\def\u{\realbackslash u}% \def\u{\realbackslash u}%
\def\v{\realbackslash v}% \def\v{\realbackslash v}%
\def\H{\realbackslash H}% \def\H{\realbackslash H}%
% Take care of the plain tex special European modified letters.
\def\oe{\realbackslash oe}%
\def\ae{\realbackslash ae}%
\def\aa{\realbackslash aa}%
\def\OE{\realbackslash OE}%
\def\AE{\realbackslash AE}%
\def\AA{\realbackslash AA}%
\def\o{\realbackslash o}%
\def\O{\realbackslash O}%
\def\l{\realbackslash l}%
\def\L{\realbackslash L}%
\def\ss{\realbackslash ss}%
% Take care of texinfo commands likely to appear in an index entry.
% (Must be a way to avoid doing expansion at all, and thus not have to
% laboriously list every single command here.)
\def\@{@}% will be @@ when we switch to @ as escape char.
% Need these in case \tex is in effect and \{ is a \delimiter again.
% But can't use \lbracecmd and \rbracecmd because texindex assumes
% braces and backslashes are used only as delimiters.
\let\{ = \mylbrace
\let\} = \myrbrace
\def\_{{\realbackslash _}}%
\def\w{\realbackslash w }%
\def\bf{\realbackslash bf }%
%\def\rm{\realbackslash rm }%
\def\sl{\realbackslash sl }%
\def\sf{\realbackslash sf}%
\def\tt{\realbackslash tt}%
\def\gtr{\realbackslash gtr}%
\def\less{\realbackslash less}%
\def\hat{\realbackslash hat}%
\def\TeX{\realbackslash TeX}%
\def\dots{\realbackslash dots }%
\def\result{\realbackslash result}%
\def\equiv{\realbackslash equiv}%
\def\expansion{\realbackslash expansion}%
\def\print{\realbackslash print}%
\def\error{\realbackslash error}%
\def\point{\realbackslash point}%
\def\copyright{\realbackslash copyright}%
\def\tclose##1{\realbackslash tclose {##1}}%
\def\code##1{\realbackslash code {##1}}%
\def\uref##1{\realbackslash uref {##1}}%
\def\url##1{\realbackslash url {##1}}%
\def\env##1{\realbackslash env {##1}}%
\def\command##1{\realbackslash command {##1}}%
\def\option##1{\realbackslash option {##1}}%
\def\dotless##1{\realbackslash dotless {##1}}% \def\dotless##1{\realbackslash dotless {##1}}%
\def\samp##1{\realbackslash samp {##1}}% % Take care of the plain tex special European modified letters.
\def\,##1{\realbackslash ,{##1}}% \def\AA{\realbackslash AA}%
\def\AE{\realbackslash AE}%
\def\L{\realbackslash L}%
\def\OE{\realbackslash OE}%
\def\O{\realbackslash O}%
\def\aa{\realbackslash aa}%
\def\ae{\realbackslash ae}%
\def\l{\realbackslash l}%
\def\oe{\realbackslash oe}%
\def\o{\realbackslash o}%
\def\ss{\realbackslash ss}%
%
% Although these internals commands shouldn't show up, sometimes they do.
\def\bf{\realbackslash bf }%
\def\gtr{\realbackslash gtr}%
\def\hat{\realbackslash hat}%
\def\less{\realbackslash less}%
%\def\rm{\realbackslash rm }%
\def\sf{\realbackslash sf}%
\def\sl{\realbackslash sl }%
\def\tclose##1{\realbackslash tclose {##1}}%
\def\tt{\realbackslash tt}%
%
\def\b##1{\realbackslash b {##1}}%
\def\i##1{\realbackslash i {##1}}%
\def\sc##1{\realbackslash sc {##1}}%
\def\t##1{\realbackslash t {##1}}% \def\t##1{\realbackslash t {##1}}%
\def\r##1{\realbackslash r {##1}}% \def\r##1{\realbackslash r {##1}}%
\def\i##1{\realbackslash i {##1}}% %
\def\b##1{\realbackslash b {##1}}% \def\TeX{\realbackslash TeX}%
\def\sc##1{\realbackslash sc {##1}}%
\def\cite##1{\realbackslash cite {##1}}%
\def\key##1{\realbackslash key {##1}}%
\def\file##1{\realbackslash file {##1}}%
\def\var##1{\realbackslash var {##1}}%
\def\kbd##1{\realbackslash kbd {##1}}%
\def\dfn##1{\realbackslash dfn {##1}}%
\def\emph##1{\realbackslash emph {##1}}%
\def\acronym##1{\realbackslash acronym {##1}}% \def\acronym##1{\realbackslash acronym {##1}}%
\def\cite##1{\realbackslash cite {##1}}%
\def\code##1{\realbackslash code {##1}}%
\def\command##1{\realbackslash command {##1}}%
\def\dfn##1{\realbackslash dfn {##1}}%
\def\dots{\realbackslash dots }%
\def\emph##1{\realbackslash emph {##1}}%
\def\env##1{\realbackslash env {##1}}%
\def\file##1{\realbackslash file {##1}}%
\def\kbd##1{\realbackslash kbd {##1}}%
\def\key##1{\realbackslash key {##1}}%
\def\math##1{\realbackslash math {##1}}%
\def\option##1{\realbackslash option {##1}}%
\def\samp##1{\realbackslash samp {##1}}%
\def\strong##1{\realbackslash strong {##1}}%
\def\uref##1{\realbackslash uref {##1}}%
\def\url##1{\realbackslash url {##1}}%
\def\var##1{\realbackslash var {##1}}%
\def\w{\realbackslash w }%
%
% These math commands don't seem likely to be used in index entries.
\def\copyright{\realbackslash copyright}%
\def\equiv{\realbackslash equiv}%
\def\error{\realbackslash error}%
\def\expansion{\realbackslash expansion}%
\def\point{\realbackslash point}%
\def\print{\realbackslash print}%
\def\result{\realbackslash result}%
% %
% Handle some cases of @value -- where the variable name does not % Handle some cases of @value -- where the variable name does not
% contain - or _, and the value does not contain any % contain - or _, and the value does not contain any
@@ -2855,7 +2872,10 @@ width0pt\relax} \fi
\def\indexdummydots{...} \def\indexdummydots{...}
\def\indexnofonts{% \def\indexnofonts{%
% Just ignore accents. \def\@{@}%
% how to handle braces?
\def\_{\normalunderscore}%
%
\let\,=\indexdummyfont \let\,=\indexdummyfont
\let\"=\indexdummyfont \let\"=\indexdummyfont
\let\`=\indexdummyfont \let\`=\indexdummyfont
@@ -2871,45 +2891,49 @@ width0pt\relax} \fi
\let\H=\indexdummyfont \let\H=\indexdummyfont
\let\dotless=\indexdummyfont \let\dotless=\indexdummyfont
% Take care of the plain tex special European modified letters. % Take care of the plain tex special European modified letters.
\def\oe{oe}%
\def\ae{ae}%
\def\aa{aa}%
\def\OE{OE}%
\def\AE{AE}%
\def\AA{AA}% \def\AA{AA}%
\def\o{o}% \def\AE{AE}%
\def\O{O}%
\def\l{l}%
\def\L{L}% \def\L{L}%
\def\OE{OE}%
\def\O{O}%
\def\aa{aa}%
\def\ae{ae}%
\def\l{l}%
\def\oe{oe}%
\def\o{o}%
\def\ss{ss}% \def\ss{ss}%
\let\w=\indexdummyfont %
\let\t=\indexdummyfont % Don't no-op \tt, since it isn't a user-level command
\let\r=\indexdummyfont % and is used in the definitions of the active chars like <, >, |, etc.
\let\i=\indexdummyfont % Likewise with the other plain tex font commands.
\let\b=\indexdummyfont
\let\emph=\indexdummyfont
\let\strong=\indexdummyfont
\let\cite=\indexdummyfont
\let\sc=\indexdummyfont
%Don't no-op \tt, since it isn't a user-level command
% and is used in the definitions of the active chars like <, >, |...
%\let\tt=\indexdummyfont %\let\tt=\indexdummyfont
\let\tclose=\indexdummyfont %
\let\code=\indexdummyfont \let\b=\indexdummyfont
\let\url=\indexdummyfont \let\i=\indexdummyfont
\let\uref=\indexdummyfont \let\r=\indexdummyfont
\let\env=\indexdummyfont \let\sc=\indexdummyfont
\let\t=\indexdummyfont
%
\let\TeX=\indexdummytex
\let\acronym=\indexdummyfont \let\acronym=\indexdummyfont
\let\cite=\indexdummyfont
\let\code=\indexdummyfont
\let\command=\indexdummyfont \let\command=\indexdummyfont
\let\option=\indexdummyfont \let\dfn=\indexdummyfont
\let\dots=\indexdummydots
\let\emph=\indexdummyfont
\let\env=\indexdummyfont
\let\file=\indexdummyfont \let\file=\indexdummyfont
\let\samp=\indexdummyfont
\let\kbd=\indexdummyfont \let\kbd=\indexdummyfont
\let\key=\indexdummyfont \let\key=\indexdummyfont
\let\math=\indexdummyfont
\let\option=\indexdummyfont
\let\samp=\indexdummyfont
\let\strong=\indexdummyfont
\let\uref=\indexdummyfont
\let\url=\indexdummyfont
\let\var=\indexdummyfont \let\var=\indexdummyfont
\let\TeX=\indexdummytex \let\w=\indexdummyfont
\let\dots=\indexdummydots
\def\@{@}%
} }
% To define \realbackslash, we must make \ not be an escape. % To define \realbackslash, we must make \ not be an escape.
@@ -3511,8 +3535,8 @@ width0pt\relax} \fi
\gdef\thischaptername{#1}% \gdef\thischaptername{#1}%
\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
\toks0 = {#1}% \toks0 = {#1}%
\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% \edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}%
{\putwordAppendix{} \appendixletter}}}% {\appendixletter}}}%
\temp \temp
\appendixnoderef \appendixnoderef
\global\let\section = \appendixsec \global\let\section = \appendixsec
@@ -3945,6 +3969,7 @@ width0pt\relax} \fi
\startcontents{\putwordShortTOC}% \startcontents{\putwordShortTOC}%
% %
\let\chapentry = \shortchapentry \let\chapentry = \shortchapentry
\let\appendixentry = \shortappendixentry
\let\unnumbchapentry = \shortunnumberedentry \let\unnumbchapentry = \shortunnumberedentry
% We want a true roman here for the page numbers. % We want a true roman here for the page numbers.
\secfonts \secfonts
@@ -3980,16 +4005,23 @@ width0pt\relax} \fi
% The last argument is the page number. % The last argument is the page number.
% The arguments in between are the chapter number, section number, ... % The arguments in between are the chapter number, section number, ...
% Chapter-level things, for both the long and short contents. % Chapters, in the main contents.
\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} \def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
%
% See comments in \dochapentry re vbox and related settings % Chapters, in the short toc.
% See comments in \dochapentry re vbox and related settings.
\def\shortchapentry#1#2#3{% \def\shortchapentry#1#2#3{%
\tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
} }
% Appendices, in the main contents.
\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}}
%
% Appendices, in the short toc.
\let\shortappendixentry = \shortchapentry
% Typeset the label for a chapter or appendix for the short contents. % Typeset the label for a chapter or appendix for the short contents.
% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. % The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
% We could simplify the code here by writing out an \appendixentry % We could simplify the code here by writing out an \appendixentry
% command in the toc file for appendices, instead of using \chapentry % command in the toc file for appendices, instead of using \chapentry
% for both, but it doesn't seem worth it. % for both, but it doesn't seem worth it.
@@ -3997,23 +4029,16 @@ width0pt\relax} \fi
\newdimen\shortappendixwidth \newdimen\shortappendixwidth
% %
\def\shortchaplabel#1{% \def\shortchaplabel#1{%
% Compute width of word "Appendix", may change with language. % This space should be enough, since a single number is .5em, and the
\setbox0 = \hbox{\shortcontrm \putwordAppendix}%
\shortappendixwidth = \wd0
%
% We typeset #1 in a box of constant width, regardless of the text of
% #1, so the chapter titles will come out aligned.
\setbox0 = \hbox{#1}%
\dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi
%
% This space should be plenty, since a single number is .5em, and the
% widest letter (M) is 1em, at least in the Computer Modern fonts. % widest letter (M) is 1em, at least in the Computer Modern fonts.
% But use \hss just in case.
% (This space doesn't include the extra space that gets added after % (This space doesn't include the extra space that gets added after
% the label; that gets put in by \shortchapentry above.) % the label; that gets put in by \shortchapentry above.)
\advance\dimen0 by 1.1em \dimen0 = 1em
\hbox to \dimen0{#1\hfil}% \hbox to \dimen0{#1\hss}%
} }
% Unnumbered chapters.
\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}}
@@ -4069,7 +4094,7 @@ width0pt\relax} \fi
\def\tocentry#1#2{\begingroup \def\tocentry#1#2{\begingroup
\vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
% Do not use \turnoffactive in these arguments. Since the toc is % Do not use \turnoffactive in these arguments. Since the toc is
% typeset in cmr, so characters such as _ would come out wrong; we % typeset in cmr, characters such as _ would come out wrong; we
% have to do the usual translation tricks. % have to do the usual translation tricks.
\entry{#1}{#2}% \entry{#1}{#2}%
\endgroup} \endgroup}
@@ -4898,7 +4923,7 @@ width0pt\relax} \fi
% #1 is the data type, #2 the name, #3 the args. % #1 is the data type, #2 the name, #3 the args.
\def\deftypefunheaderx #1#2 #3\relax{% \def\deftypefunheaderx #1#2 #3\relax{%
\doind {fn}{\code{#2}}% Make entry in function index \doind {fn}{\code{#2}}% Make entry in function index
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
\deftypefunargs {#3}\endgroup % \deftypefunargs {#3}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody \catcode 61=\other % Turn off change made in \defparsebody
} }
@@ -4907,9 +4932,9 @@ width0pt\relax} \fi
\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
% \defheaderxcond#1\relax$$$ % \defheaderxcond#1\relax$.$
% puts #1 in @code, followed by a space, but does nothing if #1 is null. % puts #1 in @code, followed by a space, but does nothing if #1 is null.
\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} \def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
% #1 is the classification. #2 is the data type. #3 is the name and args. % #1 is the classification. #2 is the data type. #3 is the name and args.
\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
@@ -4919,7 +4944,7 @@ width0pt\relax} \fi
\begingroup \begingroup
\normalparens % notably, turn off `&' magic, which prevents \normalparens % notably, turn off `&' magic, which prevents
% at least some C++ text from working % at least some C++ text from working
\defname {\defheaderxcond#2\relax$$$#3}{#1}% \defname {\defheaderxcond#2\relax$.$#3}{#1}%
\deftypefunargs {#4}\endgroup % \deftypefunargs {#4}\endgroup %
\catcode 61=\other % Turn off change made in \defparsebody \catcode 61=\other % Turn off change made in \defparsebody
} }
@@ -4965,7 +4990,7 @@ width0pt\relax} \fi
\def\deftypeopheader#1#2#3#4{% \def\deftypeopheader#1#2#3#4{%
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
\begingroup \begingroup
\defname{\defheaderxcond#2\relax$$$#3} \defname{\defheaderxcond#2\relax$.$#3}
{\deftypeopcategory\ \putwordon\ \code{#1}}% {\deftypeopcategory\ \putwordon\ \code{#1}}%
\deftypefunargs{#4}% \deftypefunargs{#4}%
\endgroup \endgroup
@@ -4980,7 +5005,7 @@ width0pt\relax} \fi
\def\deftypemethodheader#1#2#3#4{% \def\deftypemethodheader#1#2#3#4{%
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
\begingroup \begingroup
\defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
\deftypefunargs{#4}% \deftypefunargs{#4}%
\endgroup \endgroup
} }
@@ -4994,7 +5019,7 @@ width0pt\relax} \fi
\def\deftypeivarheader#1#2#3{% \def\deftypeivarheader#1#2#3{%
\dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
\begingroup \begingroup
\defname{\defheaderxcond#2\relax$$$#3} \defname{\defheaderxcond#2\relax$.$#3}
{\putwordInstanceVariableof\ \code{#1}}% {\putwordInstanceVariableof\ \code{#1}}%
\defvarargs{#3}% \defvarargs{#3}%
\endgroup \endgroup
@@ -5077,7 +5102,7 @@ width0pt\relax} \fi
% is actually part of the data type, which should not be put into the index. % is actually part of the data type, which should not be put into the index.
\def\deftypevarheader #1#2{% \def\deftypevarheader #1#2{%
\dovarind#2 \relax% Make entry in variables index \dovarind#2 \relax% Make entry in variables index
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
\interlinepenalty=10000 \interlinepenalty=10000
\endgraf\nobreak\vskip -\parskip\nobreak \endgraf\nobreak\vskip -\parskip\nobreak
\endgroup} \endgroup}
@@ -5088,7 +5113,7 @@ width0pt\relax} \fi
\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
\def\deftypevrheader #1#2#3{\dovarind#3 \relax% \def\deftypevrheader #1#2#3{\dovarind#3 \relax%
\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
\interlinepenalty=10000 \interlinepenalty=10000
\endgraf\nobreak\vskip -\parskip\nobreak \endgraf\nobreak\vskip -\parskip\nobreak
\endgroup} \endgroup}
@@ -5799,8 +5824,15 @@ width0pt\relax} \fi
% %
\smallfonts \rm \smallfonts \rm
% %
% Hang the footnote text off the number. % Because we use hanging indentation in footnotes, a @noindent appears
\hang % to exdent this text, so make it be a no-op. makeinfo does not use
% hanging indentation so @noindent can still be needed within footnote
% text after an @example or the like (not that this is good style).
\let\noindent = \relax
%
% Hang the footnote text off the number. Use \everypar in case the
% footnote extends for more than one paragraph.
\everypar = {\hang}%
\textindent{\thisfootno}% \textindent{\thisfootno}%
% %
% Don't crash into the line above the footnote text. Since this % Don't crash into the line above the footnote text. Since this
@@ -5881,7 +5913,7 @@ width0pt\relax} \fi
\global\warnednoepsftrue \global\warnednoepsftrue
\fi \fi
\else \else
\imagexxx #1,,,\finish \imagexxx #1,,,,,\finish
\fi \fi
} }
% %
@@ -5891,33 +5923,34 @@ width0pt\relax} \fi
% #4 is (ignored optional) html alt text. % #4 is (ignored optional) html alt text.
% #5 is (ignored optional) extension. % #5 is (ignored optional) extension.
% #6 is just the usual extra ignored arg for parsing this stuff. % #6 is just the usual extra ignored arg for parsing this stuff.
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{% \newif\ifimagevmode
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
\catcode`\^^M = 5 % in case we're inside an example
\normalturnoffactive % allow _ et al. in names
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
\nobreak\bigskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
% above and below.
\nobreak\vskip\parskip
\nobreak
\line\bgroup\hss
\fi
%
% Output the image.
\ifpdf \ifpdf
\centerline{\dopdfimage{#1}{#2}{#3}}% \dopdfimage{#1}{#2}{#3}%
\else \else
% \epsfbox itself resets \epsf?size at each figure. % \epsfbox itself resets \epsf?size at each figure.
\setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
\setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
\begingroup \epsfbox{#1.eps}%
\catcode`\^^M = 5 % in case we're inside an example
\normalturnoffactive % allow _ et al. in names
% If the image is by itself, center it.
\ifvmode
\nobreak\bigskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
% above and below.
\nobreak\vskip\parskip
\nobreak
\centerline{\epsfbox{#1.eps}}%
\bigbreak
\else
% In the middle of a paragraph, no extra space.
\epsfbox{#1.eps}%
\fi
\endgroup
\fi \fi
} %
\ifimagevmode \hss \egroup \bigbreak \fi % space after the image
\endgroup}
\message{localization,} \message{localization,}
@@ -6087,6 +6120,10 @@ should work if nowhere else does.}
% %
\afourpaper \afourpaper
\internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}%
%
% Must explicitly reset to 0 because we call \afourpaper, apparently,
% although this does not entirely make sense.
\globaldefs = 0
}} }}
% Use @afourwide to print on European A4 paper in wide format. % Use @afourwide to print on European A4 paper in wide format.
Vendored
+514 -156
View File
File diff suppressed because it is too large Load Diff
+11 -6
View File
@@ -1,5 +1,7 @@
# Configure template for GNU Bison. -*-Autoconf-*- # Configure template for GNU Bison. -*-Autoconf-*-
# #
# Copyright 2001, 2002 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
@@ -18,10 +20,10 @@
# We need a recent Autoconf to run a recent Autotest. # We need a recent Autoconf to run a recent Autotest.
AC_PREREQ(2.52g) AC_PREREQ(2.52g)
AC_INIT([GNU Bison], [1.30e], [[email protected]]) AC_INIT([GNU Bison], [1.33a], [[email protected]])
AC_CONFIG_AUX_DIR(config) AC_CONFIG_AUX_DIR(config)
AM_INIT_AUTOMAKE([bison], [1.30e]) AM_INIT_AUTOMAKE([bison], [1.33a])
AM_CONFIG_HEADER(config.h:config.hin) AM_CONFIG_HEADER(config.h:config.hin)
# Initialize the test suite. # Initialize the test suite.
@@ -47,6 +49,9 @@ AC_ARG_ENABLE(gcc-warnings,
esac], esac],
[enableval=no]) [enableval=no])
if test "${enableval}" = yes; then if test "${enableval}" = yes; then
BISON_WARNING(-Werror)
AC_SUBST([WERROR_CFLAGS], [$WARNING_CFLAGS])
WARNING_CFLAGS=
BISON_WARNING(-Wall) BISON_WARNING(-Wall)
BISON_WARNING(-W) BISON_WARNING(-W)
BISON_WARNING(-Wbad-function-cast) BISON_WARNING(-Wbad-function-cast)
@@ -59,7 +64,6 @@ if test "${enableval}" = yes; then
BISON_WARNING(-Wshadow) BISON_WARNING(-Wshadow)
BISON_WARNING(-Wstrict-prototypes) BISON_WARNING(-Wstrict-prototypes)
BISON_WARNING(-Wwrite-strings) BISON_WARNING(-Wwrite-strings)
CFLAGS="$CFLAGS $WARNING_CFLAGS"
fi fi
# Checks for libraries. # Checks for libraries.
@@ -82,16 +86,17 @@ AM_C_PROTOTYPES
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_FUNC_OBSTACK AC_FUNC_OBSTACK
AC_FUNC_ERROR_AT_LINE AC_FUNC_ERROR_AT_LINE
AC_FUNC_STRNLEN
AC_CHECK_FUNCS(mkstemp setlocale) AC_CHECK_FUNCS(mkstemp setlocale)
AC_CHECK_DECLS([stpcpy, strndup, strnlen, memchr]) AC_CHECK_DECLS([stpcpy, strchr, strspn, strnlen, memchr, memrchr])
AC_REPLACE_FUNCS(stpcpy strndup strnlen strspn memchr) AC_REPLACE_FUNCS(stpcpy strchr strspn memchr memrchr)
jm_FUNC_MALLOC jm_FUNC_MALLOC
jm_FUNC_REALLOC jm_FUNC_REALLOC
jm_PREREQ_QUOTEARG jm_PREREQ_QUOTEARG
jm_PREREQ_ERROR jm_PREREQ_ERROR
AM_WITH_DMALLOC AM_WITH_DMALLOC
ALL_LINGUAS="de es et fr ja nl ru sv tr" ALL_LINGUAS="de es et fr it ja nl ru sv tr"
AM_GNU_GETTEXT(, need-ngettext) AM_GNU_GETTEXT(, need-ngettext)
# This is necessary so that .o files in LIBOBJS are also built via # This is necessary so that .o files in LIBOBJS are also built via
+1
View File
@@ -1,6 +1,7 @@
Makefile Makefile.in Makefile Makefile.in
*.aux *.dvi *.log *.info* *.pdf *.ps *.aux *.dvi *.log *.info* *.pdf *.ps
stamp-* stamp-*
auto
bison.cp bison.cp
bison.cps bison.cps
bison.fn bison.fn
+2 -2
View File
@@ -262,9 +262,9 @@ and so on.
.ns .ns
.TP .TP
.B \-\-debug .B \-\-debug
Output a definition of the macro In the parser file, define the macro
.B YYDEBUG .B YYDEBUG
into the parser file, to 1 if it is not already defined,
so that the debugging facilities are compiled. so that the debugging facilities are compiled.
.TP .TP
.B \-v .B \-v
+2 -1
View File
@@ -56,7 +56,8 @@ foo_tab.c.
.indent -1 .indent -1
2 /DEBUG 2 /DEBUG
.skip .skip
Output a definition of the macro YYDEBUG into the parser file, In the parser file,
define the macro YYDEBUG to 1 if it is not already defined,
so that the debugging facilities are compiled. so that the debugging facilities are compiled.
.skip .skip
.indent -1 .indent -1
+70 -19
View File
@@ -304,6 +304,8 @@ Invoking Bison
* Bison Options:: All the options described in detail, * Bison Options:: All the options described in detail,
in alphabetical order by short options. in alphabetical order by short options.
* Option Cross Key:: Alphabetical list of long options. * Option Cross Key:: Alphabetical list of long options.
* Extension Limitations Under DOS:: Bison output files extension differences
depending on the DOS/Windows file system flavour used.
* VMS Invocation:: Bison command syntax on VMS. * VMS Invocation:: Bison command syntax on VMS.
Copying This Manual Copying This Manual
@@ -693,7 +695,7 @@ arrange for it to call @code{yyparse} or the parser will never run.
@xref{Interface, ,Parser C-Language Interface}. @xref{Interface, ,Parser C-Language Interface}.
Aside from the token type names and the symbols in the actions you Aside from the token type names and the symbols in the actions you
write, all variable and function names used in the Bison parser file write, all symbols defined in the Bison parser file itself
begin with @samp{yy} or @samp{YY}. This includes interface functions begin with @samp{yy} or @samp{YY}. This includes interface functions
such as the lexical analyzer function @code{yylex}, the error reporting such as the lexical analyzer function @code{yylex}, the error reporting
function @code{yyerror} and the parser function @code{yyparse} itself. function @code{yyerror} and the parser function @code{yyparse} itself.
@@ -702,6 +704,14 @@ Therefore, you should avoid using C identifiers starting with @samp{yy}
or @samp{YY} in the Bison grammar file except for the ones defined in or @samp{YY} in the Bison grammar file except for the ones defined in
this manual. this manual.
In some cases the Bison parser file includes system headers, and in
those cases your code should respect the identifiers reserved by those
headers. On some non-@sc{gnu} hosts, @code{<alloca.h>},
@code{<stddef.h>}, and @code{<stdlib.h>} are included as needed to
declare memory allocators and related types.
Other system headers may be included if you define @code{YYDEBUG} to a
nonzero value (@pxref{Debugging, ,Debugging Your Parser}).
@node Stages @node Stages
@section Stages in Using Bison @section Stages in Using Bison
@cindex stages in using Bison @cindex stages in using Bison
@@ -3226,9 +3236,9 @@ directives:
@table @code @table @code
@item %debug @item %debug
Output a definition of the macro @code{YYDEBUG} into the parser file, so In the parser file, define the macro @code{YYDEBUG} to 1 if it is not
that the debugging facilities are compiled. @xref{Debugging, ,Debugging already defined, so that the debugging facilities are compiled.
Your Parser}. @xref{Debugging, ,Debugging Your Parser}.
@item %defines @item %defines
Write an extra output file containing macro definitions for the token Write an extra output file containing macro definitions for the token
@@ -4506,9 +4516,8 @@ produce parsers that are very large. In practice, Bison is more useful
as it is now. as it is now.
When the problem arises, you can often fix it by identifying the two When the problem arises, you can often fix it by identifying the two
parser states that are being confused (using @samp{-v} parser states that are being confused, and adding something to make them
(@pxref{Invocation, ,Invoking Bison}) can help), and adding something to look distinct. In the above example, adding one rule to
make them look distinct. In the above example, adding one rule to
@code{return_spec} as follows makes the problem go away: @code{return_spec} as follows makes the problem go away:
@example @example
@@ -4917,15 +4926,21 @@ If a Bison grammar compiles properly but doesn't do what you want when it
runs, the @code{yydebug} parser-trace feature can help you figure out why. runs, the @code{yydebug} parser-trace feature can help you figure out why.
To enable compilation of trace facilities, you must define the macro To enable compilation of trace facilities, you must define the macro
@code{YYDEBUG} when you compile the parser. You could use @code{YYDEBUG} to a nonzero value when you compile the parser. You
@samp{-DYYDEBUG=1} as a compiler option or you could put @samp{#define could use @samp{-DYYDEBUG=1} as a compiler option or you could put
YYDEBUG 1} in the C declarations section of the grammar file @samp{#define YYDEBUG 1} in the C declarations section of the grammar
(@pxref{C Declarations, ,The C Declarations Section}). Alternatively, use the @samp{-t} option when file (@pxref{C Declarations, ,The C Declarations Section}).
you run Bison (@pxref{Invocation, ,Invoking Bison}). We always define @code{YYDEBUG} so that Alternatively, use the @samp{-t} option when you run Bison
debugging is always possible. (@pxref{Invocation, ,Invoking Bison}) or the @code{%debug} declaration
(@pxref{Decl Summary, ,Bison Declaration Summary}). We suggest that
you always define @code{YYDEBUG} so that debugging is always possible.
The trace facility uses @code{stderr}, so you must add @w{@code{#include The trace facility outputs messages with macro calls of the form
<stdio.h>}} to the C declarations section unless it is already there. @code{YYFPRINTF (stderr, @var{format}, @var{args})} where
@var{format} and @var{args} are the usual @code{printf} format and
arguments. If you define @code{YYDEBUG} to a nonzero value but do not
define @code{YYFPRINTF}, @code{<stdio.h>} is automatically included
and @code{YYPRINTF} is defined to @code{fprintf}.
Once you have compiled the program with trace facilities, the way to Once you have compiled the program with trace facilities, the way to
request a trace is to store a nonzero value in the variable @code{yydebug}. request a trace is to store a nonzero value in the variable @code{yydebug}.
@@ -5004,7 +5019,7 @@ Here @var{infile} is the grammar file name, which usually ends in
@samp{.y}. The parser file's name is made by replacing the @samp{.y} @samp{.y}. The parser file's name is made by replacing the @samp{.y}
with @samp{.tab.c}. Thus, the @samp{bison foo.y} filename yields with @samp{.tab.c}. Thus, the @samp{bison foo.y} filename yields
@file{foo.tab.c}, and the @samp{bison hack/foo.y} filename yields @file{foo.tab.c}, and the @samp{bison hack/foo.y} filename yields
@file{hack/foo.tab.c}. It's is also possible, in case you are writting @file{hack/foo.tab.c}. It's is also possible, in case you are writing
C++ code instead of C in your grammar file, to name it @file{foo.ypp} C++ code instead of C in your grammar file, to name it @file{foo.ypp}
or @file{foo.y++}. Then, the output files will take an extention like or @file{foo.y++}. Then, the output files will take an extention like
the given one as input (repectively @file{foo.tab.cpp} and @file{foo.tab.c++}). the given one as input (repectively @file{foo.tab.cpp} and @file{foo.tab.c++}).
@@ -5031,6 +5046,8 @@ will produce @file{output.c++} and @file{outfile.h++}.
in alphabetical order by short options. in alphabetical order by short options.
* Environment Variables:: Variables which affect Bison execution. * Environment Variables:: Variables which affect Bison execution.
* Option Cross Key:: Alphabetical list of long options. * Option Cross Key:: Alphabetical list of long options.
* Extension Limitations Under DOS:: Bison output files extension differences
depending on the DOS/Windows file system flavour used.
* VMS Invocation:: Bison command syntax on VMS. * VMS Invocation:: Bison command syntax on VMS.
@end menu @end menu
@@ -5086,9 +5103,9 @@ you are developing Bison.
@item -t @item -t
@itemx --debug @itemx --debug
Output a definition of the macro @code{YYDEBUG} into the parser file, so In the parser file, define the macro @code{YYDEBUG} to 1 if it is not
that the debugging facilities are compiled. @xref{Debugging, ,Debugging already defined, so that the debugging facilities are compiled.
Your Parser}. @xref{Debugging, ,Debugging Your Parser}.
@item --locations @item --locations
Pretend that @code{%locations} was specified. @xref{Decl Summary}. Pretend that @code{%locations} was specified. @xref{Decl Summary}.
@@ -5228,6 +5245,40 @@ the corresponding short option.
@end example @end example
@end ifinfo @end ifinfo
@node Extension Limitations Under DOS
@section Extension Limitations under DOS
@cindex extension limitations under DOS
@cindex DOS
On DOS/Windows 9X systems the file name extensions of the output files,
like @file{.tab.c}, that may be used depend on the file system in use.
The plain DOS file system has limited file name length, does not allow
the use of a set of certain illicit characters and does not allow more
than a single dot in the file name.
The DJGPP port of @code{bison} will detect at runtime if (LFN) long file
name support is available or not. LFN support will be available in a
DOS session under Windows 9X and successors. Windows NT 4.0 needs a
special LFN driver (@file{ntlfn08b.zip}) or later available at any
simtelnet mirror in the /v2misc dir) for proper LFN support in a DOS
session. If LFN support is available the DJGPP port of @code{bison}
will use the standard POSIX file name extensions of the output files.
If LFN support is not available, then the DJGPP port of @code{bison}
will use DOS specific file name extensions.
@noindent This table summarizes the used extensions:
@multitable @columnfractions 0.1 0.45 0.45
@item @tab LFN extension (Win9X) @tab SFN extension (plain DOS)
@item @tab @file{.tab.c} @tab @file{_tab.c}
@item @tab @file{.tab.h} @tab @file{_tab.h}
@item @tab @file{.tab.cpp} @tab @file{_tab.cpp}
@item @tab @file{.tab.hpp} @tab @file{_tab.hpp}
@item @tab @file{.output} @tab @file{.out}
@item @tab @file{.stype.h} @tab @file{.sth}
@item @tab @file{.guard.c} @tab @file{.guc}
@end multitable
@node VMS Invocation @node VMS Invocation
@section Invoking Bison under VMS @section Invoking Bison under VMS
@cindex invoking Bison under VMS @cindex invoking Bison under VMS
+4 -4
View File
@@ -1,4 +1,4 @@
@set UPDATED 26 November 2001 @set UPDATED 25 February 2002
@set UPDATED-MONTH November 2001 @set UPDATED-MONTH February 2002
@set EDITION 1.30e @set EDITION 1.33a
@set VERSION 1.30e @set VERSION 1.33a
+23 -5
View File
@@ -1,20 +1,38 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*- ## Copyright 2001, 2002 Free Software Foundation, Inc.
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
## 02111-1307 USA
AUTOMAKE_OPTIONS = ansi2knr AUTOMAKE_OPTIONS = ansi2knr
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS)
noinst_LIBRARIES = libbison.a noinst_LIBRARIES = libbison.a
INCLUDES = -I.. -I$(srcdir) -I../intl INCLUDES = -I.. -I$(srcdir) -I../intl
# Heck, we are still using an old version of Automake which does not # Heck, we are still using an old version of Automake which does not
# understand LIBOBJ additions using $objext... # understand inner AC_LIBOBJ (i.e., from Autoconf itself, not from
# configure.in).
EXTRA_DIST = malloc.c realloc.c EXTRA_DIST = malloc.c realloc.c strnlen.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
basename.c dirname.h dirname.c \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
quote.h quote.c quotearg.h quotearg.c \ quote.h quote.c quotearg.h quotearg.c \
xalloc.h xmalloc.c xstrdup.c xalloc.h xmalloc.c xstrdup.c xstrndup.c
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@ libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD) libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
+88 -63
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,30 +92,35 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
AUTOMAKE_OPTIONS = ansi2knr AUTOMAKE_OPTIONS = ansi2knr
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS)
noinst_LIBRARIES = libbison.a noinst_LIBRARIES = libbison.a
INCLUDES = -I.. -I$(srcdir) -I../intl INCLUDES = -I.. -I$(srcdir) -I../intl
# Heck, we are still using an old version of Automake which does not # Heck, we are still using an old version of Automake which does not
# understand LIBOBJ additions using $objext... # understand inner AC_LIBOBJ (i.e., from Autoconf itself, not from
EXTRA_DIST = malloc.c realloc.c # configure.in).
EXTRA_DIST = malloc.c realloc.c strnlen.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
basename.c dirname.h dirname.c \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
quote.h quote.c quotearg.h quotearg.c \ quote.h quote.c quotearg.h quotearg.c \
xalloc.h xmalloc.c xstrdup.c xalloc.h xmalloc.c xstrdup.c xstrndup.c
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@ libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
@@ -127,9 +132,10 @@ CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES) LIBRARIES = $(noinst_LIBRARIES)
libbison_a_AR = $(AR) cru libbison_a_AR = $(AR) cru
am_libbison_a_OBJECTS = getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) \ am_libbison_a_OBJECTS = basename$U.$(OBJEXT) dirname$U.$(OBJEXT) \
quote$U.$(OBJEXT) quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) \ getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) quote$U.$(OBJEXT) \
xstrdup$U.$(OBJEXT) quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) xstrdup$U.$(OBJEXT) \
xstrndup$U.$(OBJEXT)
libbison_a_OBJECTS = $(am_libbison_a_OBJECTS) libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
DEFS = @DEFS@ DEFS = @DEFS@
@@ -138,23 +144,25 @@ CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/config/depcomp depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/error.Po \ @AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/error.Po \
@AMDEP_TRUE@ $(DEPDIR)/getopt$U.Po $(DEPDIR)/getopt1$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ @AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \
@AMDEP_TRUE@ $(DEPDIR)/obstack.Po $(DEPDIR)/quote$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/memrchr.Po $(DEPDIR)/obstack.Po \
@AMDEP_TRUE@ $(DEPDIR)/quotearg$U.Po $(DEPDIR)/realloc.Po \ @AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/stpcpy.Po \
@AMDEP_TRUE@ $(DEPDIR)/stpcpy.Po $(DEPDIR)/strndup.Po \ @AMDEP_TRUE@ $(DEPDIR)/strchr.Po $(DEPDIR)/strspn.Po \
@AMDEP_TRUE@ $(DEPDIR)/strnlen.Po $(DEPDIR)/strspn.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/basename$U.Po ./$(DEPDIR)/dirname$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/xmalloc$U.Po $(DEPDIR)/xstrdup$U.Po @AMDEP_TRUE@ ./$(DEPDIR)/getopt$U.Po ./$(DEPDIR)/getopt1$U.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/quote$U.Po ./$(DEPDIR)/quotearg$U.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/xmalloc$U.Po ./$(DEPDIR)/xstrdup$U.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/xstrndup$U.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC) CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
CFLAGS = @CFLAGS@
DIST_SOURCES = $(libbison_a_SOURCES) DIST_SOURCES = $(libbison_a_SOURCES)
DIST_COMMON = Makefile.am Makefile.in alloca.c ansi2knr.1 ansi2knr.c \ DIST_COMMON = Makefile.am Makefile.in alloca.c ansi2knr.1 ansi2knr.c \
error.c error.h malloc.c memchr.c obstack.c obstack.h realloc.c \ error.c error.h malloc.c memchr.c memrchr.c obstack.c obstack.h \
stpcpy.c strndup.c strnlen.c strspn.c realloc.c stpcpy.c strchr.c strspn.c
SOURCES = $(libbison_a_SOURCES) SOURCES = $(libbison_a_SOURCES)
all: all-am all: all-am
@@ -165,7 +173,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu lib/Makefile $(AUTOMAKE) --gnu lib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
AR = ar AR = ar
@@ -195,23 +203,26 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memrchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/quote$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/quotearg$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stpcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stpcpy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strndup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strnlen.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strspn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strspn.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xmalloc$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xstrdup$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup$U.Po@am__quote@
distclean-depend: distclean-depend:
-rm -rf $(DEPDIR) -rm -rf $(DEPDIR) ./$(DEPDIR)
.c.o: .c.o:
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@@ -225,68 +236,79 @@ distclean-depend:
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(COMPILE) -c `cygpath -w $<` $(COMPILE) -c `cygpath -w $<`
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
alloca_.c: alloca.c $(ANSI2KNR) alloca_.c: lib/alloca.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/alloca.c; then echo $(srcdir)/alloca.c; else echo alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > alloca_.c || rm -f alloca_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/alloca.c; then echo $(srcdir)/lib/alloca.c; else echo lib/alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > alloca_.c || rm -f alloca_.c
error_.c: error.c $(ANSI2KNR) basename_.c: basename.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/error.c; then echo $(srcdir)/error.c; else echo error.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > error_.c || rm -f error_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/basename.c; then echo $(srcdir)/basename.c; else echo basename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > basename_.c || rm -f basename_.c
dirname_.c: dirname.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirname.c; then echo $(srcdir)/dirname.c; else echo dirname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dirname_.c || rm -f dirname_.c
error_.c: lib/error.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/error.c; then echo $(srcdir)/lib/error.c; else echo lib/error.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > error_.c || rm -f error_.c
getopt_.c: getopt.c $(ANSI2KNR) getopt_.c: getopt.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c || rm -f getopt_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c || rm -f getopt_.c
getopt1_.c: getopt1.c $(ANSI2KNR) getopt1_.c: getopt1.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c || rm -f getopt1_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c || rm -f getopt1_.c
malloc_.c: malloc.c $(ANSI2KNR) malloc_.c: lib/malloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c || rm -f malloc_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/malloc.c; then echo $(srcdir)/lib/malloc.c; else echo lib/malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c || rm -f malloc_.c
memchr_.c: memchr.c $(ANSI2KNR) memchr_.c: lib/memchr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memchr.c; then echo $(srcdir)/memchr.c; else echo memchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memchr_.c || rm -f memchr_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/memchr.c; then echo $(srcdir)/lib/memchr.c; else echo lib/memchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memchr_.c || rm -f memchr_.c
obstack_.c: obstack.c $(ANSI2KNR) memrchr_.c: lib/memrchr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/obstack.c; then echo $(srcdir)/obstack.c; else echo obstack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > obstack_.c || rm -f obstack_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/memrchr.c; then echo $(srcdir)/lib/memrchr.c; else echo lib/memrchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memrchr_.c || rm -f memrchr_.c
obstack_.c: lib/obstack.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/obstack.c; then echo $(srcdir)/lib/obstack.c; else echo lib/obstack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > obstack_.c || rm -f obstack_.c
quote_.c: quote.c $(ANSI2KNR) quote_.c: quote.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quote.c; then echo $(srcdir)/quote.c; else echo quote.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quote_.c || rm -f quote_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quote.c; then echo $(srcdir)/quote.c; else echo quote.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quote_.c || rm -f quote_.c
quotearg_.c: quotearg.c $(ANSI2KNR) quotearg_.c: quotearg.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c || rm -f quotearg_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c || rm -f quotearg_.c
realloc_.c: realloc.c $(ANSI2KNR) realloc_.c: lib/realloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/realloc.c; then echo $(srcdir)/realloc.c; else echo realloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > realloc_.c || rm -f realloc_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/realloc.c; then echo $(srcdir)/lib/realloc.c; else echo lib/realloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > realloc_.c || rm -f realloc_.c
stpcpy_.c: stpcpy.c $(ANSI2KNR) stpcpy_.c: lib/stpcpy.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/stpcpy.c; then echo $(srcdir)/stpcpy.c; else echo stpcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stpcpy_.c || rm -f stpcpy_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/stpcpy.c; then echo $(srcdir)/lib/stpcpy.c; else echo lib/stpcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stpcpy_.c || rm -f stpcpy_.c
strndup_.c: strndup.c $(ANSI2KNR) strchr_.c: lib/strchr.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strndup.c; then echo $(srcdir)/strndup.c; else echo strndup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strndup_.c || rm -f strndup_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/strchr.c; then echo $(srcdir)/lib/strchr.c; else echo lib/strchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strchr_.c || rm -f strchr_.c
strnlen_.c: strnlen.c $(ANSI2KNR) strspn_.c: lib/strspn.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strnlen.c; then echo $(srcdir)/strnlen.c; else echo strnlen.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strnlen_.c || rm -f strnlen_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/strspn.c; then echo $(srcdir)/lib/strspn.c; else echo lib/strspn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strspn_.c || rm -f strspn_.c
strspn_.c: strspn.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strspn.c; then echo $(srcdir)/strspn.c; else echo strspn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strspn_.c || rm -f strspn_.c
xmalloc_.c: xmalloc.c $(ANSI2KNR) xmalloc_.c: xmalloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c || rm -f xmalloc_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c || rm -f xmalloc_.c
xstrdup_.c: xstrdup.c $(ANSI2KNR) xstrdup_.c: xstrdup.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c || rm -f xstrdup_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c || rm -f xstrdup_.c
alloca_.$(OBJEXT) error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) \ xstrndup_.c: xstrndup.c $(ANSI2KNR)
malloc_.$(OBJEXT) memchr_.$(OBJEXT) obstack_.$(OBJEXT) quote_.$(OBJEXT) \ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrndup.c; then echo $(srcdir)/xstrndup.c; else echo xstrndup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrndup_.c || rm -f xstrndup_.c
quotearg_.$(OBJEXT) realloc_.$(OBJEXT) stpcpy_.$(OBJEXT) \ alloca_.$(OBJEXT) basename_.$(OBJEXT) dirname_.$(OBJEXT) \
strndup_.$(OBJEXT) strnlen_.$(OBJEXT) strspn_.$(OBJEXT) \ error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) malloc_.$(OBJEXT) \
xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) : $(ANSI2KNR) memchr_.$(OBJEXT) memrchr_.$(OBJEXT) obstack_.$(OBJEXT) \
quote_.$(OBJEXT) quotearg_.$(OBJEXT) realloc_.$(OBJEXT) \
stpcpy_.$(OBJEXT) strchr_.$(OBJEXT) strspn_.$(OBJEXT) \
xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) xstrndup_.$(OBJEXT) : $(ANSI2KNR)
uninstall-info-am: uninstall-info-am:
ETAGS = etags
ETAGSFLAGS =
tags: TAGS tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
mkid -fID $$unique $(LISP) mkid -fID $$unique
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP) $(TAGS_FILES) $(LISP)
tags=; \ tags=; \
here=`pwd`; \ here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| etags $(ETAGS_ARGS) $$tags $$unique $(LISP) || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
GTAGS: GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \ here=`$(am__cd) $(top_builddir) && pwd` \
@@ -295,7 +317,6 @@ GTAGS:
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .. top_distdir = ..
@@ -303,13 +324,16 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES) distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -334,6 +358,7 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
+71
View File
@@ -0,0 +1,71 @@
/* basename.c -- return the last element in a path
Copyright (C) 1990, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <assert.h>
#ifndef FILESYSTEM_PREFIX_LEN
# define FILESYSTEM_PREFIX_LEN(Filename) 0
#endif
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
#ifndef ISSLASH
# define ISSLASH(C) ((C) == '/')
#endif
char *base_name PARAMS ((char const *name));
/* In general, we can't use the builtin `basename' function if available,
since it has different meanings in different environments.
In some environments the builtin `basename' modifies its argument.
If NAME is all slashes, be sure to return `/'. */
char *
base_name (char const *name)
{
char const *base = name += FILESYSTEM_PREFIX_LEN (name);
int all_slashes = 1;
char const *p;
for (p = name; *p; p++)
{
if (ISSLASH (*p))
base = p + 1;
else
all_slashes = 0;
}
/* If NAME is all slashes, arrange to return `/'. */
if (*base == '\0' && ISSLASH (*name) && all_slashes)
--base;
/* Make sure the last byte is not a slash. */
assert (all_slashes || !ISSLASH (*(p - 1)));
return (char *) base;
}
+189
View File
@@ -0,0 +1,189 @@
/* dirname.c -- return all but the last element in a path
Copyright (C) 1990, 1998, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
#endif
#if defined STDC_HEADERS || defined HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
# ifndef strrchr
# define strrchr rindex
# endif
#endif
#include <assert.h>
#ifndef HAVE_DECL_MEMRCHR
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_MEMRCHR
void *memrchr ();
#endif
#include "dirname.h"
#ifndef FILESYSTEM_PREFIX_LEN
# define FILESYSTEM_PREFIX_LEN(Filename) 0
#endif
#ifndef ISSLASH
# define ISSLASH(C) ((C) == '/')
#endif
#define BACKSLASH_IS_PATH_SEPARATOR ISSLASH ('\\')
/* Return the length of `dirname (PATH)' and set *RESULT to point
to PATH or to `"."', as appropriate. Works properly even if
there are trailing slashes (by effectively ignoring them).
WARNING: This function doesn't work for cwd-relative names like
`a:foo' that are specified with a drive-letter prefix. That case
is handled in the caller. */
static size_t
dir_name_r (char const *path, char const **result)
{
char const *slash;
size_t length; /* Length of result, not including NUL. */
slash = strrchr (path, '/');
if (BACKSLASH_IS_PATH_SEPARATOR)
{
char const *b = strrchr (path, '\\');
if (b && slash < b)
slash = b;
}
/* If the last byte of PATH is a slash, decrement SLASH until it's
pointing at the leftmost in a sequence of trailing slashes. */
if (slash && slash[1] == 0)
{
while (path < slash && ISSLASH (slash[-1]))
{
--slash;
}
if (path < slash)
{
size_t len = slash - path;
slash = memrchr (path, '/', len);
if (BACKSLASH_IS_PATH_SEPARATOR)
{
char const *b = memrchr (path, '\\', len);
if (b && slash < b)
slash = b;
}
}
}
if (slash == 0)
{
/* File is in the current directory. */
length = FILESYSTEM_PREFIX_LEN (path);
if (length == 0)
{
path = ".";
length = 1;
}
}
else
{
/* Remove any trailing slashes from the result. If we have a
canonicalized "d:/path", leave alone the root case "d:/". */
char const *lim = path + FILESYSTEM_PREFIX_LEN (path);
while (lim < slash && ISSLASH (*slash))
--slash;
length = slash - path + 1;
}
*result = path;
return length;
}
/* Return the leading directories part of PATH,
allocated with malloc. If out of memory, return 0.
Works properly even if there are trailing slashes
(by effectively ignoring them). */
char *
dir_name (char const *path)
{
char const *result;
size_t length = dir_name_r (path, &result);
int append_dot = (length && length == FILESYSTEM_PREFIX_LEN (newpath));
char *newpath = (char *) malloc (length + append_dot + 1);
if (newpath == 0)
return 0;
strncpy (newpath, result, length);
/* If PATH is "d:foo", return "d:.", the CWD on drive d: */
if (append_dot)
newpath[length++] = '.';
newpath[length] = 0;
return newpath;
}
#ifdef TEST_DIRNAME
/*
Run the test like this (expect no output):
gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall memrchr.c dirname.c
sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
BEGIN-DATA
foo//// .
bar/foo//// bar
foo/ .
/ /
. .
a .
END-DATA
*/
# define MAX_BUFF_LEN 1024
# include <stdio.h>
# include <stdlib.h>
int
main ()
{
char buff[MAX_BUFF_LEN + 1];
buff[MAX_BUFF_LEN] = 0;
while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
{
char path[MAX_BUFF_LEN];
char expected_result[MAX_BUFF_LEN];
char const *result;
sscanf (buff, "%s %s", path, expected_result);
result = dir_name (path);
if (strcmp (result, expected_result))
printf ("%s: got %s, expected %s\n", path, result, expected_result);
}
exit (0);
}
#endif
+31
View File
@@ -0,0 +1,31 @@
/* Copyright (C) 1998 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef DIRNAME_H_
# define DIRNAME_H_ 1
# ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
# endif
char *
dir_name PARAMS ((const char *path));
#endif /* not DIRNAME_H_ */
+209
View File
@@ -0,0 +1,209 @@
/* memrchr -- find the last occurrence of a byte in a memory block
Copyright (C) 1991, 93, 96, 97, 99, 2000 Free Software Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund ([email protected]),
with help from Dan Sahlin ([email protected]) and
commentary by Jim Blandy ([email protected]);
adaptation to memchr suggested by Dick Karpinski ([email protected]),
and implemented by Roland McGrath ([email protected]).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#undef __ptr_t
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
# define __ptr_t void *
#else /* Not C++ or ANSI C. */
# define __ptr_t char *
#endif /* C++ or ANSI C. */
#if defined (_LIBC)
# include <string.h>
# include <memcopy.h>
#else
# define reg_char char
#endif
#if defined (HAVE_LIMITS_H) || defined (_LIBC)
# include <limits.h>
#endif
#define LONG_MAX_32_BITS 2147483647
#ifndef LONG_MAX
# define LONG_MAX LONG_MAX_32_BITS
#endif
#include <sys/types.h>
#undef __memrchr
#undef memrchr
#ifndef weak_alias
# define __memrchr memrchr
#endif
/* Search no more than N bytes of S for C. */
__ptr_t
__memrchr (s, c_in, n)
const __ptr_t s;
int c_in;
size_t n;
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
unsigned long int longword, magic_bits, charmask;
unsigned reg_char c;
c = (unsigned char) c_in;
/* Handle the last few characters by reading one character at a time.
Do this until CHAR_PTR is aligned on a longword boundary. */
for (char_ptr = (const unsigned char *) s + n;
n > 0 && ((unsigned long int) char_ptr
& (sizeof (longword) - 1)) != 0;
--n)
if (*--char_ptr == c)
return (__ptr_t) char_ptr;
/* All these elucidatory comments refer to 4-byte longwords,
but the theory applies equally well to 8-byte longwords. */
longword_ptr = (unsigned long int *) char_ptr;
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
the "holes." Note that there is a hole just to the left of
each byte, with an extra at the end:
bits: 01111110 11111110 11111110 11111111
bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
The 1-bits make sure that carries propagate to the next 0-bit.
The 0-bits provide holes for carries to fall into. */
if (sizeof (longword) != 4 && sizeof (longword) != 8)
abort ();
#if LONG_MAX <= LONG_MAX_32_BITS
magic_bits = 0x7efefeff;
#else
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
#endif
/* Set up a longword, each of whose bytes is C. */
charmask = c | (c << 8);
charmask |= charmask << 16;
#if LONG_MAX > LONG_MAX_32_BITS
charmask |= charmask << 32;
#endif
/* Instead of the traditional loop which tests each character,
we will test a longword at a time. The tricky part is testing
if *any of the four* bytes in the longword in question are zero. */
while (n >= sizeof (longword))
{
/* We tentatively exit the loop if adding MAGIC_BITS to
LONGWORD fails to change any of the hole bits of LONGWORD.
1) Is this safe? Will it catch all the zero bytes?
Suppose there is a byte with all zeros. Any carry bits
propagating from its left will fall into the hole at its
least significant bit and stop. Since there will be no
carry from its most significant bit, the LSB of the
byte to the left will be unchanged, and the zero will be
detected.
2) Is this worthwhile? Will it ignore everything except
zero bytes? Suppose every byte of LONGWORD has a bit set
somewhere. There will be a carry into bit 8. If bit 8
is set, this will carry into bit 16. If bit 8 is clear,
one of bits 9-15 must be set, so there will be a carry
into bit 16. Similarly, there will be a carry into bit
24. If one of bits 24-30 is set, there will be a carry
into bit 31, so all of the hole bits will be changed.
The one misfire occurs when bits 24-30 are clear and bit
31 is set; in this case, the hole at bit 31 is not
changed. If we had access to the processor carry flag,
we could close this loophole by putting the fourth hole
at bit 32!
So it ignores everything except 128's, when they're aligned
properly.
3) But wait! Aren't we looking for C, not zero?
Good point. So what we do is XOR LONGWORD with a longword,
each of whose bytes is C. This turns each byte that is C
into a zero. */
longword = *--longword_ptr ^ charmask;
/* Add MAGIC_BITS to LONGWORD. */
if ((((longword + magic_bits)
/* Set those bits that were unchanged by the addition. */
^ ~longword)
/* Look at only the hole bits. If any of the hole bits
are unchanged, most likely one of the bytes was a
zero. */
& ~magic_bits) != 0)
{
/* Which of the bytes was C? If none of them were, it was
a misfire; continue the search. */
const unsigned char *cp = (const unsigned char *) longword_ptr;
#if LONG_MAX > 2147483647
if (cp[7] == c)
return (__ptr_t) &cp[7];
if (cp[6] == c)
return (__ptr_t) &cp[6];
if (cp[5] == c)
return (__ptr_t) &cp[5];
if (cp[4] == c)
return (__ptr_t) &cp[4];
#endif
if (cp[3] == c)
return (__ptr_t) &cp[3];
if (cp[2] == c)
return (__ptr_t) &cp[2];
if (cp[1] == c)
return (__ptr_t) &cp[1];
if (cp[0] == c)
return (__ptr_t) cp;
}
n -= sizeof (longword);
}
char_ptr = (const unsigned char *) longword_ptr;
while (n-- > 0)
{
if (*--char_ptr == c)
return (__ptr_t) char_ptr;
}
return 0;
}
#ifdef weak_alias
weak_alias (__memrchr, memrchr)
#endif
+19 -2
View File
@@ -1,3 +1,20 @@
/* quote.c - quote arguments for output
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Paul Eggert <[email protected]> */ /* Written by Paul Eggert <[email protected]> */
#if HAVE_CONFIG_H #if HAVE_CONFIG_H
@@ -8,8 +25,8 @@
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */ # include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
#endif #endif
#include <sys/types.h> #include <sys/types.h>
#include <quotearg.h> #include "quotearg.h"
#include <quote.h> #include "quote.h"
/* Return an unambiguous printable representated, allocated in slot N, /* Return an unambiguous printable representated, allocated in slot N,
for NAME, suitable for diagnostics. */ for NAME, suitable for diagnostics. */
+17 -1
View File
@@ -1,4 +1,20 @@
/* prototypes for quote.c */ /* quote.h - prototypes for quote.c
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef PARAMS #ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__) # if defined PROTOTYPES || (defined __STDC__ && __STDC__)
+25 -12
View File
@@ -25,8 +25,8 @@
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */ # include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
#endif #endif
#include <sys/types.h> #include <sys/types.h>
#include <quotearg.h> #include "quotearg.h"
#include <xalloc.h> #include "xalloc.h"
#include <ctype.h> #include <ctype.h>
@@ -44,9 +44,15 @@
#ifndef CHAR_BIT #ifndef CHAR_BIT
# define CHAR_BIT 8 # define CHAR_BIT 8
#endif #endif
#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif
#ifndef UCHAR_MAX #ifndef UCHAR_MAX
# define UCHAR_MAX ((unsigned char) -1) # define UCHAR_MAX ((unsigned char) -1)
#endif #endif
#ifndef UINT_MAX
# define UINT_MAX ((unsigned int) -1)
#endif
#if HAVE_C_BACKSLASH_A #if HAVE_C_BACKSLASH_A
# define ALERT_CHAR '\a' # define ALERT_CHAR '\a'
@@ -539,6 +545,7 @@ quotearg_n_options (int n, char const *arg,
one small component of a "memory exhausted" message in slot 0. */ one small component of a "memory exhausted" message in slot 0. */
static char slot0[256]; static char slot0[256];
static unsigned int nslots = 1; static unsigned int nslots = 1;
unsigned int n0 = n;
struct slotvec struct slotvec
{ {
size_t size; size_t size;
@@ -547,20 +554,26 @@ quotearg_n_options (int n, char const *arg,
static struct slotvec slotvec0 = {sizeof slot0, slot0}; static struct slotvec slotvec0 = {sizeof slot0, slot0};
static struct slotvec *slotvec = &slotvec0; static struct slotvec *slotvec = &slotvec0;
if (nslots <= n) if (n < 0)
abort ();
if (nslots <= n0)
{ {
int n1 = n + 1; unsigned int n1 = n0 + 1;
size_t s = n1 * sizeof (struct slotvec); size_t s = n1 * sizeof *slotvec;
if (! (0 < n1 && n1 == s / sizeof (struct slotvec)))
abort (); if (SIZE_MAX / UINT_MAX <= sizeof *slotvec
&& n1 != s / sizeof *slotvec)
xalloc_die ();
if (slotvec == &slotvec0) if (slotvec == &slotvec0)
{ {
slotvec = (struct slotvec *) xmalloc (sizeof (struct slotvec)); slotvec = (struct slotvec *) xmalloc (sizeof *slotvec);
*slotvec = slotvec0; *slotvec = slotvec0;
} }
slotvec = (struct slotvec *) xrealloc (slotvec, s); slotvec = (struct slotvec *) xrealloc (slotvec, s);
memset (slotvec + nslots, 0, (n1 - nslots) * sizeof (struct slotvec)); memset (slotvec + nslots, 0, (n1 - nslots) * sizeof *slotvec);
nslots = n; nslots = n1;
} }
{ {
@@ -580,7 +593,7 @@ quotearg_n_options (int n, char const *arg,
} }
char * char *
quotearg_n (unsigned int n, char const *arg) quotearg_n (int n, char const *arg)
{ {
return quotearg_n_options (n, arg, &default_quoting_options); return quotearg_n_options (n, arg, &default_quoting_options);
} }
@@ -592,7 +605,7 @@ quotearg (char const *arg)
} }
char * char *
quotearg_n_style (unsigned int n, enum quoting_style s, char const *arg) quotearg_n_style (int n, enum quoting_style s, char const *arg)
{ {
struct quoting_options o; struct quoting_options o;
o.style = s; o.style = s;
+2 -3
View File
@@ -89,7 +89,7 @@ size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize,
The returned value points to static storage that can be The returned value points to static storage that can be
reused by the next call to this function with the same value of N. reused by the next call to this function with the same value of N.
N must be nonnegative. */ N must be nonnegative. */
char *quotearg_n PARAMS ((unsigned int n, char const *arg)); char *quotearg_n PARAMS ((int n, char const *arg));
/* Equivalent to quotearg_n (0, ARG). */ /* Equivalent to quotearg_n (0, ARG). */
char *quotearg PARAMS ((char const *arg)); char *quotearg PARAMS ((char const *arg));
@@ -97,8 +97,7 @@ char *quotearg PARAMS ((char const *arg));
/* Use style S and storage slot N to return a quoted version of the string ARG. /* Use style S and storage slot N to return a quoted version of the string ARG.
This is like quotearg_n (N, ARG), except that it uses S with no other This is like quotearg_n (N, ARG), except that it uses S with no other
options to specify the quoting method. */ options to specify the quoting method. */
char *quotearg_n_style PARAMS ((unsigned int n, enum quoting_style s, char *quotearg_n_style PARAMS ((int n, enum quoting_style s, char const *arg));
char const *arg));
/* Equivalent to quotearg_n_style (0, S, ARG). */ /* Equivalent to quotearg_n_style (0, S, ARG). */
char *quotearg_style PARAMS ((enum quoting_style s, char const *arg)); char *quotearg_style PARAMS ((enum quoting_style s, char const *arg));
+32
View File
@@ -0,0 +1,32 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License
as published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this program; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place -
Suite 330, Boston, MA 02111-1307, USA. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
char *
strchr (const char *s, int c)
{
return index (s, c);
}
+2 -10
View File
@@ -1,5 +1,5 @@
/* xstrdup.c -- copy a string with out of memory checking /* xstrdup.c -- copy a string with out of memory checking
Copyright (C) 1990, 1996, 1998 Free Software Foundation, Inc. Copyright (C) 1990, 1996, 1998, 2001 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -19,14 +19,6 @@
# include <config.h> # include <config.h>
#endif #endif
#ifndef PARAMS
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#endif
#if STDC_HEADERS || HAVE_STRING_H #if STDC_HEADERS || HAVE_STRING_H
# include <string.h> # include <string.h>
#else #else
@@ -35,7 +27,7 @@
#include <sys/types.h> #include <sys/types.h>
char *xmalloc PARAMS ((size_t n)); #include "xalloc.h"
/* Return a newly allocated copy of STRING. */ /* Return a newly allocated copy of STRING. */
+12 -23
View File
@@ -1,7 +1,4 @@
/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. /* Copyright (C) 2001 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the under the terms of the GNU General Public License as published by the
@@ -17,20 +14,20 @@
along with this program; if not, write to the Free Software Foundation, along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H #if HAVE_CONFIG_H
# include "config.h" # include <config.h>
#endif #endif
#include <stdio.h> #if STDC_HEADERS || HAVE_STRING_H
#include <sys/types.h>
#if defined _LIBC || defined STDC_HEADERS
# include <stdlib.h>
# include <string.h> # include <string.h>
#else #else
char *malloc (); # include <strings.h>
#endif #endif
#include <sys/types.h>
#include "xalloc.h"
#ifndef HAVE_DECL_STRNLEN #ifndef HAVE_DECL_STRNLEN
"this configure-time declaration test was not run" "this configure-time declaration test was not run"
#endif #endif
@@ -38,18 +35,13 @@ char *malloc ();
size_t strnlen (); size_t strnlen ();
#endif #endif
#undef __strndup char *xstrndup (const char *s, size_t n);
#undef strndup
#ifndef weak_alias
# define __strndup strndup
#endif
char * char *
__strndup (const char *s, size_t n) xstrndup (const char *s, size_t n)
{ {
size_t len = strnlen (s, n); size_t len = strnlen (s, n);
char *new = malloc (len + 1); char *new = xmalloc (len + 1);
if (new == NULL) if (new == NULL)
return NULL; return NULL;
@@ -57,6 +49,3 @@ __strndup (const char *s, size_t n)
new[len] = '\0'; new[len] = '\0';
return (char *) memcpy (new, s, len); return (char *) memcpy (new, s, len);
} }
#ifdef weak_alias
weak_alias (__strndup, strndup)
#endif
+13 -9
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,15 +92,16 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
EXTRA_DIST = \ EXTRA_DIST = \
c-bs-a.m4 \ c-bs-a.m4 \
codeset.m4 \ codeset.m4 \
@@ -133,12 +134,11 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu m4/Makefile $(AUTOMAKE) --gnu m4/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .. top_distdir = ..
@@ -146,13 +146,16 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES) distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -177,6 +180,7 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
+4
View File
@@ -1,3 +1,7 @@
2002-01-21 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-09-27 gettextize <[email protected]> 2001-09-27 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40. * Makefile.in.in: Upgrade to gettext-0.10.40.
-1
View File
@@ -5,7 +5,6 @@ src/files.c
src/getargs.c src/getargs.c
src/lalr.c src/lalr.c
src/lex.c src/lex.c
src/main.c
src/output.c src/output.c
src/print.c src/print.c
src/print_graph.c src/print_graph.c
+278 -382
View File
File diff suppressed because it is too large Load Diff
+153 -150
View File
@@ -30,7 +30,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.25\n" "Project-Id-Version: GNU bison 1.25\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 1998-09-21 10:19+0200\n" "PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <[email protected]>\n" "Last-Translator: Nicolás García-Pedrajas <[email protected]>\n"
"Language-Team: Spanish <[email protected]>\n" "Language-Team: Spanish <[email protected]>\n"
@@ -43,7 +43,7 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
@@ -63,50 +63,50 @@ msgstr ""
msgid "fatal error: " msgid "fatal error: "
msgstr "error grave: %s\n" msgstr "error grave: %s\n"
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve " "El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
"como %s.\n" "como %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "reduce" msgstr "reduce"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "desplaza" msgstr "desplaza"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "un error" msgstr "un error"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, fuzzy, c-format #, fuzzy, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d conflictos desplazamiento/reducción" msgstr[0] " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:396 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " y" msgstr " y"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, fuzzy, c-format #, fuzzy, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d conflictos reducción/reducción" msgstr[0] " %d conflictos reducción/reducción"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, fuzzy, c-format #, fuzzy, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "El estado %d contiene" msgstr "El estado %d contiene"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictos: " msgstr "conflictos: "
@@ -122,7 +122,7 @@ msgstr "conflictos: "
# ok # ok
# ngp # ngp
# #
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)" msgstr " %d desplazamiento(s)/reducción(ones)"
@@ -139,28 +139,28 @@ msgstr " %d desplazamiento(s)/reducci
# #
# ok # ok
# ngp # ngp
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reducción(ones)/reducción(ones)" msgstr " %d reducción(ones)/reducción(ones)"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s contiene " msgstr "%s contiene "
#: src/conflicts.c:488 #: src/conflicts.c:412
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d conflictos desplazamiento/reducción" msgstr[0] " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduce usando la regla %d (%s)]\n" msgstr " %-4s\t[reduce usando la regla %d (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -169,22 +169,22 @@ msgstr ""
" $default\treduce usando la regla %d (%s)\n" " $default\treduce usando la regla %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduce usando la regla %d (%s)\n" msgstr " %-4s\treduce usando la regla %d (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -249,39 +249,40 @@ msgstr ""
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
# Me parece menos "computadora" decir "ningún fichero de gramática" - cll # Me parece menos "computadora" decir "ningún fichero de gramática" - cll
# #
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: no se ha especificado ningún fichero de gramática\n" msgstr "%s: no se ha especificado ningún fichero de gramática\n"
# Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv # Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv
#: src/getargs.c:250 #: src/getargs.c:265
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n" msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
@@ -333,70 +334,65 @@ msgstr "nombre de tipo sin terminar"
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "use \"...\" para terminales literales multicarácter" msgstr "use \"...\" para terminales literales multicarácter"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:683 #: src/lex.c:694
#, fuzzy, c-format #, fuzzy, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "%s: la opción `%s' requiere un argumento\n" msgstr "%s: la opción `%s' requiere un argumento\n"
#: src/main.c:134
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n"
# Únicamente cambio la posición del adjetivo `máximo'. En vez de después # Únicamente cambio la posición del adjetivo `máximo'. En vez de después
# de `tabla', después de `tamaño' - cll # de `tabla', después de `tamaño' - cll
# en inglés era así, pero quizás en español sea mejor como dices # en inglés era así, pero quizás en español sea mejor como dices
# ngp # ngp
# #
#: src/output.c:979 #: src/output.c:951
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "excedido el tamaño máximo de la tabla (%s)" msgstr "excedido el tamaño máximo de la tabla (%s)"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " el tipo %d es %s\n" msgstr " el tipo %d es %s\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regla %d)" msgstr " (regla %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taceptar\n" msgstr " $default\taceptar\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " SIN ACCIONES\n" msgstr " SIN ACCIONES\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tir al estado %d\n" msgstr " $ \tir al estado %d\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdesplazar e ir al estado %d\n" msgstr " %-4s\tdesplazar e ir al estado %d\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terror (no asociativo)\n" msgstr " %-4s\terror (no asociativo)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tir al estado %d\n" msgstr " %-4s\tir al estado %d\n"
#: src/print.c:185 #: src/print.c:180
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -406,28 +402,28 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Gramática\n" "Gramática\n"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr ""
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, fuzzy, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "regla %-4d %s ->" msgstr "regla %-4d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -435,18 +431,18 @@ msgstr ""
"Terminales con las reglas donde aparecen\n" "Terminales con las reglas donde aparecen\n"
"\n" "\n"
#: src/print.c:257 #: src/print.c:256
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
"\n" "\n"
"No terminales con las reglas donde aparecen\n" "No terminales con las reglas donde aparecen\n"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " en la izquierda:" msgstr " en la izquierda:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " en la derecha:" msgstr " en la derecha:"
@@ -455,7 +451,7 @@ msgstr " en la derecha:"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\terror (no asociativo)\n" msgstr " %-4s\terror (no asociativo)\n"
@@ -464,7 +460,7 @@ msgstr " %-4s\terror (no asociativo)\n"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, fuzzy, c-format #, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
@@ -490,75 +486,80 @@ msgstr "cadena sin terminar al final del fichero"
msgid "unterminated string" msgid "unterminated string"
msgstr "cadena sin terminar" msgstr "cadena sin terminar"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
#, fuzzy
msgid "invalid @ value"
msgstr "valor $ no válido"
#: src/reader.c:352 src/reader.c:416
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s no es válido" msgstr "@%s no es válido"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' no tiene tipo declarado" msgstr "$$ de `%s' no tiene tipo declarado"
#: src/reader.c:393 #: src/reader.c:409
#, fuzzy, c-format #, fuzzy, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%s de `%s' no tiene tipo declarado" msgstr "$%s de `%s' no tiene tipo declarado"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "definición `%{' sin terminar" msgstr "definición `%{' sin terminar"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr ""
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "" msgstr ""
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "" msgstr ""
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "redefinido el símbolo %s" msgstr "redefinido el símbolo %s"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "redeclaración del tipo de %s" msgstr "redeclaración del tipo de %s"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' no es válido en %s" msgstr "`%s' no es válido en %s"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %start" msgstr "múltiples declaraciones de %start"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "declaración de %start no válida" msgstr "declaración de %start no válida"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "la declaración %type no tiene <nombre-tipo>" msgstr "la declaración %type no tiene <nombre-tipo>"
#: src/reader.c:627 #: src/reader.c:643
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "declaración de %%type no válida debido al ítem: `%s'" msgstr "declaración de %%type no válida debido al ítem: `%s'"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "redefinición de la precedencia de %s" msgstr "redefinición de la precedencia de %s"
@@ -567,7 +568,7 @@ msgstr "redefinici
# de "to must" y aquí se emplea en su forma condicional. Por eso, he # de "to must" y aquí se emplea en su forma condicional. Por eso, he
# cambiado `debe' por `debería' - cll # cambiado `debe' por `debería' - cll
# ahí me has pillado en un olvido del inglés - ngp # ahí me has pillado en un olvido del inglés - ngp
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "" msgstr ""
@@ -577,18 +578,18 @@ msgstr ""
# otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en # otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en
# este caso, la segunda me parece más apropiada - cll # este caso, la segunda me parece más apropiada - cll
# ok - ngp # ok - ngp
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ítem inesperado: %s" msgstr "ítem inesperado: %s"
# Cambio el orden y el sexo. Ahora está "en español". sv # Cambio el orden y el sexo. Ahora está "en español". sv
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "`{' desemparejada" msgstr "`{' desemparejada"
#: src/reader.c:810 #: src/reader.c:826
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "el argumento de %expect no es un entero" msgstr "el argumento de %expect no es un entero"
@@ -599,26 +600,26 @@ msgstr "el argumento de %expect no es un entero"
# - cll # - cll
# ok - ngp # ok - ngp
# #
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "no se reconoce el ítem %s, se esperaba un identificador" msgstr "no se reconoce el ítem %s, se esperaba un identificador"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "se esperaba una cadena constante en lugar de %s" msgstr "se esperaba una cadena constante en lugar de %s"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "no reconocido: %s" msgstr "no reconocido: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "no hay gramática de entrada" msgstr "no hay gramática de entrada"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "carácter desconocido: %s" msgstr "carácter desconocido: %s"
@@ -627,105 +628,105 @@ msgstr "car
# mejor que `sin terminar' que me parece más "computerizado" - cll # mejor que `sin terminar' que me parece más "computerizado" - cll
# quizás un poco cacofónico lo de claúsula inconclusa - ngp # quizás un poco cacofónico lo de claúsula inconclusa - ngp
# #
#: src/reader.c:1204 #: src/reader.c:1226
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "cláusula %%guard sin terminar" msgstr "cláusula %%guard sin terminar"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "regla mal formada: el símbolo inicial no está seguido por :" msgstr "regla mal formada: el símbolo inicial no está seguido por :"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "la gramática comienza con una barra vertical" msgstr "la gramática comienza con una barra vertical"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "se ha dado una regla para %s, que es un terminal" msgstr "se ha dado una regla para %s, que es un terminal"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "dos @prec en una línea" msgstr "dos @prec en una línea"
# Insisto, el empleo de participios a secas me parece como hablar en # Insisto, el empleo de participios a secas me parece como hablar en
# indio. Por favor, permíteme que añada un "está" :) - cll # indio. Por favor, permíteme que añada un "está" :) - cll
# ok - ngp # ok - ngp
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard presente pero %%semantic_parser está sin especificar" msgstr "%%guard presente pero %%semantic_parser está sin especificar"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "dos acciones al final de una regla" msgstr "dos acciones al final de una regla"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto" msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción" msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "entrada no válida: %s" msgstr "entrada no válida: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "demasiados símbolos (terminales y no terminales); máximo %s" msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "no hay reglas en la gramática de entrada" msgstr "no hay reglas en la gramática de entrada"
# `token' se debe traducir como `literal' - cll # `token' se debe traducir como `literal' - cll
# en terminología de compiladores token es más un terminal - ngp # en terminología de compiladores token es más un terminal - ngp
# #
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"se usa el símbolo %s, pero no está definido como terminal y no tiene reglas" "se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
#: src/reader.c:1743 #: src/reader.c:1765
#, fuzzy, c-format #, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "los terminales %s y %s tienen asignados ambos el número %s" msgstr "los terminales %s y %s tienen asignados ambos el número %s"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s" msgstr "precedencias en conflicto entre %s y %s"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "conflicto de valores assoc para %s y %s" msgstr "conflicto de valores assoc para %s y %s"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "el símbolo de inicio (axioma) %s no está definido" msgstr "el símbolo de inicio (axioma) %s no está definido"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "el símbolo de inicio (axioma) %s es un terminal" msgstr "el símbolo de inicio (axioma) %s es un terminal"
#: src/reduce.c:400 #: src/reduce.c:409
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"No terminales sin uso:\n" "No terminales sin uso:\n"
"\n" "\n"
#: src/reduce.c:414 #: src/reduce.c:422
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -734,7 +735,7 @@ msgstr ""
"Terminales que no se usan:\n" "Terminales que no se usan:\n"
"\n" "\n"
#: src/reduce.c:425 #: src/reduce.c:433
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -743,60 +744,29 @@ msgstr ""
"Reglas sin uso:\n" "Reglas sin uso:\n"
"\n" "\n"
#: src/reduce.c:451 #: src/reduce.c:503
msgid "" #, fuzzy, c-format
"Variables\n" msgid "%d rule never reduced\n"
"---------\n" msgid_plural "%d rules never reduced\n"
"\n" msgstr[0] "%d reglas que nunca se han reducido\n"
msgstr ""
"Variables\n"
"---------\n"
"\n"
#: src/reduce.c:452 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Valor Sprec Sasoc Tag\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d no terminales %s sin uso"
#: src/reduce.c:456 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Reglas\n"
"------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Reglas interpretadas\n"
"--------------------\n"
"\n"
#: src/reduce.c:491
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d reglas que nunca se han reducido\n"
#: src/reduce.c:497
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d no terminales %s sin uso"
#: src/reduce.c:502
msgid " and " msgid " and "
msgstr " y " msgstr " y "
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, fuzzy, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d regla%s sin uso" msgid_plural "%d useless rules"
msgstr[0] "%d regla%s sin uso"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia" msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
@@ -905,11 +875,11 @@ msgstr "%s: memoria agotada\n"
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "" msgstr ""
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "" msgstr ""
@@ -1030,6 +1000,9 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "excedido el límite de %d, demasiados %s" #~ msgstr "excedido el límite de %d, demasiados %s"
#~ msgid "internal error, %s\n"
#~ msgstr "error interno, %s\n"
#~ msgid "Entering set_nullable" #~ msgid "Entering set_nullable"
#~ msgstr "Entrando set_nullable" #~ msgstr "Entrando set_nullable"
@@ -1086,3 +1059,33 @@ msgstr ""
#~ msgstr "" #~ msgstr ""
#~ "la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion" #~ "la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion"
#~ "%s.\n" #~ "%s.\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "Valor Sprec Sasoc Tag\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Reglas\n"
#~ "------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Reglas interpretadas\n"
#~ "--------------------\n"
#~ "\n"
+127 -154
View File
@@ -4,21 +4,22 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.30d\n" "Project-Id-Version: bison 1.33\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2001-11-21 17:33+0200\n" "PO-Revision-Date: 2002-02-08 00:15+0200\n"
"Last-Translator: Toomas Soome <[email protected]>\n" "Last-Translator: Toomas Soome <[email protected]>\n"
"Language-Team: Estonian <[email protected]>\n" "Language-Team: Estonian <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/LR0.c:189 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "liiga palju olekuid (maks %d)" msgstr "liiga palju olekuid (maks %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Tundmatu süsteemi viga" msgstr "Tundmatu süsteemi viga"
@@ -30,80 +31,80 @@ msgstr "hoiatus: "
msgid "fatal error: " msgid "fatal error: "
msgstr "fataalne viga: " msgstr "fataalne viga: "
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n" msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "redutseerimine" msgstr "redutseerimine"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "nihutamine" msgstr "nihutamine"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "viga" msgstr "viga"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d nihutamine/redutseerimine konflikt" msgstr[0] "%d nihutamine/redutseerimine konflikt"
msgstr[1] "%d nihutamine/redutseerimine konflikti" msgstr[1] "%d nihutamine/redutseerimine konflikti"
#: src/conflicts.c:396 #: src/conflicts.c:309
msgid "and" msgid "and"
msgstr "ja" msgstr "ja"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d redutseerimine/redutseerimine konflikt" msgstr[0] "%d redutseerimine/redutseerimine konflikt"
msgstr[1] "%d redutseerimine/redutseerimine konflikti" msgstr[1] "%d redutseerimine/redutseerimine konflikti"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "Olek %d sisaldab " msgstr "Olek %d sisaldab "
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "konfliktid: " msgstr "konfliktid: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d nihutamine/redutseerimine" msgstr " %d nihutamine/redutseerimine"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d redutseerimine/redutseerimine" msgstr " %d redutseerimine/redutseerimine"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s sisaldab " msgstr "%s sisaldab "
#: src/conflicts.c:488 #: src/conflicts.c:412
#, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n" msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n"
msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n" msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n" msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -112,22 +113,22 @@ msgstr ""
" $default\tredutseerin kasutades reeglit %d (%s)\n" " $default\tredutseerin kasutades reeglit %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n" msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n" msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "faili `%s' ei saa avada" msgstr "faili `%s' ei saa avada"
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "faili ei õnnestu sulgeda" msgstr "faili ei õnnestu sulgeda"
@@ -212,12 +213,13 @@ msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, " "Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Inc.\n" "Free Software Foundation, Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -225,27 +227,27 @@ msgstr ""
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n" "See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n" "PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' ei ole enam toetatud" msgstr "`%s' ei ole enam toetatud"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Lisainfo saamiseks proovige `%s --help'.\n" msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: puudub grammatikafail\n" msgstr "%s: puudub grammatikafail\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignoreerin lisaargumente peale `%s'\n" msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "liiga palju gotosid (maks %d)" msgstr "liiga palju gotosid (maks %d)"
@@ -293,101 +295,96 @@ msgstr "l
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni" msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "`%s' ei toeta argumente: %s" msgstr "`%s' ei toeta argumente: %s"
#: src/lex.c:683 #: src/lex.c:694
#, c-format #, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "võti `%s' nõuab argumenti" msgstr "võti `%s' nõuab argumenti"
#: src/main.c:134 #: src/output.c:951
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: sisemine viga: %s\n"
#: src/output.c:979
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ületati maksimaalset tabelisuurust (%d)" msgstr "ületati maksimaalset tabelisuurust (%d)"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " tüüp %d on %s\n" msgstr " tüüp %d on %s\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (reegel %d)" msgstr " (reegel %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taktsepteerin\n" msgstr " $default\taktsepteerin\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " TEGEVUSI POLE\n" msgstr " TEGEVUSI POLE\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tliigu olekule %d\n" msgstr " $ \tliigu olekule %d\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tnihuta ja liigu olekule %d\n" msgstr " %-4s\tnihuta ja liigu olekule %d\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n" msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tliigu olekule %d\n" msgstr " %-4s\tliigu olekule %d\n"
#: src/print.c:185 #: src/print.c:180
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "olek %d" msgstr "olek %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Grammatika" msgstr "Grammatika"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "Number, rida, reegel"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "reegel %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "tühi" msgstr "tühi"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad" msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
#: src/print.c:257 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad" msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " vasakul:" msgstr " vasakul:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " paremal:" msgstr " paremal:"
@@ -396,7 +393,7 @@ msgstr " paremal:"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tviga (mitteassotsiatiivne)" msgstr "%-4s\tviga (mitteassotsiatiivne)"
@@ -405,7 +402,7 @@ msgstr "%-4s\tviga (mitteassotsiatiivne)"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\tredutseerin kasutades reeglit %d (%s)" msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
@@ -431,275 +428,251 @@ msgstr "l
msgid "unterminated string" msgid "unterminated string"
msgstr "lõpetamata sõne" msgstr "lõpetamata sõne"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
msgid "invalid @ value"
msgstr "vigane @ väärtus"
#: src/reader.c:352 src/reader.c:416
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s on vigane" msgstr "%s on vigane"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s' $$ ei oma deklareeritud tüüpi" msgstr "`%s' $$ ei oma deklareeritud tüüpi"
#: src/reader.c:393 #: src/reader.c:409
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d `%s' ei oma deklareeritud tüüpi" msgstr "$%d `%s' ei oma deklareeritud tüüpi"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "lõpetamata `%{' definitsioon" msgstr "lõpetamata `%{' definitsioon"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "Enneaegne EOF peale %s" msgstr "Enneaegne EOF peale %s"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena" msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena"
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "sümbolile `%s' on antud enam kui üks literaal sõne" msgstr "sümbolile `%s' on antud enam kui üks literaal sõne"
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "sümbol %s on uuesti defineeritud" msgstr "sümbol %s on uuesti defineeritud"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s tüübi uuesti deklareerimine" msgstr "%s tüübi uuesti deklareerimine"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' ei ole %s sees lubatud" msgstr "`%s' ei ole %s sees lubatud"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "korduvad %s deklaratsioonid" msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "vigane %s deklaratsioon" msgstr "vigane %s deklaratsioon"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type deklaratsioonis puudub <tüübinimi>" msgstr "%type deklaratsioonis puudub <tüübinimi>"
#: src/reader.c:627 #: src/reader.c:643
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "vigane %%type deklaratsioon, element: %s" msgstr "vigane %%type deklaratsioon, element: %s"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "%s prioriteedi uus definitsioon" msgstr "%s prioriteedi uus definitsioon"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit" msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ootamatu element: %s" msgstr "ootamatu element: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "puudub %s" msgstr "puudub %s"
#: src/reader.c:810 #: src/reader.c:826
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "%%expect argument ei ole täisarv" msgstr "%%expect argument ei ole täisarv"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "tundmatu element %s, eeldasin identifikaatorit" msgstr "tundmatu element %s, eeldasin identifikaatorit"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "eeldasin %s asemel sõnekonstanti" msgstr "eeldasin %s asemel sõnekonstanti"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tundmatu: %s" msgstr "tundmatu: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "sisendgrammatikat pole" msgstr "sisendgrammatikat pole"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "tundmatu sümbol: %s" msgstr "tundmatu sümbol: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "lõpetamata %guard klausel" msgstr "lõpetamata %guard klausel"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit" msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "grammatika algab püstkriipsuga" msgstr "grammatika algab püstkriipsuga"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s jaoks on antud reegel, aga see on märk" msgstr "%s jaoks on antud reegel, aga see on märk"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "kaks @prec ühel real" msgstr "kaks @prec ühel real"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard on määratud, aga %%semantic_parser ei ole" msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "kaks tegevust ühe reegli lõpus" msgstr "kaks tegevust ühe reegli lõpus"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')" msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus" msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "vigane sisend: %s" msgstr "vigane sisend: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d" msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "sisendgrammatikas pole reegleid" msgstr "sisendgrammatikas pole reegleid"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad " "kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
"reeglid" "reeglid"
#: src/reader.c:1743 #: src/reader.c:1765
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "märkidele %s ja %s on mõlemale omistatud number %d" msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "%s ja %s omavad konfliktseid prioriteete" msgstr "%s ja %s omavad konfliktseid prioriteete"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid" msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "stardisümbol %s ei ole defineeritud" msgstr "stardisümbol %s ei ole defineeritud"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "stardisümbol %s on märk" msgstr "stardisümbol %s on märk"
#: src/reduce.c:400 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Kasutamata mitteterminalid:" msgstr "Kasutamata mitteterminalid:"
#: src/reduce.c:414 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Terminalid, mida ei kasutatud:" msgstr "Terminalid, mida ei kasutatud:"
#: src/reduce.c:425 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Kasutamata reeglid:" msgstr "Kasutamata reeglid:"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"Muutujad\n"
"--------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "Value Sprec Sassoc Tag\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Reeglid\n"
"-------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Interpreteeritud reeglid\n"
"------------------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d reeglit ei redutseeritud\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d reegel ei redutseeru\n"
msgstr[1] "%d reeglit ei redutseeru\n"
#: src/reduce.c:497 #: src/reduce.c:511
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d kasutamata mitteterminali%s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d kasutamata mitteterminal"
msgstr[1] "%d kasutamata mitteterminali"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr " ja " msgstr " ja "
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d kasutamata reeglit%s" msgid_plural "%d useless rules"
msgstr[0] "%d kasutamata reegel"
msgstr[1] "%d kasutamata reeglit"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset" msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
@@ -783,10 +756,10 @@ msgstr "m
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "`" msgstr "`"
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "'" msgstr "'"
+167 -157
View File
@@ -5,21 +5,22 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.30d\n" "Project-Id-Version: GNU bison 1.33\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2001-11-21 08:00-0500\n" "PO-Revision-Date: 2002-02-11 08:00-0500\n"
"Last-Translator: Michel Robitaille <[email protected]>\n" "Last-Translator: Michel Robitaille <[email protected]>\n"
"Language-Team: French <[email protected]>\n" "Language-Team: French <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: src/LR0.c:189 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "nombre trop grand d'états (max %d)" msgstr "nombre trop grand d'états (max %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Erreur système inconnue" msgstr "Erreur système inconnue"
@@ -31,78 +32,81 @@ msgstr "AVERTISSEMENT: "
msgid "fatal error: " msgid "fatal error: "
msgstr "erreur fatale: " msgstr "erreur fatale: "
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n" "Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "réduction" msgstr "réduction"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "décalage" msgstr "décalage"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "une erreur" msgstr "une erreur"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d conflits par décalage/réduction" msgstr[0] "%d conflit par décalage/réduction"
msgstr[1] "%d conflits par décalage/réduction"
#: src/conflicts.c:396 #: src/conflicts.c:309
msgid "and" msgid "and"
msgstr "et" msgstr "et"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d conflits par réduction/réduction" msgstr[0] "%d conflit par réduction/réduction"
msgstr[1] "%d conflits par réduction/réduction"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "L'état %d contient " msgstr "L'état %d contient "
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "conflits: " msgstr "conflits: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d décalage/réduction" msgstr " %d décalage/réduction"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d réduction/réduction" msgstr " %d réduction/réduction"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s contient " msgstr "%s contient "
#: src/conflicts.c:488 #: src/conflicts.c:412
#, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "attendu %d conflits décalage/réduction\n" msgstr[0] "attendait %d conflit par décalage/réduction\n"
msgstr[1] "attendait %d conflits par décalage/réduction\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[réduction par la règle %d (%s)\n" msgstr " %-4s\t[réduction par la règle %d (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -111,22 +115,22 @@ msgstr ""
" $défaut\tréduction par la règle %d (%s)\n" " $défaut\tréduction par la règle %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tréduction par la règle %d (%s)\n" msgstr " %-4s\tréduction par la règle %d (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $défaut\tréduction par la règle %d (%s)\n" msgstr " $défaut\tréduction par la règle %d (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ne peut ouvrir le fichier `%s'" msgstr "ne peut ouvrir le fichier `%s'"
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "ne peut fermer le fichier" msgstr "ne peut fermer le fichier"
@@ -215,11 +219,13 @@ msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002 Free Software Foundation, "
"Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -228,27 +234,27 @@ msgstr ""
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n" "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n" "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' n'est plus supporté" msgstr "`%s' n'est plus supporté"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Pour en savoir davantage, faites: `%s --help'.\n" msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: grammaire manquante\n" msgstr "%s: grammaire manquante\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: arguments supplémentaires ignorés après `%s'\n" msgstr "%s: arguments supplémentaires ignorés après `%s'\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "nombre trop grand de \"goto\" (Max %d)" msgstr "nombre trop grand de \"goto\" (Max %d)"
@@ -296,101 +302,96 @@ msgstr "le nom de type ne se termine pas"
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères" msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "`%s' ne supporte aucun argument: %s" msgstr "`%s' ne supporte aucun argument: %s"
#: src/lex.c:683 #: src/lex.c:694
#, c-format #, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "`%s': requiert un argument" msgstr "`%s': requiert un argument"
#: src/main.c:134 #: src/output.c:951
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: erreur interne: %s\n"
#: src/output.c:979
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "taille maximale de la table (%d) dépassée" msgstr "taille maximale de la table (%d) dépassée"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " le type %d est %s\n" msgstr " le type %d est %s\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (règle %d)" msgstr " (règle %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $défaut\taccepter\n" msgstr " $défaut\taccepter\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " PAS D'ACTION\n" msgstr " PAS D'ACTION\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \taller à l'état %d\n" msgstr " $ \taller à l'état %d\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdécalage et aller à l'état %d\n" msgstr " %-4s\tdécalage et aller à l'état %d\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terreur (non-associatif)\n" msgstr " %-4s\terreur (non-associatif)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\taller à l'état %d\n" msgstr " %-4s\taller à l'état %d\n"
#: src/print.c:185 #: src/print.c:180
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "état %d" msgstr "état %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Grammaire" msgstr "Grammaire"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "Nombre, ligne, règle"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "règle %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "vide" msgstr "vide"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Terminaux, suivis des règles où ils apparaissent" msgstr "Terminaux, suivis des règles où ils apparaissent"
#: src/print.c:257 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Non-terminaux, suivis des règles où ils apparaissent" msgstr "Non-terminaux, suivis des règles où ils apparaissent"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " à gauche:" msgstr " à gauche:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " à droite:" msgstr " à droite:"
@@ -399,7 +400,7 @@ msgstr "
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\terreur (non-associatif)" msgstr "%-4s\terreur (non-associatif)"
@@ -408,7 +409,7 @@ msgstr "%-4s\terreur (non-associatif)"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$défaut\tréduction par la règle %d (%s)" msgstr "$défaut\tréduction par la règle %d (%s)"
@@ -434,276 +435,252 @@ msgstr "cha
msgid "unterminated string" msgid "unterminated string"
msgstr "chaîne de caractère non terminée" msgstr "chaîne de caractère non terminée"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
msgid "invalid @ value"
msgstr "valeur @ invalide"
#: src/reader.c:352 src/reader.c:416
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s n'est pas valide" msgstr "%s n'est pas valide"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' n'a pas son type déclaré" msgstr "$$ de `%s' n'a pas son type déclaré"
#: src/reader.c:393 #: src/reader.c:409
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d de `%s' n'a pas de type déclaré" msgstr "$%d de `%s' n'a pas de type déclaré"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "La section de définition (%{) ne termine pas avant la fin du fichier" msgstr "La section de définition (%{) ne termine pas avant la fin du fichier"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "Fin de fichier prématutée après %s" msgstr "Fin de fichier prématutée après %s"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "symbole `%s' utilisé plus d'une fois dans une chaîne litérale" msgstr "symbole `%s' utilisé plus d'une fois dans une chaîne litérale"
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "symbole `%s' présent dans plus d'une chaîne litérale" msgstr "symbole `%s' présent dans plus d'une chaîne litérale"
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbole %s redéfini" msgstr "symbole %s redéfini"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "redéclaration du type de %s" msgstr "redéclaration du type de %s"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' n'est pas valide dans %s" msgstr "`%s' n'est pas valide dans %s"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "multiples déclarations %s" msgstr "multiples déclarations %s"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "la déclaration %s n'est pas valide" msgstr "la déclaration %s n'est pas valide"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "la déclaration %type n'a pas de <nom_de_type>" msgstr "la déclaration %type n'a pas de <nom_de_type>"
#: src/reader.c:627 #: src/reader.c:643
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s" msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "redéfinition du niveau de priorité de %s" msgstr "redéfinition du niveau de priorité de %s"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "" msgstr ""
"le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur" "le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "item inattendu: %s" msgstr "item inattendu: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "non appariement de %s" msgstr "non appariement de %s"
#: src/reader.c:810 #: src/reader.c:826
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "l'argument de %%expect n'est pas un entier" msgstr "l'argument de %%expect n'est pas un entier"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "item %s non reconnu, un identificateur est attendu" msgstr "item %s non reconnu, un identificateur est attendu"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "chaîne de caractères constante attendue plutôt que %s" msgstr "chaîne de caractères constante attendue plutôt que %s"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "non reconnu: %s" msgstr "non reconnu: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "aucune grammaire en entrée" msgstr "aucune grammaire en entrée"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "caractère inconnu: %s" msgstr "caractère inconnu: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "clause %guard non terminée" msgstr "clause %guard non terminée"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'" msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "la grammaire débute par une barre verticale" msgstr "la grammaire débute par une barre verticale"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal" msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "deux @prec de suite" msgstr "deux @prec de suite"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié" msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "deux actions à la fin d'une même règle" msgstr "deux actions à la fin d'une même règle"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (`%s' `%s') pour l'action par défaut" msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action" msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "entrée non valide: %s" msgstr "entrée non valide: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (jeton plus non terminaux); maximum %d" msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles" msgstr "la grammaire n'a pas de règles"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas " "le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
"de règle" "de règle"
#: src/reader.c:1743 #: src/reader.c:1765
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "les jetons %s et %s se sont vus assigner le nombre %d" msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "les priorités pour %s et %s entrent en conflit" msgstr "les priorités pour %s et %s entrent en conflit"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "les valeurs d'association de %s et %s entrent en conflit" msgstr "les valeurs d'association de %s et %s entrent en conflit"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "le symbole de départ %s n'est pas défini" msgstr "le symbole de départ %s n'est pas défini"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "le symbole de départ %s est un terminal" msgstr "le symbole de départ %s est un terminal"
#: src/reduce.c:400 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Non-terminaux inutiles:" msgstr "Non-terminaux inutiles:"
#: src/reduce.c:414 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Terminaux non utilisés:" msgstr "Terminaux non utilisés:"
#: src/reduce.c:425 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Règles inutiles:" msgstr "Règles inutiles:"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"Variables\n"
"---------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "Valeur Spréc Sassoc Tag\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Règles\n"
"------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Règles interprétées\n"
"-------------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d règles jamais réduites\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d règle n'a jamais été réduite\n"
msgstr[1] "%d règles n'ont jamais été réduites\n"
#: src/reduce.c:497 #: src/reduce.c:511
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d catégories non productives%s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d nonterminal inutilisable"
msgstr[1] "%d nonterminals inutilisables"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr " et " msgstr " et "
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d règle(s) non productive(s)%s" msgid_plural "%d useless rules"
msgstr[0] "%d règle inutilisable"
msgstr[1] "%d règles inutilisables"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s" msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
@@ -787,14 +764,47 @@ msgstr "m
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "`" msgstr "`"
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "'" msgstr "'"
#~ msgid "%s: internal error: %s\n"
#~ msgstr "%s: erreur interne: %s\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "Valeur Spréc Sassoc Tag\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Règles\n"
#~ "------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Règles interprétées\n"
#~ "-------------------\n"
#~ "\n"
#~ msgid "DERIVES" #~ msgid "DERIVES"
#~ msgstr "DÉRIVES" #~ msgstr "DÉRIVES"
+773
View File
@@ -0,0 +1,773 @@
# Italian translation for message of GNU bison.
# Copyright (C) 2002 Free Software Foundation, Inc.
# Paolo Bonzini <[email protected]>, 2002.
#
msgid ""
msgstr ""
"Project-Id-Version: bison 1.31\n"
"POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2002-01-23 14:16+0100\n"
"Last-Translator: Paolo Bonzini <[email protected]>\n"
"Language-Team: Italian <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/LR0.c:189
#, c-format
msgid "too many states (max %d)"
msgstr "troppi stati (massimo %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error"
msgstr "Errore di sistema sconosciuto"
#: src/complain.c:150
msgid "warning: "
msgstr "attenzione: "
#: src/complain.c:238
msgid "fatal error: "
msgstr "errore fatale: "
#: src/conflicts.c:44
#, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr ""
"Conflitto nello stato %d tra la regola %d e il token %s risolto come %s.\n"
#: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce"
msgstr "riduzione"
#: src/conflicts.c:101 src/conflicts.c:115
msgid "shift"
msgstr "shift"
#: src/conflicts.c:123
msgid "an error"
msgstr "un errore"
#: src/conflicts.c:302
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d conflitto shift/riduzione"
msgstr[1] "%d conflitti shift/riduzione"
#: src/conflicts.c:309
msgid "and"
msgstr "e"
#: src/conflicts.c:315
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d conflitto riduzione/riduzione"
msgstr[1] "%d conflitti riduzione/riduzione"
#: src/conflicts.c:340
#, c-format
msgid "State %d contains "
msgstr "Lo stato %d contiene"
#. If invoked with `--yacc', use the output format specified by
#. POSIX.
#: src/conflicts.c:387
msgid "conflicts: "
msgstr "conflitti: "
#: src/conflicts.c:389
#, c-format
msgid " %d shift/reduce"
msgstr " %d shift/riduzione"
#: src/conflicts.c:393
#, c-format
msgid " %d reduce/reduce"
msgstr " %d riduzione/riduzione"
#: src/conflicts.c:398 src/reduce.c:508
#, c-format
msgid "%s contains "
msgstr "%s contiene "
#: src/conflicts.c:412
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "atteso %d conflitto shift/riduzione\n"
msgstr[1] "attesi %d conflitti shift/riduzione\n"
#: src/conflicts.c:463 src/conflicts.c:540
#, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[riduzione con la regole %d (%s)]\n"
#: src/conflicts.c:467 src/print.c:154
#, c-format
msgid ""
" $default\treduce using rule %d (%s)\n"
"\n"
msgstr ""
" $default\triduzione con la regola %d (%s)\n"
"\n"
#: src/conflicts.c:521 src/conflicts.c:534
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\triduzione con la regola %d (%s)\n"
#: src/conflicts.c:550
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\triduzione con la regola %d (%s)\n"
#: src/files.c:150
#, c-format
msgid "cannot open file `%s'"
msgstr "impossibile aprire il file `%s'"
#: src/files.c:169
msgid "cannot close file"
msgstr "impossibile chiudere il file `%s'"
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genera parser per grammatiche LALR(1).\n"
#: src/getargs.c:88
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
#: src/getargs.c:92
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
msgstr ""
"Se un argomento è indicato come obbligatorio in un'opzione lunga, allora\n"
"è obbligatorio anche per l'equivalente opzione corta. Analogamente per\n"
"gli argomenti opzionali.\n"
#: src/getargs.c:98
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
"Modalità operative:\n"
" -h, --help mostra questo aiuto ed esce\n"
" -V, --version mostra informazioni sulla versione ed esce\n"
" -y, --yacc emula il comportamento di POSIX yacc\n"
#: src/getargs.c:105
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
" -t, --debug instrument the parser for debugging\n"
" --locations enable locations computation\n"
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
" -l, --no-lines don't generate `#line' directives\n"
" -n, --no-parser generate the tables only\n"
" -k, --token-table include a table of token names\n"
msgstr ""
" -S, --skeleton=FILE specifica lo scheletro da usare\n"
" -t, --debug aggiunge informazioni di debug al parser\n"
" --locations abilita il calcolo delle locazioni (@N)\n"
" -p, --name-prefix=PREFIX prepone PREFIX ai simboli globali\n"
" -l, --no-lines non genera direttive `#line'\n"
" -n, --no-parser genera le sole tabelle\n"
" -k, --token-table include una tabella di nomi dei token\n"
#: src/getargs.c:117
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG description of the "
"automaton\n"
msgstr ""
"Output:\n"
" -d, --defines produce anche uno header\n"
" -v, --verbose produce anche una spiegazione dell'automa\n"
" -b, --file-prefix=PREFIX specifica un prefisso per il file di output\n"
" -o, --output=FILE lascia l'output in FILE\n"
" -g, --graph produce anche una descrizione VCG dell'automa\n"
#: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n"
msgstr "Segnalare eventuali bug a <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:141
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:151
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
"Questo e' software libero; vedere il sorgente per le condizioni cui e'\n"
"sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
#: src/getargs.c:230 src/lex.c:705
#, c-format
msgid "`%s' is no longer supported"
msgstr "`%s' non è più supportato"
#: src/getargs.c:254
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Provare `%s --help' per ulteriori informazioni.\n"
#: src/getargs.c:261
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: nessun file grammatica specificato\n"
#: src/getargs.c:265
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignorati gli argomenti successivi a `%s'\n"
#: src/lalr.c:256
#, c-format
msgid "too many gotos (max %d)"
msgstr "troppi goto (max %d)"
#: src/lex.c:76
msgid "unexpected `/' found and ignored"
msgstr "`/' inatteso, trovato e ignorato"
#: src/lex.c:105 src/reader.c:280
msgid "unterminated comment"
msgstr "commento non terminato"
#: src/lex.c:137
msgid "unexpected end of file"
msgstr "fine del file inattesa"
# Oder soll man den Begriff "Escapezeichen" verwenden?
#: src/lex.c:166
msgid "unescaped newline in constant"
msgstr "fine di linea non preceduta da `\\' in una costante"
#: src/lex.c:208
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "valore ottale fuori dall'intervallo 0...255: `\\%o'"
#: src/lex.c:233
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "valore esadecimale superiore a 255: `\\x%x'"
#: src/lex.c:245
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "sequenza di escape sconosciuta: `\\' seguito da `%s'"
#: src/lex.c:342
msgid "unterminated type name at end of file"
msgstr "nome di tipo non terminato a fine file"
#: src/lex.c:345
msgid "unterminated type name"
msgstr "nome di tipo non terminato"
#: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens"
msgstr "usa \"...\" per token letterali di più caratteri"
#: src/lex.c:678
#, c-format
msgid "`%s' supports no argument: %s"
msgstr "`%s' non supporta argomenti: %s"
#: src/lex.c:694
#, c-format
msgid "`%s' requires an argument"
msgstr "`%s' richiede un argomento"
#: src/output.c:951
#, c-format
msgid "maximum table size (%d) exceeded"
msgstr "ecceduta la dimensione massima di una tabella (%d)"
#: src/print.c:39
#, c-format
msgid " type %d is %s\n"
msgstr " il tipo %d è %s\n"
#: src/print.c:88
#, c-format
msgid " (rule %d)"
msgstr " (regola %d)"
#: src/print.c:108
msgid " $default\taccept\n"
msgstr " $default\taccetta\n"
#: src/print.c:110
msgid " NO ACTIONS\n"
msgstr " NESSUNA AZIONE\n"
#: src/print.c:124
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tprosecuzione allo stato %d\n"
#: src/print.c:127
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tshift e prosecuzione allo stato %d\n"
#: src/print.c:142
#, c-format
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terrore (non associativo)\n"
#: src/print.c:169
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tprosecuzione allo stato %d\n"
#: src/print.c:180
#, c-format
msgid "state %d"
msgstr "stato %d"
#. rule # : LHS -> RHS
#: src/print.c:211
msgid "Grammar"
msgstr "Grammatica"
#: src/print.c:212
msgid "Number, Line, Rule"
msgstr "Numero, Linea, Regola"
#: src/print.c:217
#, c-format
msgid " %3d %3d %s ->"
msgstr " %3d %3d %s ->"
#: src/print.c:224
msgid "empty"
msgstr "vuoto"
#. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:231
msgid "Terminals, with rules where they appear"
msgstr "Simboli terminali e regole in cui appaiono"
#: src/print.c:256
msgid "Nonterminals, with rules where they appear"
msgstr "Simboli nonterminali e regole in cui appaiono"
#: src/print.c:282
msgid " on left:"
msgstr " nel primo membro:"
#: src/print.c:297
msgid " on right:"
msgstr " nel secondo membro:"
#. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:146
#, c-format
msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\terrore (non associativo)"
#.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:161
#, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr "$default\triduzione con la regola %d (%s)"
#: src/reader.c:89
msgid " Skipping to next \\n"
msgstr " Passo al successivo \\n"
#: src/reader.c:91
#, c-format
msgid " Skipping to next %c"
msgstr " Passo al successivo %c"
#: src/reader.c:142 src/reader.c:154
msgid "invalid $ value"
msgstr "valore $ non valido"
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "stringa non terminata alla fine del file"
#: src/reader.c:183
msgid "unterminated string"
msgstr "stringa non terminata"
#: src/reader.c:339
#, fuzzy
msgid "invalid @ value"
msgstr "valore $ non valido"
#: src/reader.c:352 src/reader.c:416
#, c-format
msgid "%s is invalid"
msgstr "%s non è valido"
#: src/reader.c:392
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
#: src/reader.c:409
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
#: src/reader.c:463
msgid "unterminated `%{' definition"
msgstr "definizione `%{' non terminata"
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format
msgid "Premature EOF after %s"
msgstr "Fine di file prematura dopo %s"
#: src/reader.c:525
#, c-format
msgid "symbol `%s' used more than once as a literal string"
msgstr "simbolo `%s' usato più di una volta in una stringa letterale"
#: src/reader.c:528
#, c-format
msgid "symbol `%s' given more than one literal string"
msgstr "il simbolo `%s' dà pi&grave; di una stringa letterale"
#: src/reader.c:549 src/reader.c:692
#, c-format
msgid "symbol %s redefined"
msgstr "simbolo %s ridefinito"
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format
msgid "type redeclaration for %s"
msgstr "tipo dichiarato due volte per %s"
#: src/reader.c:568
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' non è valido in %s"
#: src/reader.c:586 src/reader.c:751
#, c-format
msgid "multiple %s declarations"
msgstr "dichiarazioni multiple per %s"
#: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format
msgid "invalid %s declaration"
msgstr "dichiarazione %s non valida"
#: src/reader.c:608
msgid "%type declaration has no <typename>"
msgstr "dichiarazione %type senza <nome di tipo>"
#: src/reader.c:643
#, c-format
msgid "invalid %%type declaration due to item: %s"
msgstr "dichiarazione %%type non valida per la presenza di `%s'"
#: src/reader.c:688
#, c-format
msgid "redefining precedence of %s"
msgstr "precedenza di `%s' definita due volte"
#: src/reader.c:711
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "testo non valido (%s) - il numero dovrebbe seguire l'identificatore"
#: src/reader.c:721
#, c-format
msgid "unexpected item: %s"
msgstr "elemento inatteso: %s"
#: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format
msgid "unmatched %s"
msgstr "%s non bilanciato"
#: src/reader.c:826
#, c-format
msgid "argument of %%expect is not an integer"
msgstr "L'argomento di %%expect non è un intero"
#: src/reader.c:872
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "elemento %s non riconosciuto, atteso un identificatore"
#: src/reader.c:894
#, c-format
msgid "expected string constant instead of %s"
msgstr "attesa una costante stringa invece di %s"
#: src/reader.c:1042
#, c-format
msgid "unrecognized: %s"
msgstr "non riconosciuto: %s"
#: src/reader.c:1047
msgid "no input grammar"
msgstr "nessuna grammatica di input"
#: src/reader.c:1052
#, c-format
msgid "unknown character: %s"
msgstr "carattere sconosciuto: %s"
#: src/reader.c:1226
#, c-format
msgid "unterminated %guard clause"
msgstr "clausola %guard non terminata"
#: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "regola malformata: simbolo iniziale non seguito da `:'"
#: src/reader.c:1386
msgid "grammar starts with vertical bar"
msgstr "la grammatica comincia con un `|'"
#: src/reader.c:1414
#, c-format
msgid "rule given for %s, which is a token"
msgstr "fornita una regola per il token %s"
#: src/reader.c:1514
msgid "two @prec's in a row"
msgstr "due @prec di seguito"
#: src/reader.c:1522
#, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "trovato %%guard senza che sia specificato %%semantic_parser"
#: src/reader.c:1531
msgid "two actions at end of one rule"
msgstr "due azioni alla fine di una regola"
#: src/reader.c:1545
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
#: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action"
msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
#: src/reader.c:1595
#, c-format
msgid "invalid input: %s"
msgstr "input non valido: %s"
#: src/reader.c:1603
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "troppi simboli (token e nonterminali); il massimo è %d"
#: src/reader.c:1606
msgid "no rules in the input grammar"
msgstr "nessuna regola nella grammatica di input"
#: src/reader.c:1630
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "usato il simbolo %s, ma non è un token e non ha regole"
#: src/reader.c:1765
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "i token %s e %s hanno lo stesso numero %d"
#: src/reader.c:1818
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "precedenze in conflitto per %s und %s"
#: src/reader.c:1830
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "associatività in conflitto per %s e %s"
#: src/reader.c:1869
#, c-format
msgid "the start symbol %s is undefined"
msgstr "simbolo iniziale %s non definito"
#: src/reader.c:1871
#, c-format
msgid "the start symbol %s is a token"
msgstr "specificato il token %s come simbolo iniziale"
#: src/reduce.c:409
msgid "Useless nonterminals:"
msgstr "Simboli nonterminali inutili:"
#: src/reduce.c:422
msgid "Terminals which are not used:"
msgstr "Simboli terminali inutilizzati:"
#: src/reduce.c:433
msgid "Useless rules:"
msgstr "Regole inutili:"
#: src/reduce.c:503
#, c-format
msgid "%d rule never reduced\n"
msgid_plural "%d rules never reduced\n"
msgstr[0] "%d regola non applicata\n"
msgstr[1] "%d regole non applicate\n"
#: src/reduce.c:511
#, c-format
msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d simbolo nonterminale inutilizzato"
msgstr[1] "%d simboli nonterminali inutilizzati"
#: src/reduce.c:517
msgid " and "
msgstr " e "
#: src/reduce.c:520
#, c-format
msgid "%d useless rule"
msgid_plural "%d useless rules"
msgstr[0] "%d regola inutile"
msgstr[1] "%d regole inutili"
#: src/reduce.c:551
#, c-format
msgid "Start symbol %s does not derive any sentence"
msgstr "dal simbolo iniziale %s non deriva alcuna frase"
#: lib/getopt.c:694
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: l'opzione `%s' è ambigua\n"
#: lib/getopt.c:719
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: l'opzione `--%s' non ammette argomenti\n"
#: lib/getopt.c:724
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'opzione `%c%s' non ammette argomenti\n"
#: lib/getopt.c:742 lib/getopt.c:915
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'opzione `%s' richiede un argomento\n"
#. --option
#: lib/getopt.c:771
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opzione sconosciuta `--%s'\n"
#. +option or -option
#: lib/getopt.c:775
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opzione sconosciuta `%c%s'\n"
#. 1003.2 specifies the format of this message.
#: lib/getopt.c:801
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opzione non valida -- %c\n"
#: lib/getopt.c:804
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opzione non valida -- %c\n"
#. 1003.2 specifies the format of this message.
#: lib/getopt.c:834 lib/getopt.c:964
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opzione richiede un argomento -- %c\n"
#: lib/getopt.c:881
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'opzione `-W %s' è ambigua\n"
#: lib/getopt.c:899
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'opzione `-W %s' non ammette un argomento\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
msgid "memory exhausted"
msgstr "memoria esaurita"
#. Get translations for open and closing quotation marks.
#.
#. The message catalog should translate "`" to a left
#. quotation mark suitable for the locale, and similarly for
#. "'". If the catalog has no translation,
#. locale_quoting_style quotes `like this', and
#. clocale_quoting_style quotes "like this".
#.
#. For example, an American English Unicode locale should
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
#. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:274
msgid "`"
msgstr "`"
#: lib/quotearg.c:275
msgid "'"
msgstr "'"
#~ msgid "invalid value: %s%d"
#~ msgstr "valore non valido: %s%d"
#~ msgid "too many items (max %d)"
#~ msgstr "troppi elementi (max %d)"
+264 -266
View File
@@ -1,12 +1,12 @@
# Japanese message for GNU bison 1.28 # Japanese message for GNU bison 1.30f
# Copyright (C) 1999 Free Software Foundation, Inc. # Copyright (C) 2001 Free Software Foundation, Inc.
# Daisuke Yamashita <[email protected]>, 1999. # Daisuke Yamashita <[email protected]>, 2001.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28\n" "Project-Id-Version: GNU bison 1.30f\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 1999-09-28 21:10+0900\n" "PO-Revision-Date: 2001-12-10 15:59+0900\n"
"Last-Translator: Daisuke Yamashita <[email protected]>\n" "Last-Translator: Daisuke Yamashita <[email protected]>\n"
"Language-Team: Japanese <[email protected]>\n" "Language-Team: Japanese <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -14,95 +14,93 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: src/LR0.c:189 #: src/LR0.c:189
#, fuzzy, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "状態が多すぎます (最大 %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr "不明なシステムエラー"
#: src/complain.c:150 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr "警告: "
#: src/complain.c:238 #: src/complain.c:238
#, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "%s: 致命的エラー: " msgstr "致命的エラー: "
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n" msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "還元" msgstr "還元"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "シフト" msgstr "シフト"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "エラー" msgstr "エラー"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, fuzzy, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d シフト/還元衝突" msgstr[0] "%d シフト/還元衝突"
#: src/conflicts.c:396 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " および" msgstr "および"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, fuzzy, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d 還元/還元衝突" msgstr[0] "%d 還元/還元衝突"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, fuzzy, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "状態 %d が含むのは" msgstr "状態 %d が含むのは "
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "衝突: " msgstr "衝突: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d シフト/還元" msgstr " %d シフト/還元"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d 還元/還元" msgstr " %d 還元/還元"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s は" msgstr "%s の中身は"
#: src/conflicts.c:488 #: src/conflicts.c:412
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d シフト/還元衝突" msgstr[0] "本来 %d 個のシフト/還元衝突であるはずです\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n" msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -111,41 +109,43 @@ msgstr ""
" $default\t規則 %d を利用して還元 (%s)\n" " $default\t規則 %d を利用して還元 (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n" msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr "ファイル `%s' を開けません"
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr "ファイルを閉じることができません"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:84 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr "GNU bison は LALR(1) 文法の構文解析器を生成します。\n"
#: src/getargs.c:88 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr "使い方: %s [オプション]... ファイル\n"
#: src/getargs.c:92 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
"ロングオプションで必須の引数が示されていれば、同じ意味のショートオプション\n"
"でも同様に必須の引数となります。必須でない選択的引数でも同様です。\n"
#: src/getargs.c:98 #: src/getargs.c:98
msgid "" msgid ""
@@ -154,6 +154,10 @@ msgid ""
" -V, --version output version information and exit\n" " -V, --version output version information and exit\n"
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
"操作モード:\n"
" -h, --help この使い方を表示して終了する\n"
" -V, --version バージョン情報を表示して終了する\n"
" -y, --yacc POSIX yacc をエミュレイトする\n"
#: src/getargs.c:105 #: src/getargs.c:105
msgid "" msgid ""
@@ -166,6 +170,14 @@ msgid ""
" -n, --no-parser generate the tables only\n" " -n, --no-parser generate the tables only\n"
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
"構文解析器:\n"
" -S, --skeleton=FILE 利用するスケルトンを指定する\n"
" -t, --debug 構文解析のデバッグ用の手段\n"
" --locations 計算結果位置を有効にする\n"
" -p, --name-prefix=PREFIX PREFIX を外部シンボルとして先頭に挿入する\n"
" -l, --no-lines `#line' ディレクティブを生成しない\n"
" -n, --no-parser テーブルのみを生成する\n"
" -k, --token-table トークン名のテーブルを含める\n"
#: src/getargs.c:117 #: src/getargs.c:117
msgid "" msgid ""
@@ -177,53 +189,67 @@ msgid ""
" -g, --graph also produce a VCG description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
"出力:\n"
" -d, --defines ヘッダファイルも作成する\n"
" -v, --verbose オートマトンの解説も作成する\n"
" -b, --file-prefix=PREFIX 出力ファイルの PREFIX(接頭辞) を指定する\n"
" -o, --output=FILE 出力先を FILE とする\n"
" -g, --graph オートマトンの VCG 記述子も作成する\n"
#: src/getargs.c:127 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr "バグレポートは <[email protected]> まで。\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:141 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
#, fuzzy
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
"[参考訳 -- 法的効力は英文が適用されます]\n"
"これはフリーソフトウェアです -- 複製についての条件はソースを見ましょう。\n"
"一切の保証はありません -- 商業性や目的適合性についての保証すらありません。\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr "`%s' は最早サポートされません"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr "`%s --help' で詳細情報を参照してください\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: 文法ファイルが指定されていません\n" msgstr "%s: 文法ファイルが指定されていません\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, fuzzy, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n" msgstr "%s: `%s' 後ろの余分な引数は無視されました\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, fuzzy, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "goto の数が多すぎます (最大 %d)"
#: src/lex.c:76 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
@@ -234,7 +260,6 @@ msgid "unterminated comment"
msgstr "閉じていないコメントです" msgstr "閉じていないコメントです"
#: src/lex.c:137 #: src/lex.c:137
#, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "予期しないファイルの終端です" msgstr "予期しないファイルの終端です"
@@ -269,116 +294,96 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう" msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr "`%s' は引数を受け付けません: %s"
#: src/lex.c:683 #: src/lex.c:694
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: オプション `%s' は引数を要求します\n"
#: src/main.c:134
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "`%s' requires an argument"
msgstr "%s: 内部エラー: %s\n" msgstr "`%s' オプションは引数を要求します"
#: src/output.c:979 #: src/output.c:951
#, fuzzy, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "最大テーブルサイズ (%s) を超えました" msgstr "最大テーブルサイズ (%d) を超えました"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " タイプ %d は %s です\n" msgstr " タイプ %d は %s です\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (規則 %d)" msgstr " (規則 %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taccept\n" msgstr " $default\taccept\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " 動作無し\n" msgstr " 動作無し\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \t状態 %d へ\n" msgstr " $ \t状態 %d へ\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tシフト、および状態 %d へ\n" msgstr " %-4s\tシフト、および状態 %d へ\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tエラー (非結合)\n" msgstr " %-4s\tエラー (非結合)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\t状態 %d へ\n" msgstr " %-4s\t状態 %d へ\n"
#: src/print.c:185 #: src/print.c:180
#, fuzzy, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr "状態 %d"
"\n"
"\n"
"状態 %d\n"
"\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
#, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr "文法"
"\n"
"文法\n"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "番号, 行, 規則"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "規則 %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
#, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr "出現位置の規則による終端"
"\n"
"終端トークン、およびそこに現れた規則\n"
"\n"
#: src/print.c:257 #: src/print.c:256
#, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr "出現位置の規則による非終端"
"\n"
"非終端トークン、およびそこに現れた規則\n"
"\n"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " 左辺:" msgstr " 左辺:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " 右辺:" msgstr " 右辺:"
@@ -387,19 +392,19 @@ msgstr "
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, fuzzy, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tエラー (非結合)\n" msgstr "%-4s\tエラー (非結合)"
#. #.
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, fuzzy, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr "$default\t規則 %d を利用して還元 (%s)"
#: src/reader.c:89 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
@@ -412,7 +417,7 @@ msgstr "
#: src/reader.c:142 src/reader.c:154 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "無効な $ の値" msgstr "不適切な $ の値"
#: src/reader.c:180 src/reader.c:195 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
@@ -422,288 +427,249 @@ msgstr "
msgid "unterminated string" msgid "unterminated string"
msgstr "閉じられていない文字列" msgstr "閉じられていない文字列"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
#, fuzzy, c-format #, fuzzy
msgid "%s is invalid" msgid "invalid @ value"
msgstr "@%s は無効です" msgstr "不適切な $ の値"
#: src/reader.c:376 #: src/reader.c:352 src/reader.c:416
#, c-format
msgid "%s is invalid"
msgstr "%s は不適切です"
#: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s' の $$ に宣言のない型があります" msgstr "`%s' の $$ に宣言のない型があります"
#: src/reader.c:393 #: src/reader.c:409
#, fuzzy, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "`%s' $%s に宣言のない型があります" msgstr "$%d 個`%s' が宣言された型を持っていません"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "`%{' 定義 が閉じられていません" msgstr "`%{' 定義 が閉じられていません"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr "%s の後ろに早くも EOF があります"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "" msgstr "シンボル `%s' はリテラル文字列として複数回使われました"
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "" msgstr "シンボル `%s' は複数のリテラル文字列が与えられました"
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "シンボル %s が再定義されました" msgstr "シンボル %s が再定義されました"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s の型が再定義されました" msgstr "%s の型が再定義されました"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "%2$s 内の `%1$s' は無効です" msgstr "`%s' は %s 内では不適切です"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, fuzzy, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "複数の %start が宣言されました" msgstr "%s が複数個宣言されました"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, fuzzy, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "無効な %start が宣言されました" msgstr "%s の宣言が不適切です"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type 宣言に <タイプ名> がありません" msgstr "%type 宣言に <タイプ名> がありません"
#: src/reader.c:627 #: src/reader.c:643
#, fuzzy, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "アイテムに与えられるべき %%type 宣言が無効です: `%s'" msgstr "アイテムの為の %%type 宣言が不適切です: %s"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "%s に先行した再定義です" msgstr "%s に先行した再定義です"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "無効なテキスト (%s) - 数値は識別子の後ろにあるべきです" msgstr "不適切なテキスト (%s) - 数値は識別子の後ろにあるべきです"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "予期せぬアイテム: %s" msgstr "予期せぬアイテム: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, fuzzy, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "対応のない `{' です" msgstr "対応のない %s です"
#: src/reader.c:810 #: src/reader.c:826
#, fuzzy, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "%expect の引数が整数値ではありません" msgstr "%%expect の引数が整数値ではありません"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "認識できないアイテム %s、ここでは識別子が期待されます" msgstr "認識できないアイテム %s、ここでは識別子が期待されます"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "ここでは %s ではなく文字列定数が期待されます" msgstr "ここでは %s ではなく文字列定数が期待されます"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "認識できない: %s" msgstr "認識できない: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "文法の入力が無い" msgstr "文法の入力が無い"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "未知の文字: %s" msgstr "未知の文字: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, fuzzy, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "閉じられていない %%guard 節です" msgstr "%guard 節が閉じられていません"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません" msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "文法は縦棒 (|) で始めます" msgstr "文法は縦棒 (|) で始めます"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s に規則が与えられ、それはトークンとなります" msgstr "%s に規則が与えられ、それはトークンとなります"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています" msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard がありますが %%semantic_parser が指定されていません" msgstr "%%guard がありますが %%semantic_parser が指定されていません"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "一つの規則の終りに二つの動作を指定しています" msgstr "一つの規則の終りに二つの動作を指定しています"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します" msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません" msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "無効な入力: %s" msgstr "不適切な入力: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, fuzzy, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "シンボルが多すぎます (トークン非終端アイテム) -- 最大 %s" msgstr "シンボルが多すぎます (トークン + 非終端アイテム) -- 最大 %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません" msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま" "シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
"せん" "せん"
#: src/reader.c:1743 #: src/reader.c:1765
#, fuzzy, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました" msgstr "トークン %s と %s の双方が番号 %d に割り当てられました"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "先行している %s と %s で競合が生じています" msgstr "先行している %s と %s で競合が生じています"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "非結合値 %s と %s で競合が生じています" msgstr "非結合値 %s と %s で競合が生じています"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "開始シンボル %s は定義されていません" msgstr "開始シンボル %s は定義されていません"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "開始シンボル %s はトークンです" msgstr "開始シンボル %s はトークンです"
#: src/reduce.c:400 #: src/reduce.c:409
#, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr "無意味な非終端子:"
"不使用非終端子:\n"
"\n"
#: src/reduce.c:414 #: src/reduce.c:422
#, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr "利用されない終端子:"
"\n"
"\n"
"利用されない終端子:\n"
"\n"
#: src/reduce.c:425 #: src/reduce.c:433
#, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr "無意味な規則:"
"\n"
"\n"
"不使用規則:\n"
"\n"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"変数\n"
"---------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "値 前置 結合 タグ\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"規則\n"
"-----\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"解釈された規則\n"
"-----------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d 個の規則は決して還元されません\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d 個の規則は決して還元されません\n"
#: src/reduce.c:497 #: src/reduce.c:511
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d 個の不使用非終端子%.0s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d 個の無意味な非終端子"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr "および" msgstr "および"
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d 個の不使用規則%.0s" msgid_plural "%d useless rules"
msgstr[0] "%d 個の無意味な規則"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "開始シンボル %s はどの文にも由来しません" msgstr "開始シンボル %s はどの文にも由来しません"
@@ -749,7 +715,7 @@ msgstr "%s:
#: lib/getopt.c:804 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: 無効なオプション -- %c\n" msgstr "%s: 不適切なオプション -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:834 lib/getopt.c:964 #: lib/getopt.c:834 lib/getopt.c:964
@@ -770,9 +736,8 @@ msgstr "%s:
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
#, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: メモリを使い果たしました\n" msgstr "メモリを使い果たしました"
#. Get translations for open and closing quotation marks. #. Get translations for open and closing quotation marks.
#. #.
@@ -788,13 +753,13 @@ msgstr "%s:
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "" msgstr "`"
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "" msgstr "'"
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"
@@ -898,6 +863,9 @@ msgstr ""
#~ msgid "%s:%d: " #~ msgid "%s:%d: "
#~ msgstr "%s:%d: " #~ msgstr "%s:%d: "
#~ msgid "%s: internal error: %s\n"
#~ msgstr "%s: 内部エラー: %s\n"
#~ msgid "Entering set_nullable" #~ msgid "Entering set_nullable"
#~ msgstr "set_nullable に入ります" #~ msgstr "set_nullable に入ります"
@@ -920,10 +888,10 @@ msgstr ""
#~ msgstr "対応のない右ブレース (`}') です" #~ msgstr "対応のない右ブレース (`}') です"
#~ msgid "$%s is invalid" #~ msgid "$%s is invalid"
#~ msgstr "$%s は無効です" #~ msgstr "$%s は不適切です"
#~ msgid "invalid @-construct" #~ msgid "invalid @-construct"
#~ msgstr "無効な @-コンストラクトです" #~ msgstr "不適切な @-コンストラクトです"
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "邪悪な %type 宣言です" #~ msgstr "邪悪な %type 宣言です"
@@ -933,3 +901,33 @@ msgstr ""
#~ msgstr "" #~ msgstr ""
#~ "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0s" #~ "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0s"
#~ "が定義されました\n" #~ "が定義されました\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "変数\n"
#~ "---------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "値 前置 結合 タグ\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "規則\n"
#~ "-----\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "解釈された規則\n"
#~ "-----------------\n"
#~ "\n"
+296 -446
View File
File diff suppressed because it is too large Load Diff
+184 -170
View File
@@ -1,12 +1,12 @@
# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison. # ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison.
# Copyright (C) 1999 Free Software Foundation, Inc. # Copyright (C) 1999 Free Software Foundation, Inc.
# Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001. # Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001,2002.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.29\n" "Project-Id-Version: bison 1.32\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2001-09-09 13:49+04:00\n" "PO-Revision-Date: 2002-01-25 12:19+0300\n"
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n" "Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
"Language-Team: Russian <[email protected]>\n" "Language-Team: Russian <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -18,7 +18,7 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
@@ -30,79 +30,84 @@ msgstr "
msgid "fatal error: " msgid "fatal error: "
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: " msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n" "ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "×Ù×ÏÄ" msgstr "×Ù×ÏÄ"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "ÓÄ×ÉÇ" msgstr "ÓÄ×ÉÇ"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "ÏÛÉÂËÁ" msgstr "ÏÛÉÂËÁ"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, fuzzy, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgstr[0] "%d ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:396 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " É" msgstr "É"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, fuzzy, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ" msgstr[0] "%d ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, fuzzy, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ" msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ "
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "ËÏÎÆÌÉËÔÙ: " msgstr "ËÏÎÆÌÉËÔÙ: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ" msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ" msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s ÓÏÄÅÒÖÉÔ " msgstr "%s ÓÏÄÅÒÖÉÔ "
#: src/conflicts.c:488 #: src/conflicts.c:412
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgstr[0] "ÏÖÉÄÁÌÓÑ %d ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
msgstr[1] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
msgstr[2] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n" msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -111,22 +116,22 @@ msgstr ""
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
@@ -183,7 +188,6 @@ msgstr ""
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n" " -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
#: src/getargs.c:117 #: src/getargs.c:117
#, fuzzy
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
@@ -197,7 +201,7 @@ msgstr ""
" -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n" " -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n"
" -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n" " -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n"
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n" " -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n" " -o, --output=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n" " -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
"VCG-ÇÒÁÆÁ\n" "VCG-ÇÒÁÆÁ\n"
@@ -214,11 +218,13 @@ msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -229,27 +235,27 @@ msgstr ""
"ðòéçïäîïóôé\n" "ðòéçïäîïóôé\n"
"äìñ ïðòåäåìåîîïê ãåìé.\n" "äìñ ïðòåäåìåîîïê ãåìé.\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n" msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n" msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n" msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
@@ -297,101 +303,96 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ" msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr "`%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÁÒÇÕÍÅÎÔÁ %s"
#: src/lex.c:683 #: src/lex.c:694
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
#: src/main.c:134
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "`%s' requires an argument"
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n" msgstr "ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ"
#: src/output.c:979 #: src/output.c:951
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)" msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n" msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (ÐÒÁ×ÉÌÏ %d)" msgstr " (ÐÒÁ×ÉÌÏ %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tÐÒÉÎÑÔÉÅ\n" msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " îåô äåêóô÷éê\n" msgstr " îåô äåêóô÷éê\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n" msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:185 #: src/print.c:180
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "ÓÏÓÔÏÑÎÉÅ %d" msgstr "ÓÏÓÔÏÑÎÉÅ %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "çÒÁÍÍÁÔÉËÁ" msgstr "çÒÁÍÍÁÔÉËÁ"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "îÏÍÅÒ, óÔÒÏËÁ, ðÒÁ×ÉÌÏ"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "" msgstr "ÐÕÓÔÏ"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:257 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " ÎÁÌÅ×Ï:" msgstr " ÎÁÌÅ×Ï:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:" msgstr " ÎÁÐÒÁ×Ï:"
@@ -400,7 +401,7 @@ msgstr "
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)" msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
@@ -409,7 +410,7 @@ msgstr "%-4s\t
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)" msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
@@ -435,274 +436,254 @@ msgstr "
msgid "unterminated string" msgid "unterminated string"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
#, fuzzy
msgid "invalid @ value"
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
#: src/reader.c:352 src/reader.c:416
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s" msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ" msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: src/reader.c:393 #: src/reader.c:409
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ" msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s" msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "" msgstr ""
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "" msgstr ""
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s" msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>" msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
#: src/reader.c:627 #: src/reader.c:643
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: %s" msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: %s"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s" msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ" msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "ÎÅÐÁÒÎÁÑ %s" msgstr "ÎÅÐÁÒÎÁÑ %s"
#: src/reader.c:810 #: src/reader.c:826
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ" msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ" msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ" msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ" msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ" msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ" msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ" msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ" msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ" msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ" msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ" "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s" msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ" msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ" msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
#: src/reader.c:1743 #: src/reader.c:1765
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d" msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s" msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s" msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ" msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ" msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reduce.c:400 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:414 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:" msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:425 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"ðÅÒÅÍÅÎÎÙÅ\n"
"----------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"ðÒÁ×ÉÌÁ\n"
"-------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"éÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÎÙÅ ÐÒÁ×ÉÌÁ\n"
"--------------------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d ÐÒÁ×ÉÌÏ ÎÅ Ó×ÅÄÅÎÏ\n"
msgstr[1] "%d ÐÒÁ×ÉÌÁ ÎÅ Ó×ÅÄÅÎÏ\n"
msgstr[2] "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
#: src/reduce.c:497 #: src/reduce.c:511
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÊ ÎÅÔÅÒÍÉÎÁÌ"
msgstr[1] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÁ"
msgstr[2] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr " É " msgstr " É "
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s" msgid_plural "%d useless rules"
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÏÅ ÐÒÁ×ÉÌÏ"
msgstr[1] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌÁ"
msgstr[2] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ" msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
@@ -786,11 +767,11 @@ msgstr "
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "`" msgstr "`"
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "'" msgstr "'"
@@ -809,6 +790,9 @@ msgstr "'"
#~ msgid "%s derives" #~ msgid "%s derives"
#~ msgstr "%s ×Ù×ÏÄÉÔ" #~ msgstr "%s ×Ù×ÏÄÉÔ"
#~ msgid "%s: internal error: %s\n"
#~ msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
#~ msgid "Entering set_nullable" #~ msgid "Entering set_nullable"
#~ msgstr "÷ÈÏÄ × set_nullable" #~ msgstr "÷ÈÏÄ × set_nullable"
@@ -821,6 +805,36 @@ msgstr "'"
#~ msgid "multiple %%source_extension declarations" #~ msgid "multiple %%source_extension declarations"
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension" #~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "ðÅÒÅÍÅÎÎÙÅ\n"
#~ "----------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "ðÒÁ×ÉÌÁ\n"
#~ "-------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "éÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÎÙÅ ÐÒÁ×ÉÌÁ\n"
#~ "--------------------------\n"
#~ "\n"
#~ msgid "" #~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" #~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr "" #~ msgstr ""
+129 -159
View File
@@ -1,13 +1,13 @@
# Swedish messages for bison. # Swedish messages for bison.
# Copyright © 2001 Free Software Foundation, Inc. # Copyright © 2001, 2002 Free Software Foundation, Inc.
# Göran Uddeborg <[email protected]>, 2001. # Göran Uddeborg <[email protected]>, 2001, 2002.
# $Revision$ # $Revision$
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.30d\n" "Project-Id-Version: bison 1.33\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2001-11-21 22:10+0100\n" "PO-Revision-Date: 2002-02-07 22:57+0100\n"
"Last-Translator: Göran Uddeborg <[email protected]>\n" "Last-Translator: Göran Uddeborg <[email protected]>\n"
"Language-Team: Swedish <[email protected]>\n" "Language-Team: Swedish <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -20,7 +20,7 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "för många tillstånd (max %d)" msgstr "för många tillstånd (max %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Okänt systemfel" msgstr "Okänt systemfel"
@@ -32,81 +32,81 @@ msgstr "varning: "
msgid "fatal error: " msgid "fatal error: "
msgstr "ödesdigert fel: " msgstr "ödesdigert fel: "
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n" "Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "reducera" msgstr "reducera"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "skifta" msgstr "skifta"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "ett fel" msgstr "ett fel"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d skifta/reducerakonflikt" msgstr[0] "%d skifta/reducerakonflikt"
msgstr[1] "%d skifta/reducerakonflikter" msgstr[1] "%d skifta/reducerakonflikter"
#: src/conflicts.c:396 #: src/conflicts.c:309
msgid "and" msgid "and"
msgstr "och" msgstr "och"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d reducera/reducerakonflikt" msgstr[0] "%d reducera/reducerakonflikt"
msgstr[1] "%d reducera/reducerakonflikter" msgstr[1] "%d reducera/reducerakonflikter"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "Tillstånd %d innehåller " msgstr "Tillstånd %d innehåller "
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "konflikter: " msgstr "konflikter: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d skifta/reducera" msgstr " %d skifta/reducera"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reducera/reducera" msgstr " %d reducera/reducera"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s innehåller " msgstr "%s innehåller "
#: src/conflicts.c:488 #: src/conflicts.c:412
#, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "förväntade %d skifta/reducerakonflikt\n" msgstr[0] "förväntade %d skifta/reducerakonflikt\n"
msgstr[1] "förväntade %d skifta/reducerakonflikter\n" msgstr[1] "förväntade %d skifta/reducerakonflikter\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reducera med regel %d (%s)]\n" msgstr " %-4s\t[reducera med regel %d (%s)]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -115,22 +115,22 @@ msgstr ""
" $standard\treducera med regel %d (%s)\n" " $standard\treducera med regel %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treducera med regel %d (%s)\n" msgstr " %-4s\treducera med regel %d (%s)\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $standard\treducera med regel %d (%s)\n" msgstr " $standard\treducera med regel %d (%s)\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "kan inte öppna filen \"%s\"" msgstr "kan inte öppna filen \"%s\""
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "kan inte stänga fil" msgstr "kan inte stänga fil"
@@ -207,7 +207,7 @@ msgstr ""
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr ""
"Rapportera fel till <[email protected]>.\n" "Rapportera fel till <[email protected]>.\n"
"Rapportera anmärkningar på översättningen till <[email protected]>.\n" "Rapportera synpunkter på översättningen till <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
@@ -218,11 +218,13 @@ msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -231,27 +233,27 @@ msgstr ""
"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n" "finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
"SPECIELLT ÄNDAMÅL.\n" "SPECIELLT ÄNDAMÅL.\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "\"%s\" stöds inte längre" msgstr "\"%s\" stöds inte längre"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Försök med \"%s --help\" för mer information.\n" msgstr "Försök med \"%s --help\" för mer information.\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: ingen grammatikfil angiven\n" msgstr "%s: ingen grammatikfil angiven\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argument ignorerade efter \"%s\"\n" msgstr "%s: extra argument ignorerade efter \"%s\"\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "för många goto (max %d)" msgstr "för många goto (max %d)"
@@ -299,101 +301,96 @@ msgstr "oavslutat typnamn"
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "använd \"...\" för bokstavliga element med mer än ett tecken" msgstr "använd \"...\" för bokstavliga element med mer än ett tecken"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "\"%s\" stödjer inga argument: %s" msgstr "\"%s\" stödjer inga argument: %s"
#: src/lex.c:683 #: src/lex.c:694
#, c-format #, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "\"%s\" behöver ett argument" msgstr "\"%s\" behöver ett argument"
#: src/main.c:134 #: src/output.c:951
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: internt fel: %s\n"
#: src/output.c:979
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximal tabellstorlek (%d) överskriden" msgstr "maximal tabellstorlek (%d) överskriden"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " typ %d är %s\n" msgstr " typ %d är %s\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regel %d)" msgstr " (regel %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $standard\tacceptera\n" msgstr " $standard\tacceptera\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " INGA ÅTGÄRDER\n" msgstr " INGA ÅTGÄRDER\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tgå till tillstånd %d\n" msgstr " $ \tgå till tillstånd %d\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tskifta, och gå till tillstånd %d\n" msgstr " %-4s\tskifta, och gå till tillstånd %d\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tfel (ickeassociativ)\n" msgstr " %-4s\tfel (ickeassociativ)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgå till tillstånd %d\n" msgstr " %-4s\tgå till tillstånd %d\n"
#: src/print.c:185 #: src/print.c:180
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "tillstånd %d" msgstr "tillstånd %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Grammatik" msgstr "Grammatik"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "Nummer, Rad, Regel"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "regel %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "tom" msgstr "tom"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Terminaler, med regler där de förekommer" msgstr "Terminaler, med regler där de förekommer"
#: src/print.c:257 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Icketerminaler, med regler där de förekommer" msgstr "Icketerminaler, med regler där de förekommer"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " till vänster:" msgstr " till vänster:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " till höger:" msgstr " till höger:"
@@ -402,7 +399,7 @@ msgstr " till h
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tfel (ickeassociativ)" msgstr "%-4s\tfel (ickeassociativ)"
@@ -411,7 +408,7 @@ msgstr "%-4s\tfel (ickeassociativ)"
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$standard\treducera med regel %d (%s)" msgstr "$standard\treducera med regel %d (%s)"
@@ -437,278 +434,251 @@ msgstr "oavslutad str
msgid "unterminated string" msgid "unterminated string"
msgstr "oavslutad sträng" msgstr "oavslutad sträng"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
msgid "invalid @ value"
msgstr "felaktigt @-värde"
#: src/reader.c:352 src/reader.c:416
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s är felaktigt" msgstr "%s är felaktigt"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ för \"%s\" har ingen deklarerad typ" msgstr "$$ för \"%s\" har ingen deklarerad typ"
#: src/reader.c:393 #: src/reader.c:409
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%d för \"%s\" har ingen deklarerad typ" msgstr "$%d för \"%s\" har ingen deklarerad typ"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "oavslutad \"%{\"-definition" msgstr "oavslutad \"%{\"-definition"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "Förtida filslut efter %s" msgstr "Förtida filslut efter %s"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "symbolen \"%s\" används mer än en gång som en bokstavlig sträng" msgstr "symbolen \"%s\" används mer än en gång som en bokstavlig sträng"
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "symbolen \"%s\" har fått mer än en bokstavlig sträng" msgstr "symbolen \"%s\" har fått mer än en bokstavlig sträng"
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbolen %s omdefinierad" msgstr "symbolen %s omdefinierad"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "typen omdeklarerad för %s" msgstr "typen omdeklarerad för %s"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "\"%s\" är felaktig i %s" msgstr "\"%s\" är felaktig i %s"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "flera %s-deklarationer" msgstr "flera %s-deklarationer"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "felaktig %s-deklaration" msgstr "felaktig %s-deklaration"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type-deklaration har inget <typnamn>" msgstr "%type-deklaration har inget <typnamn>"
#: src/reader.c:627 #: src/reader.c:643
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "felaktig %%type-deklaration på grund av objekt: %s" msgstr "felaktig %%type-deklaration på grund av objekt: %s"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "omdefinition av precedens för %s" msgstr "omdefinition av precedens för %s"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "felaktig text (%s) - tal skulle följa efter identifierare" msgstr "felaktig text (%s) - tal skulle följa efter identifierare"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "oväntat objekt: %s" msgstr "oväntat objekt: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "ensam %s" msgstr "ensam %s"
#: src/reader.c:810 #: src/reader.c:826
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "argument till %%expect är inte ett heltal" msgstr "argument till %%expect är inte ett heltal"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "oväntat objekt %s, förväntade en identifierare" msgstr "oväntat objekt %s, förväntade en identifierare"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "förväntade strängkonstant istället för %s" msgstr "förväntade strängkonstant istället för %s"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "okänt: %s" msgstr "okänt: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "ingen ingrammatik" msgstr "ingen ingrammatik"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "okänt tecken: %s" msgstr "okänt tecken: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "oavlutad %guard-sats" msgstr "oavlutad %guard-sats"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "felskriven regel: första symbolen följs inte av ett kolon" msgstr "felskriven regel: första symbolen följs inte av ett kolon"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "grammatiken startar med ett vertikalt streck" msgstr "grammatiken startar med ett vertikalt streck"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "regel given för %s, som är ett element" msgstr "regel given för %s, som är ett element"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "två @prec i rad" msgstr "två @prec i rad"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard finns men %%semantic_parser är inte angiven" msgstr "%%guard finns men %%semantic_parser är inte angiven"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "två åtgärder vid slutet av en regel" msgstr "två åtgärder vid slutet av en regel"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd" msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "tom regel för typad icketerminal, och ingen åtgärd" msgstr "tom regel för typad icketerminal, och ingen åtgärd"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "felaktig indata: %s" msgstr "felaktig indata: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "för många symboler (element plus icketerminaler); max %d" msgstr "för många symboler (element plus icketerminaler); max %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "inga regler i ingrammatiken" msgstr "inga regler i ingrammatiken"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"symbolen %s används, men är inte definierad som ett element och har inga " "symbolen %s används, men är inte definierad som ett element och har inga "
"regler" "regler"
#: src/reader.c:1743 #: src/reader.c:1765
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "elementen %s och %s har båda fått nummer %d" msgstr "elementen %s och %s har båda fått nummer %d"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "motstridiga precedenser mellan %s och %s" msgstr "motstridiga precedenser mellan %s och %s"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "motstridiga assoc-värden mellan %s och %s" msgstr "motstridiga assoc-värden mellan %s och %s"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "startsymbolen %s är odefinierad" msgstr "startsymbolen %s är odefinierad"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "startsymbolen %s är ett element" msgstr "startsymbolen %s är ett element"
#: src/reduce.c:400 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Oanvändbara icketerminaler:" msgstr "Oanvändbara icketerminaler:"
#: src/reduce.c:414 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Terminaler som inte används:" msgstr "Terminaler som inte används:"
#: src/reduce.c:425 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Oanvändbara regler:" msgstr "Oanvändbara regler:"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"Variabler\n"
"---------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "Värde Sprec Sassoc Tagg\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Regler\n"
"------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Tolkade regler\n"
"--------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d regler reduceras aldrig\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d regel reduceras aldrig\n"
msgstr[1] "%d regler reduceras aldrig\n"
# Jag har anmält att det är fel att anta att "s" är en universell pluraländelse. #: src/reduce.c:511
# Jag föreslog också att de använder ngettext istället.
# "Vad göras skall är redan gjort."
#: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d oanvändbara icketerminaler%.0s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d oanvändbar icketerminal"
msgstr[1] "%d oanvändbara icketerminaler"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr " och " msgstr " och "
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d oanvändbara regler%.0s" msgid_plural "%d useless rules"
msgstr[0] "%d oanvändbar regel"
msgstr[1] "%d oanvändbara regler"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbolen %s genererar inga meningar" msgstr "Startsymbolen %s genererar inga meningar"
@@ -795,10 +765,10 @@ msgstr "minnet slut"
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "\"" msgstr "\""
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "\"" msgstr "\""
+167 -215
View File
@@ -1,17 +1,18 @@
# Turkish translations for GNU Bison messages. # Turkish translations for GNU Bison messages.
# Copyright (C) 2001 Free Software Foundation, Inc. # Copyright (C) 2001 Free Software Foundation, Inc.
# Altug Bayram <[email protected]>, 2001. # Altuð Bayram <[email protected]>, 2001.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.30\n" "Project-Id-Version: bison 1.33\n"
"POT-Creation-Date: 2001-11-26 16:23+0100\n" "POT-Creation-Date: 2002-02-28 16:14+0100\n"
"PO-Revision-Date: 2001-11-02 14:49GMT\n" "PO-Revision-Date: 2002-02-08 18:51+0200\n"
"Last-Translator: Altug Bayram <[email protected]>\n" "Last-Translator: Altuð Bayram <[email protected]>\n"
"Language-Team: Turkish <[email protected]>\n" "Language-Team: Turkish <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Type: text/plain; charset=ISO-8859-9\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: KBabel 0.9.5\n" "X-Generator: KBabel 0.9.5\n"
#: src/LR0.c:189 #: src/LR0.c:189
@@ -19,7 +20,7 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "çok fazla durum (en fazla %d)" msgstr "çok fazla durum (en fazla %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:99
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Bilinmeyen sistem hatasý" msgstr "Bilinmeyen sistem hatasý"
@@ -31,80 +32,82 @@ msgstr "uyar
msgid "fatal error: " msgid "fatal error: "
msgstr "ölümcül hata:" msgstr "ölümcül hata:"
#: src/conflicts.c:45 #: src/conflicts.c:44
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s " "%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s olarak\n"
"olarakçözümlendi.\n" "çözümlendi.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "indirgeme" msgstr "indirgeme"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "öteleme" msgstr "öteleme"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "bir hata" msgstr "bir hata"
#: src/conflicts.c:389 #: src/conflicts.c:302
#, fuzzy, c-format #, c-format
msgid "%d shift/reduce conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts" msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d öteleme/indirgeme çeliþkisi" msgstr[0] "%d öteleme/indirgeme çeliþkisi"
msgstr[1] "%d öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:396 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " ve" msgstr "ve"
#: src/conflicts.c:402 #: src/conflicts.c:315
#, fuzzy, c-format #, c-format
msgid "%d reduce/reduce conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts" msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d indirgeme/indirgeme çeliþkisi" msgstr[0] "%d indirgeme/indirgeme çeliþkisi"
msgstr[1] "%d indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:426 #: src/conflicts.c:340
#, fuzzy, c-format #, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "%d durumu içerir" msgstr "%d durumu içerir"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:470 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "çeliþkiler: " msgstr "çeliþkiler: "
#: src/conflicts.c:472 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d öteleme/indirgeme" msgstr " %d öteleme/indirgeme"
#: src/conflicts.c:476 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d indirgeme/indirgeme" msgstr " %d indirgeme/indirgeme"
#: src/conflicts.c:481 src/reduce.c:493 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s içerir " msgstr "%s içerir"
#: src/conflicts.c:488 #: src/conflicts.c:412
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict\n" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d öteleme/indirgeme çeliþkisi" msgstr[0] "beklenen %d öteleme/indirgeme çeliþkisi\n"
msgstr[1] "beklenen %d öteleme/indirgeme çeliþkisi\n"
#: src/conflicts.c:575 src/conflicts.c:696 #: src/conflicts.c:463 src/conflicts.c:540
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n" msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n"
#: src/conflicts.c:587 src/print.c:156 #: src/conflicts.c:467 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -113,22 +116,22 @@ msgstr ""
" $default\tindirgeme kural %d (%s)'i kullanýyor\n" " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
"\n" "\n"
#: src/conflicts.c:676 src/conflicts.c:690 #: src/conflicts.c:521 src/conflicts.c:534
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n" msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/conflicts.c:716 #: src/conflicts.c:550
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n" msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/files.c:143 #: src/files.c:150
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "`%s' dosyasý açýlamadý" msgstr "`%s' dosyasý açýlamadý"
#: src/files.c:162 #: src/files.c:169
msgid "cannot close file" msgid "cannot close file"
msgstr "dosya kapatýlamýyor" msgstr "dosya kapatýlamýyor"
@@ -148,10 +151,10 @@ msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
"Eðer bir uzun seçenek bir baðýmsýz deðiþkeni zorunlu gibi gösterilirse odenk " "Eðer bir uzun seçenek bir argümaný gerektirirse, bu gereklilik, denk olan "
"kýsa\n" "kýsa\n"
"seçenek için dahi zorunludur. Seçimli baðýmsýz deðiþkenler için " "seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de "
"benzerþekildedir.\n" "geçerlidir.\n"
#: src/getargs.c:98 #: src/getargs.c:98
msgid "" msgid ""
@@ -160,6 +163,7 @@ msgid ""
" -V, --version output version information and exit\n" " -V, --version output version information and exit\n"
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
"Çalýþma kipleri:\n"
" -h, --help bu yardýmý göster ve çýk\n" " -h, --help bu yardýmý göster ve çýk\n"
" -V, --version sürüm bilgisini ver ve çýk\n" " -V, --version sürüm bilgisini ver ve çýk\n"
" -y, --yacc POSIX yacc öykünmesi\n" " -y, --yacc POSIX yacc öykünmesi\n"
@@ -185,7 +189,6 @@ msgstr ""
" -k, --token-table andaç isimlerinin bir tablosunu içer\n" " -k, --token-table andaç isimlerinin bir tablosunu içer\n"
#: src/getargs.c:117 #: src/getargs.c:117
#, fuzzy
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
@@ -198,13 +201,15 @@ msgstr ""
"Çýktý:\n" "Çýktý:\n"
" -d, --defines bir baþlýk dosyasý da üretir\n" " -d, --defines bir baþlýk dosyasý da üretir\n"
" -v, --verbose otomatýn bir açýklamasýný da üretir\n" " -v, --verbose otomatýn bir açýklamasýný da üretir\n"
" -b, --file-prefix=ÖNEK çýktý dosyalarý için bir ÖNEK belirtir\n" " -b, --file-prefix=PREFIX çýktý dosyalarý için bir ÖNEK belirtir\n"
" -o, --output-file=DOSYA çýktýyý DOSYAYA býrakýr\n" " -o, --output=FILE çýktýyý DOSYAYA býrakýr\n"
" -g, --graph otomatýn bir VCG grafik açýklamasýný da üretir\n" " -g, --graph otomatýn bir VCG grafik açýklamasýný da üretir\n"
#: src/getargs.c:127 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "Hatalarý <[email protected]>'a bildir.\n" msgstr ""
"Hatalarý <[email protected]>'a,\n"
"çeviri hatalarýný <[email protected]>'e bildir.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
@@ -215,12 +220,13 @@ msgstr "bison (GNU Bison) %s"
#: src/getargs.c:146 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Kopyahakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, " "Kopyahakký 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
"Inc.\n" "Free Software Foundation, Inc.\n"
#: src/getargs.c:150 #: src/getargs.c:151
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -229,27 +235,27 @@ msgstr ""
"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\n" "Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\n"
"UYGUNLUÐU için bile garanti verilmez.\n" "UYGUNLUÐU için bile garanti verilmez.\n"
#: src/getargs.c:215 src/lex.c:694 #: src/getargs.c:230 src/lex.c:705
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' artýk desteklenmeyecek" msgstr "`%s' artýk desteklenmeyecek"
#: src/getargs.c:239 #: src/getargs.c:254
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Daha fazla bilgi için `%s --help' yazýn.\n" msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
#: src/getargs.c:246 #: src/getargs.c:261
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: verilen gramer dosyasý yok\n" msgstr "%s: gramer dosyasý verilmemiþ\n"
#: src/getargs.c:250 #: src/getargs.c:265
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' den sonraki ek baðýmsýz deðiþkenler yoksayýldý\n" msgstr "%s: '%s' den sonraki argümanlar yoksayýldý\n"
#: src/lalr.c:293 #: src/lalr.c:256
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "gotos çok fazla (en fazla %d)" msgstr "gotos çok fazla (en fazla %d)"
@@ -287,7 +293,7 @@ msgstr "bilinmeyen ka
#: src/lex.c:342 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "dosyanýn sonunda sonlandýrýlmamýþ tip adý" msgstr "dosya sonunda sonlandýrýlmamýþ tip adý"
#: src/lex.c:345 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
@@ -295,103 +301,98 @@ msgstr "sonland
#: src/lex.c:438 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "cok-karakterli yazýn andaçlarý için \"...\" kullan" msgstr "çok-karakterli yazýn andaçlarý için \"...\" kullan"
#: src/lex.c:667 #: src/lex.c:678
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr "`%s' argüman %s'i desteklemez"
#: src/lex.c:683 #: src/lex.c:694
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
#: src/main.c:134
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "`%s' requires an argument"
msgstr "%s: iç hata: %s\n" msgstr "`%s' bir argüman gerektirir"
#: src/output.c:979 #: src/output.c:951
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "en büyük tablo uzunluðu (%d) aþýldý" msgstr "en büyük tablo uzunluðu (%d) aþýldý"
#: src/print.c:38 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " tip %d %s'dir\n" msgstr " tip %d %s'dir\n"
#: src/print.c:78 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (kural %d)" msgstr " (kural %d)"
#: src/print.c:98 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tonayla\n" msgstr " $default\tonayla\n"
#: src/print.c:100 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " EYLEMLER YOK\n" msgstr " EYLEM YOK\n"
#: src/print.c:120 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tdurum %d'ye git\n" msgstr " $ \tdurum %d'ye git\n"
#: src/print.c:123 #: src/print.c:127
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tötele, ve durum %d'ye git\n" msgstr " %-4s\tötele, ve durum %d'ye git\n"
#: src/print.c:144 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\thata (birleþmeli deðil)\n" msgstr " %-4s\thata (birleþmeli deðil)\n"
#: src/print.c:173 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tdurum %d'ye git\n" msgstr " %-4s\tdurum %d'ye git\n"
#: src/print.c:185 #: src/print.c:180
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "durum %d" msgstr "durum %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:215 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Gramer" msgstr "Gramer"
#: src/print.c:216 #: src/print.c:212
msgid "Number, Line, Rule" msgid "Number, Line, Rule"
msgstr "" msgstr "Sayý, Satýr, Kural"
#: src/print.c:221 #: src/print.c:217
#, fuzzy, c-format #, c-format
msgid " %3d %3d %s ->" msgid " %3d %3d %s ->"
msgstr "kural %-4d %s ->" msgstr " %3d %3d %s ->"
#: src/print.c:228 #: src/print.c:224
msgid "empty" msgid "empty"
msgstr "boþ" msgstr "boþ"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:233 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde" msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:257 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde" msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:283 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " solda:" msgstr " solda:"
#: src/print.c:298 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " saðda:" msgstr " saðda:"
@@ -400,7 +401,7 @@ msgstr " sa
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:165 #: src/print_graph.c:146
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\thata (birleþmeli deðil)" msgstr "%-4s\thata (birleþmeli deðil)"
@@ -409,7 +410,7 @@ msgstr "%-4s\thata (birle
#. if (obstack_object_size (node_obstack) > node_output_size) #. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n"); #. obstack_sgrow (node_obstack, "\n");
#. #.
#: src/print_graph.c:180 #: src/print_graph.c:161
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor" msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor"
@@ -435,276 +436,251 @@ msgstr "dosyan
msgid "unterminated string" msgid "unterminated string"
msgstr "sonlandýrýlmamýþ dizge" msgstr "sonlandýrýlmamýþ dizge"
#: src/reader.c:336 src/reader.c:400 #: src/reader.c:339
msgid "invalid @ value"
msgstr "geçersiz @ deðeri"
#: src/reader.c:352 src/reader.c:416
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s geçersizdir" msgstr "%s geçersizdir"
#: src/reader.c:376 #: src/reader.c:392
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "`%s''in $$'ý bildirilmiþ tip deðil" msgstr "`%s''in $$'ý bildirilmiþ tip deðil"
#: src/reader.c:393 #: src/reader.c:409
#, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "`%d''in $%s'i bildirilmiþ tip deðil" msgstr "`%2$s''in %1$d'i bildirilmiþ tip deðil"
#: src/reader.c:447 #: src/reader.c:463
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ" msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657 #: src/reader.c:508 src/reader.c:623 src/reader.c:673
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "%s'den sonra erken EOF" msgstr "%s'den sonra erken EOF"
#: src/reader.c:509 #: src/reader.c:525
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla kullanýldý" msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla kullanýldý"
#: src/reader.c:512 #: src/reader.c:528
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla verilmiþ" msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla verilmiþ"
#: src/reader.c:533 src/reader.c:676 #: src/reader.c:549 src/reader.c:692
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "%s simgesi yeniden tanýmlandý" msgstr "%s simgesi yeniden tanýmlandý"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292 #: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1314
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s için yeniden tip bildirimi" msgstr "%s için yeniden tip bildirimi"
#: src/reader.c:552 #: src/reader.c:568
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' %s içinde geçersizdir" msgstr "`%s' %s içinde geçersizdir"
#: src/reader.c:570 src/reader.c:735 #: src/reader.c:586 src/reader.c:751
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri" msgstr "çoklu %s bildirimleri"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270 #: src/reader.c:588 src/reader.c:930 src/reader.c:955 src/reader.c:1292
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "geçersiz %s bildirimi" msgstr "geçersiz %s bildirimi"
#: src/reader.c:592 #: src/reader.c:608
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type bildirimi <tipadý>'na sahip deðil" msgstr "%type bildirimi <tipadý>'na sahip deðil"
#: src/reader.c:627 #: src/reader.c:643
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "geçersiz %%type bildirimine neden olan öðe: `%s'" msgstr "geçersiz %%type bildirimine neden olan öðe: `%s'"
#: src/reader.c:672 #: src/reader.c:688
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "%s'in önceliði tekrar tanýmlandý" msgstr "%s'in önceliði tekrar tanýmlandý"
#: src/reader.c:695 #: src/reader.c:711
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "geçersiz metin (%s) - sayý tanýtýcýdan sonra olmalýdýr" msgstr "geçersiz metin (%s) - sayý tanýtýcýdan sonra olmalýdýr"
#: src/reader.c:705 #: src/reader.c:721
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "beklenmeyen öðe: %s" msgstr "beklenmeyen öðe: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181 #: src/reader.c:794 src/reader.c:1126 src/reader.c:1203
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "eþlenemeyen %s" msgstr "eþlenemeyen %s"
#: src/reader.c:810 #: src/reader.c:826
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "%%expect'in baðýmsýz deðiþkeni bir tamsayý deðildir" msgstr "%%expect'in argümaný bir tamsayý deðildir"
#: src/reader.c:856 #: src/reader.c:872
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr" msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr"
#: src/reader.c:878 #: src/reader.c:894
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "%s'in yerine beklenen dizgi sabitidir" msgstr "%s'in yerine sabit dizge beklendi"
#: src/reader.c:1026 #: src/reader.c:1042
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tanýnmayan: %s" msgstr "tanýnmayan: %s"
#: src/reader.c:1031 #: src/reader.c:1047
msgid "no input grammar" msgid "no input grammar"
msgstr "girdi grameri yok" msgstr "girdi grameri yok"
#: src/reader.c:1036 #: src/reader.c:1052
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "bilinmeyen karakter: %s" msgstr "bilinmeyen karakter: %s"
#: src/reader.c:1204 #: src/reader.c:1226
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "sonlandýrýlmamýþ %guard yantümcesi" msgstr "sonlandýrýlmamýþ %guard yantümcesi"
#: src/reader.c:1357 #: src/reader.c:1379
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "kötü-biçimli kural: baþlangýç simgesini takip eden kolon(:) yok" msgstr "kötü-biçemli kural: baþlangýç simgesini takip eden \":\" yok"
#: src/reader.c:1364 #: src/reader.c:1386
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "gramer düþey çubuk ile baþlýyor" msgstr "gramer düþey çubuk ile baþlýyor"
#: src/reader.c:1392 #: src/reader.c:1414
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "bir andaç olan %s için verilen kural" msgstr "bir andaç olan %s için verilen kural"
#: src/reader.c:1492 #: src/reader.c:1514
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "bir satýrda iki @prec" msgstr "bir satýrda iki @prec"
#: src/reader.c:1500 #: src/reader.c:1522
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ" msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ"
#: src/reader.c:1509 #: src/reader.c:1531
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "bir kuralýn sonunda iki eylem" msgstr "bir kuralýn sonunda iki eylem"
#: src/reader.c:1523 #: src/reader.c:1545
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý" msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
#: src/reader.c:1529 #: src/reader.c:1551
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ" "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ"
#: src/reader.c:1573 #: src/reader.c:1595
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "geçersiz girdi: %s" msgstr "geçersiz girdi: %s"
#: src/reader.c:1581 #: src/reader.c:1603
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d" msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
#: src/reader.c:1584 #: src/reader.c:1606
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "girdi grameri içinde kurallar yok" msgstr "girdi grameri içinde kurallar yok"
#: src/reader.c:1608 #: src/reader.c:1630
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"simge %s kullanýldý, fakat bir andaç gibi tanýmlanmadý ve kurallara " "simge %s kullanýldý, fakat bir andaç olarak tanýmlanmadý ve kurallarý yok"
"sahipdeðil"
#: src/reader.c:1743 #: src/reader.c:1765
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý" msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý"
#: src/reader.c:1796 #: src/reader.c:1818
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "%s ve %s için çeliþen öncelikler" msgstr "%s ve %s için çeliþen öncelikler"
#: src/reader.c:1808 #: src/reader.c:1830
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "%s ve %s için çeliþen birleþmeli deðerler" msgstr "%s ve %s için çeliþen birleþmeli deðerler"
#: src/reader.c:1847 #: src/reader.c:1869
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "baþlangýç simgesi %s tanýmlanmadý" msgstr "baþlangýç simgesi %s tanýmlanmadý"
#: src/reader.c:1849 #: src/reader.c:1871
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "baþlangýç simgesi %s bir andaçtýr" msgstr "baþlangýç simgesi %s bir andaçtýr"
#: src/reduce.c:400 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz deðiþken simgeler:"
#: src/reduce.c:414 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Kullanýlmayan sabit simgeler:" msgstr "Kullanýlmayan sabit simgeler:"
#: src/reduce.c:425 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz kurallar:"
#: src/reduce.c:451 #: src/reduce.c:503
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"Deðiþkenler\n"
"-----------\n"
"\n"
#: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n"
msgstr "Deðer Söncel Sbirleþ Etiket\n"
#: src/reduce.c:456
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Kurallar\n"
"--------\n"
"\n"
#: src/reduce.c:470
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Kurallar yorumlandý\n"
"-------------------\n"
"\n"
#: src/reduce.c:491
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rule never reduced\n"
msgstr "%d kural asla indirgenmedi\n" msgid_plural "%d rules never reduced\n"
msgstr[0] "%d kural asla indirgenmedi\n"
msgstr[1] "%d kural asla indirgenmedi\n"
#: src/reduce.c:497 #: src/reduce.c:511
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal"
msgstr "%d yararsýz deðiþken simge%s" msgid_plural "%d useless nonterminals"
msgstr[0] "%d yararsýz deðiþken simge"
msgstr[1] "%d yararsýz deðiþken simge"
#: src/reduce.c:502 #: src/reduce.c:517
msgid " and " msgid " and "
msgstr " ve " msgstr " ve"
#: src/reduce.c:506 #: src/reduce.c:520
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d yararsýz kural%s" msgid_plural "%d useless rules"
msgstr[0] "%d yararsýz kural"
msgstr[1] "%d yararsýz kural"
#: src/reduce.c:536 #: src/reduce.c:551
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez" msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
@@ -788,34 +764,10 @@ msgstr "bellek t
#. MARK). A British English Unicode locale should instead #. MARK). A British English Unicode locale should instead
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and #. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:268 #: lib/quotearg.c:274
msgid "`" msgid "`"
msgstr "`" msgstr "`"
#: lib/quotearg.c:269 #: lib/quotearg.c:275
msgid "'" msgid "'"
msgstr "'" msgstr "'"
#~ msgid " 1 shift/reduce conflict"
#~ msgstr " 1 öteleme/indirgeme çeliþkisi"
#~ msgid " 1 reduce/reduce conflict"
#~ msgstr " 1 indirgeme/indirgeme çeliþkisi"
#~ msgid "%s contains"
#~ msgstr "%s içerir"
#~ msgid "DERIVES"
#~ msgstr "TÜRETÝLENLER"
#~ msgid "%s derives"
#~ msgstr "%s türetildi"
#~ msgid "Entering set_nullable"
#~ msgstr "set_nullable'a girildi"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "indirgenen %s tanýmlanan %d sabit simge%s, %d deðiþken simge%s,ve %d "
#~ "üretilen%s.\n"
+138 -145
View File
@@ -30,7 +30,7 @@
#include "complain.h" #include "complain.h"
#include "closure.h" #include "closure.h"
#include "LR0.h" #include "LR0.h"
#include "reduce.h"
int nstates; int nstates;
int final_state; int final_state;
@@ -63,11 +63,13 @@ static void
allocate_itemsets (void) allocate_itemsets (void)
{ {
int i; int i;
int count;
short *symbol_count = NULL;
count = 0; /* Count the number of occurrences of all the symbols in RITEMS.
symbol_count = XCALLOC (short, nsyms); Note that useless productions (hence useless nonterminals) are
browsed too, hence we need to allocate room for _all_ the
symbols. */
int count = 0;
short *symbol_count = XCALLOC (short, nsyms + nuseless_nonterminals);
for (i = 0; ritem[i]; ++i) for (i = 0; ritem[i]; ++i)
if (ritem[i] > 0) if (ritem[i] > 0)
@@ -93,7 +95,7 @@ allocate_itemsets (void)
count += symbol_count[i]; count += symbol_count[i];
} }
shift_symbol = symbol_count; free (symbol_count);
kernel_size = XCALLOC (int, nsyms); kernel_size = XCALLOC (int, nsyms);
} }
@@ -112,13 +114,13 @@ allocate_storage (void)
static void static void
free_storage (void) free_storage (void)
{ {
XFREE (shift_symbol); free (shift_symbol);
XFREE (redset); free (redset);
XFREE (shiftset); free (shiftset);
XFREE (kernel_base); free (kernel_base);
XFREE (kernel_size); free (kernel_size);
XFREE (kernel_items); XFREE (kernel_items);
XFREE (state_table); free (state_table);
} }
@@ -139,7 +141,6 @@ static void
new_itemsets (void) new_itemsets (void)
{ {
int i; int i;
int shiftcount;
if (trace_flag) if (trace_flag)
fprintf (stderr, "Entering new_itemsets, state = %d\n", fprintf (stderr, "Entering new_itemsets, state = %d\n",
@@ -148,25 +149,24 @@ new_itemsets (void)
for (i = 0; i < nsyms; i++) for (i = 0; i < nsyms; i++)
kernel_size[i] = 0; kernel_size[i] = 0;
shiftcount = 0; shift_symbol = XCALLOC (short, nsyms);
nshifts = 0;
for (i = 0; i < itemsetsize; ++i) for (i = 0; i < nitemset; ++i)
{ {
int symbol = ritem[itemset[i]]; int symbol = ritem[itemset[i]];
if (symbol > 0) if (symbol > 0)
{ {
if (!kernel_size[symbol]) if (!kernel_size[symbol])
{ {
shift_symbol[shiftcount] = symbol; shift_symbol[nshifts] = symbol;
shiftcount++; nshifts++;
} }
kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1; kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1;
kernel_size[symbol]++; kernel_size[symbol]++;
} }
} }
nshifts = shiftcount;
} }
@@ -311,13 +311,16 @@ new_states (void)
} }
/*------------------------------------------------------------.
| Save the NSHIFTS of SHIFTSET into the current linked list. |
`------------------------------------------------------------*/
static void static void
save_shifts (void) save_shifts (void)
{ {
shifts *p = SHIFTS_ALLOC (nshifts); shifts *p = shifts_new (nshifts);
p->number = this_state->number; p->number = this_state->number;
p->nshifts = nshifts;
shortcpy (p->shifts, shiftset, nshifts); shortcpy (p->shifts, shiftset, nshifts);
@@ -348,9 +351,8 @@ insert_start_shift (void)
last_state = statep; last_state = statep;
/* Make a shift from this state to (what will be) the final state. */ /* Make a shift from this state to (what will be) the final state. */
sp = SHIFTS_ALLOC (1); sp = shifts_new (1);
sp->number = nstates++; sp->number = nstates++;
sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
last_shift->next = sp; last_shift->next = sp;
@@ -369,131 +371,18 @@ insert_start_shift (void)
static void static void
augment_automaton (void) augment_automaton (void)
{ {
int i;
int k;
core *statep; core *statep;
shifts *sp; shifts *sp;
shifts *sp2;
shifts *sp1 = NULL; shifts *sp1 = NULL;
sp = first_shift; sp = first_shift;
if (sp) if (!sp->nshifts)
{ {
if (sp->number == 0) /* There are no shifts for any state. Make one shift, from the
{ initial state to the next-to-final state. */
k = sp->nshifts;
statep = first_state->next;
/* The states reached by shifts from first_state are numbered 1...K. sp = shifts_new (1);
Look for one reached by start_symbol. */
while (statep->accessing_symbol < start_symbol
&& statep->number < k)
statep = statep->next;
if (statep->accessing_symbol == start_symbol)
{
/* We already have a next-to-final state.
Make sure it has a shift to what will be the final state. */
k = statep->number;
while (sp && sp->number < k)
{
sp1 = sp;
sp = sp->next;
}
if (sp && sp->number == k)
{
sp2 = SHIFTS_ALLOC (sp->nshifts + 1);
sp2->number = k;
sp2->nshifts = sp->nshifts + 1;
sp2->shifts[0] = nstates;
for (i = sp->nshifts; i > 0; i--)
sp2->shifts[i] = sp->shifts[i - 1];
/* Patch sp2 into the chain of shifts in place of sp,
following sp1. */
sp2->next = sp->next;
sp1->next = sp2;
if (sp == last_shift)
last_shift = sp2;
XFREE (sp);
}
else
{
sp2 = SHIFTS_ALLOC (1);
sp2->number = k;
sp2->nshifts = 1;
sp2->shifts[0] = nstates;
/* Patch sp2 into the chain of shifts between sp1 and sp. */
sp2->next = sp;
sp1->next = sp2;
if (sp == 0)
last_shift = sp2;
}
}
else
{
/* There is no next-to-final state as yet. */
/* Add one more shift in first_shift,
going to the next-to-final state (yet to be made). */
sp = first_shift;
sp2 = SHIFTS_ALLOC (sp->nshifts + 1);
sp2->nshifts = sp->nshifts + 1;
/* Stick this shift into the vector at the proper place. */
statep = first_state->next;
for (k = 0, i = 0; i < sp->nshifts; k++, i++)
{
if (statep->accessing_symbol > start_symbol && i == k)
sp2->shifts[k++] = nstates;
sp2->shifts[k] = sp->shifts[i];
statep = statep->next;
}
if (i == k)
sp2->shifts[k++] = nstates;
/* Patch sp2 into the chain of shifts
in place of sp, at the beginning. */
sp2->next = sp->next;
first_shift = sp2;
if (last_shift == sp)
last_shift = sp2;
XFREE (sp);
/* Create the next-to-final state, with shift to
what will be the final state. */
insert_start_shift ();
}
}
else
{
/* The initial state didn't even have any shifts.
Give it one shift, to the next-to-final state. */
sp = SHIFTS_ALLOC (1);
sp->nshifts = 1;
sp->shifts[0] = nstates;
/* Patch sp into the chain of shifts at the beginning. */
sp->next = first_shift;
first_shift = sp;
/* Create the next-to-final state, with shift to
what will be the final state. */
insert_start_shift ();
}
}
else
{
/* There are no shifts for any state.
Make one shift, from the initial state to the next-to-final state. */
sp = SHIFTS_ALLOC (1);
sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
/* Initialize the chain of shifts with sp. */ /* Initialize the chain of shifts with sp. */
@@ -504,6 +393,109 @@ augment_automaton (void)
what will be the final state. */ what will be the final state. */
insert_start_shift (); insert_start_shift ();
} }
else if (sp->number == 0)
{
statep = first_state->next;
/* The states reached by shifts from FIRST_STATE are numbered
1..(SP->NSHIFTS). Look for one reached by START_SYMBOL. */
while (statep->accessing_symbol < start_symbol
&& statep->number < sp->nshifts)
statep = statep->next;
if (statep->accessing_symbol == start_symbol)
{
/* We already have a next-to-final state.
Make sure it has a shift to what will be the final state. */
while (sp && sp->number < statep->number)
{
sp1 = sp;
sp = sp->next;
}
if (sp && sp->number == statep->number)
{
int i;
shifts *sp2 = shifts_new (sp->nshifts + 1);
sp2->number = statep->number;
sp2->shifts[0] = nstates;
for (i = sp->nshifts; i > 0; i--)
sp2->shifts[i] = sp->shifts[i - 1];
/* Patch sp2 into the chain of shifts in place of sp,
following sp1. */
sp2->next = sp->next;
sp1->next = sp2;
if (sp == last_shift)
last_shift = sp2;
XFREE (sp);
}
else
{
shifts *sp2 = shifts_new (1);
sp2->number = statep->number;
sp2->shifts[0] = nstates;
/* Patch sp2 into the chain of shifts between sp1 and sp. */
sp2->next = sp;
sp1->next = sp2;
if (sp == 0)
last_shift = sp2;
}
}
else
{
int i, k;
shifts *sp2;
/* There is no next-to-final state as yet. */
/* Add one more shift in first_shift,
going to the next-to-final state (yet to be made). */
sp = first_shift;
sp2 = shifts_new (sp->nshifts + 1);
/* Stick this shift into the vector at the proper place. */
statep = first_state->next;
for (k = 0, i = 0; i < sp->nshifts; k++, i++)
{
if (statep->accessing_symbol > start_symbol && i == k)
sp2->shifts[k++] = nstates;
sp2->shifts[k] = sp->shifts[i];
statep = statep->next;
}
if (i == k)
sp2->shifts[k++] = nstates;
/* Patch sp2 into the chain of shifts
in place of sp, at the beginning. */
sp2->next = sp->next;
first_shift = sp2;
if (last_shift == sp)
last_shift = sp2;
XFREE (sp);
/* Create the next-to-final state, with shift to
what will be the final state. */
insert_start_shift ();
}
}
else
{
/* The initial state didn't even have any shifts.
Give it one shift, to the next-to-final state. */
sp = shifts_new (1);
sp->shifts[0] = nstates;
/* Patch sp into the chain of shifts at the beginning. */
sp->next = first_shift;
first_shift = sp;
/* Create the next-to-final state, with shift to
what will be the final state. */
insert_start_shift ();
}
/* Make the final state--the one that follows a shift from the /* Make the final state--the one that follows a shift from the
next-to-final state. next-to-final state.
@@ -514,9 +506,8 @@ augment_automaton (void)
last_state = statep; last_state = statep;
/* Make the shift from the final state to the termination state. */ /* Make the shift from the final state to the termination state. */
sp = SHIFTS_ALLOC (1); sp = shifts_new (1);
sp->number = nstates++; sp->number = nstates++;
sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
last_shift->next = sp; last_shift->next = sp;
last_shift = sp; last_shift = sp;
@@ -548,7 +539,7 @@ save_reductions (void)
/* Find and count the active items that represent ends of rules. */ /* Find and count the active items that represent ends of rules. */
count = 0; count = 0;
for (i = 0; i < itemsetsize; ++i) for (i = 0; i < nitemset; ++i)
{ {
int item = ritem[itemset[i]]; int item = ritem[itemset[i]];
if (item < 0) if (item < 0)
@@ -589,6 +580,9 @@ generate_states (void)
while (this_state) while (this_state)
{ {
if (trace_flag)
fprintf (stderr, "Processing state %d (reached by %s)\n",
this_state->number, tags[this_state->accessing_symbol]);
/* Set up ruleset and itemset for the transitions out of this /* Set up ruleset and itemset for the transitions out of this
state. ruleset gets a 1 bit for each rule that could reduce state. ruleset gets a 1 bit for each rule that could reduce
now. itemset gets a vector of all the items that could be now. itemset gets a vector of all the items that could be
@@ -603,8 +597,7 @@ generate_states (void)
/* create the shifts structures for the shifts to those states, /* create the shifts structures for the shifts to those states,
now that the state numbers transitioning to are known */ now that the state numbers transitioning to are known */
if (nshifts > 0) save_shifts ();
save_shifts ();
/* states are queued when they are created; process them all */ /* states are queued when they are created; process them all */
this_state = this_state->next; this_state = this_state->next;
+31 -6
View File
@@ -1,19 +1,45 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*- ## Copyright 2001, 2002 Free Software Foundation, Inc.
AUTOMAKE_OPTIONS = 1.4 ../lib/ansi2knr
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
## 02111-1307 USA
AUTOMAKE_OPTIONS = ../lib/ansi2knr
DEFS = @DEFS@ \ DEFS = @DEFS@ \
-DBISON_SIMPLE=\"$(pkgdatadir)/bison.simple\" \ -DBISON_SIMPLE=\"$(pkgdatadir)/bison.simple\" \
-DBISON_HAIRY=\"$(pkgdatadir)/bison.hairy\" \ -DBISON_HAIRY=\"$(pkgdatadir)/bison.hairy\" \
-DLOCALEDIR=\"$(datadir)/locale\" -DLOCALEDIR=\"$(datadir)/locale\"
INCLUDES = -I../intl -I$(top_srcdir)/lib -I.. CFLAGS = @CFLAGS@ $(WARNING_CFLAGS) $(WERROR_CFLAGS)
LDADD = @INTLLIBS@ ../lib/libbison.a
# libintl.h in is build/intl, intl/libgettext.h in src/,
# config.h in build/.
INCLUDES = -I$(top_builddir)/intl \
-I$(top_builddir) \
-I$(top_srcdir)/intl \
-I$(top_srcdir)/lib
LDADD = $(INTLLIBS) ../lib/libbison.a
bin_PROGRAMS = bison bin_PROGRAMS = bison
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \ bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
derives.c \ derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \ files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
output.c \ output.h output.c \
state.h state.c \
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
EXTRA_bison_SOURCES = vmsgetargs.c EXTRA_bison_SOURCES = vmsgetargs.c
@@ -21,7 +47,6 @@ EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \ noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
derives.h \ derives.h \
files.h getargs.h gram.h lalr.h lex.h nullable.h \ files.h getargs.h gram.h lalr.h lex.h nullable.h \
output.h state.h \
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \ print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
vcg.h vcg_defaults.h print_graph.h vcg.h vcg_defaults.h print_graph.h
+83 -58
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,31 +92,44 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
AUTOMAKE_OPTIONS = 1.4 ../lib/ansi2knr AUTOMAKE_OPTIONS = ../lib/ansi2knr
DEFS = @DEFS@ \ DEFS = @DEFS@ \
-DBISON_SIMPLE=\"$(pkgdatadir)/bison.simple\" \ -DBISON_SIMPLE=\"$(pkgdatadir)/bison.simple\" \
-DBISON_HAIRY=\"$(pkgdatadir)/bison.hairy\" \ -DBISON_HAIRY=\"$(pkgdatadir)/bison.hairy\" \
-DLOCALEDIR=\"$(datadir)/locale\" -DLOCALEDIR=\"$(datadir)/locale\"
INCLUDES = -I../intl -I$(top_srcdir)/lib -I.. CFLAGS = @CFLAGS@ $(WARNING_CFLAGS) $(WERROR_CFLAGS)
LDADD = @INTLLIBS@ ../lib/libbison.a
# libintl.h in is build/intl, intl/libgettext.h in src/,
# config.h in build/.
INCLUDES = -I$(top_builddir)/intl \
-I$(top_builddir) \
-I$(top_srcdir)/intl \
-I$(top_srcdir)/lib
LDADD = $(INTLLIBS) ../lib/libbison.a
bin_PROGRAMS = bison bin_PROGRAMS = bison
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \ bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
derives.c \ derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \ files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
output.c \ output.h output.c \
state.h state.c \
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
@@ -125,7 +138,6 @@ EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \ noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
derives.h \ derives.h \
files.h getargs.h gram.h lalr.h lex.h nullable.h \ files.h getargs.h gram.h lalr.h lex.h nullable.h \
output.h state.h \
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \ print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
vcg.h vcg_defaults.h print_graph.h vcg.h vcg_defaults.h print_graph.h
@@ -144,9 +156,10 @@ am_bison_OBJECTS = LR0$U.$(OBJEXT) closure$U.$(OBJEXT) \
complain$U.$(OBJEXT) conflicts$U.$(OBJEXT) derives$U.$(OBJEXT) \ complain$U.$(OBJEXT) conflicts$U.$(OBJEXT) derives$U.$(OBJEXT) \
files$U.$(OBJEXT) getargs$U.$(OBJEXT) gram$U.$(OBJEXT) \ files$U.$(OBJEXT) getargs$U.$(OBJEXT) gram$U.$(OBJEXT) \
lalr$U.$(OBJEXT) lex$U.$(OBJEXT) main$U.$(OBJEXT) \ lalr$U.$(OBJEXT) lex$U.$(OBJEXT) main$U.$(OBJEXT) \
nullable$U.$(OBJEXT) output$U.$(OBJEXT) print$U.$(OBJEXT) \ nullable$U.$(OBJEXT) output$U.$(OBJEXT) state$U.$(OBJEXT) \
reader$U.$(OBJEXT) reduce$U.$(OBJEXT) symtab$U.$(OBJEXT) \ print$U.$(OBJEXT) reader$U.$(OBJEXT) reduce$U.$(OBJEXT) \
warshall$U.$(OBJEXT) vcg$U.$(OBJEXT) print_graph$U.$(OBJEXT) symtab$U.$(OBJEXT) warshall$U.$(OBJEXT) vcg$U.$(OBJEXT) \
print_graph$U.$(OBJEXT)
bison_OBJECTS = $(am_bison_OBJECTS) bison_OBJECTS = $(am_bison_OBJECTS)
bison_LDADD = $(LDADD) bison_LDADD = $(LDADD)
bison_DEPENDENCIES = ../lib/libbison.a bison_DEPENDENCIES = ../lib/libbison.a
@@ -156,22 +169,23 @@ CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/config/depcomp depcomp = $(SHELL) $(top_srcdir)/config/depcomp
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/LR0$U.Po $(DEPDIR)/closure$U.Po \ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ $(DEPDIR)/complain$U.Po $(DEPDIR)/conflicts$U.Po \ @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/LR0$U.Po ./$(DEPDIR)/closure$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/derives$U.Po $(DEPDIR)/files$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/complain$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/getargs$U.Po $(DEPDIR)/gram$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/conflicts$U.Po ./$(DEPDIR)/derives$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/lalr$U.Po $(DEPDIR)/lex$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/files$U.Po ./$(DEPDIR)/getargs$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/nullable$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/gram$U.Po ./$(DEPDIR)/lalr$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/output$U.Po $(DEPDIR)/print$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/lex$U.Po ./$(DEPDIR)/main$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/print_graph$U.Po $(DEPDIR)/reader$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/nullable$U.Po ./$(DEPDIR)/output$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/symtab$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/print$U.Po ./$(DEPDIR)/print_graph$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/vcg$U.Po $(DEPDIR)/vmsgetargs$U.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/reader$U.Po ./$(DEPDIR)/reduce$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/warshall$U.Po @AMDEP_TRUE@ ./$(DEPDIR)/state$U.Po ./$(DEPDIR)/symtab$U.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/vcg$U.Po ./$(DEPDIR)/vmsgetargs$U.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/warshall$U.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC) CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
CFLAGS = @CFLAGS@
DIST_SOURCES = $(bison_SOURCES) $(EXTRA_bison_SOURCES) DIST_SOURCES = $(bison_SOURCES) $(EXTRA_bison_SOURCES)
DATA = $(pkgdata_DATA) DATA = $(pkgdata_DATA)
@@ -188,7 +202,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile $(AUTOMAKE) --gnu src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
install-binPROGRAMS: $(bin_PROGRAMS) install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir) $(mkinstalldirs) $(DESTDIR)$(bindir)
@@ -229,30 +243,31 @@ ANSI2KNR = ../lib/ansi2knr
mostlyclean-kr: mostlyclean-kr:
-test "$U" = "" || rm -f *_.c -test "$U" = "" || rm -f *_.c
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/LR0$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LR0$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/closure$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closure$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/complain$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/complain$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/conflicts$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conflicts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/derives$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/derives$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/files$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/files$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getargs$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getargs$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gram$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gram$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lalr$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lalr$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lex$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lex$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/main$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/nullable$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nullable$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/output$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/output$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print_graph$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_graph$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/reader$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reader$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/reduce$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reduce$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/symtab$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vcg$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symtab$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vmsgetargs$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vcg$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/warshall$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmsgetargs$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/warshall$U.Po@am__quote@
distclean-depend: distclean-depend:
-rm -rf $(DEPDIR) -rm -rf ./$(DEPDIR)
.c.o: .c.o:
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@@ -300,6 +315,8 @@ reader_.c: reader.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reader.c; then echo $(srcdir)/reader.c; else echo reader.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > reader_.c || rm -f reader_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reader.c; then echo $(srcdir)/reader.c; else echo reader.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > reader_.c || rm -f reader_.c
reduce_.c: reduce.c $(ANSI2KNR) reduce_.c: reduce.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reduce.c; then echo $(srcdir)/reduce.c; else echo reduce.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > reduce_.c || rm -f reduce_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reduce.c; then echo $(srcdir)/reduce.c; else echo reduce.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > reduce_.c || rm -f reduce_.c
state_.c: state.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/state.c; then echo $(srcdir)/state.c; else echo state.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > state_.c || rm -f state_.c
symtab_.c: symtab.c $(ANSI2KNR) symtab_.c: symtab.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/symtab.c; then echo $(srcdir)/symtab.c; else echo symtab.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > symtab_.c || rm -f symtab_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/symtab.c; then echo $(srcdir)/symtab.c; else echo symtab.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > symtab_.c || rm -f symtab_.c
vcg_.c: vcg.c $(ANSI2KNR) vcg_.c: vcg.c $(ANSI2KNR)
@@ -313,17 +330,18 @@ conflicts_.$(OBJEXT) derives_.$(OBJEXT) files_.$(OBJEXT) \
getargs_.$(OBJEXT) gram_.$(OBJEXT) lalr_.$(OBJEXT) lex_.$(OBJEXT) \ getargs_.$(OBJEXT) gram_.$(OBJEXT) lalr_.$(OBJEXT) lex_.$(OBJEXT) \
main_.$(OBJEXT) nullable_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \ main_.$(OBJEXT) nullable_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \
print_graph_.$(OBJEXT) reader_.$(OBJEXT) reduce_.$(OBJEXT) \ print_graph_.$(OBJEXT) reader_.$(OBJEXT) reduce_.$(OBJEXT) \
symtab_.$(OBJEXT) vcg_.$(OBJEXT) vmsgetargs_.$(OBJEXT) \ state_.$(OBJEXT) symtab_.$(OBJEXT) vcg_.$(OBJEXT) vmsgetargs_.$(OBJEXT) \
warshall_.$(OBJEXT) : $(ANSI2KNR) warshall_.$(OBJEXT) : $(ANSI2KNR)
uninstall-info-am: uninstall-info-am:
pkgdataDATA_INSTALL = $(INSTALL_DATA)
install-pkgdataDATA: $(pkgdata_DATA) install-pkgdataDATA: $(pkgdata_DATA)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
@list='$(pkgdata_DATA)'; for p in $$list; do \ @list='$(pkgdata_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \ f="`echo $$p | sed -e 's|^.*/||'`"; \
echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ echo " $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \
$(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \
done done
uninstall-pkgdataDATA: uninstall-pkgdataDATA:
@@ -334,29 +352,33 @@ uninstall-pkgdataDATA:
rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ rm -f $(DESTDIR)$(pkgdatadir)/$$f; \
done done
ETAGS = etags
ETAGSFLAGS =
tags: TAGS tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
mkid -fID $$unique $(LISP) mkid -fID $$unique
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP) $(TAGS_FILES) $(LISP)
tags=; \ tags=; \
here=`pwd`; \ here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \ END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ test -z "$(ETAGS_ARGS)$$tags$$unique" \
|| etags $(ETAGS_ARGS) $$tags $$unique $(LISP) || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique
GTAGS: GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \ here=`$(am__cd) $(top_builddir) && pwd` \
@@ -365,7 +387,6 @@ GTAGS:
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .. top_distdir = ..
@@ -373,13 +394,16 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES) distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -405,6 +429,7 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
+283 -193
View File
@@ -1,7 +1,9 @@
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line #line
/* Skeleton output parser for bison, /* Skeleton output parser for bison,
Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -28,75 +30,102 @@
It was written by Richard Stallman by simplifying the hairy parser It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */ used when %semantic_parser is specified. */
#ifndef YYSTACK_USE_ALLOCA /* All symbols defined below should begin with yy or YY, to avoid
# ifdef alloca infringing on user name space. This should be done even for local
# define YYSTACK_USE_ALLOCA 1 variables, as they might otherwise be expanded by user macros.
# else /* alloca not defined */ There are some unavoidable exceptions within include files to
# ifdef __GNUC__ define necessary library symbols; they are noted "INFRINGES ON
# define YYSTACK_USE_ALLOCA 1 USER NAME SPACE" below. */
# define alloca __builtin_alloca
# else /* not GNU C. */
# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
# define YYSTACK_USE_ALLOCA 1
# include <alloca.h>
# else /* not sparc */
/* We think this test detects Watcom and Microsoft C. */
/* This used to test MSDOS, but that is a bad idea since that
symbol is in the user namespace. */
# if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
# if 0
/* No need for malloc.h, which pollutes the namespace; instead,
just don't use alloca. */
# include <malloc.h>
# endif
# else /* not MSDOS, or __TURBOC__ */
# if defined(_AIX)
/* I don't know what this was needed for, but it pollutes the
namespace. So I turned it off. rms, 2 May 1997. */
/* #include <malloc.h> */
#pragma alloca
# define YYSTACK_USE_ALLOCA 1
# else /* not MSDOS, or __TURBOC__, or _AIX */
# if 0
/* [email protected] says this works for HPUX 9.05 and up, and on
HPUX 10. Eventually we can turn this on. */
# ifdef __hpux
# define YYSTACK_USE_ALLOCA 1
# define alloca __builtin_alloca
# endif /* __hpux */
# endif
# endif /* not _AIX */
# endif /* not MSDOS, or __TURBOC__ */
# endif /* not sparc */
# endif /* not GNU C */
# endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */
#ifndef YYSTACK_USE_ALLOCA #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
# define YYSTACK_USE_ALLOCA 0
/* The parser invokes alloca or malloc; define the necessary symbols. */
# if YYSTACK_USE_ALLOCA
# define YYSTACK_ALLOC alloca
# else
# ifndef YYSTACK_USE_ALLOCA
# if defined (alloca) || defined (_ALLOCA_H)
# define YYSTACK_ALLOC alloca
# else
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
# endif
# endif
# endif
# endif
# ifdef YYSTACK_ALLOC
/* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# else
# if defined (__STDC__) || defined (__cplusplus)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# endif
# define YYSTACK_ALLOC malloc
# define YYSTACK_FREE free
# endif
/* A type that is properly aligned for any stack member. */
union yyalloc
{
short yyss;
YYSTYPE yyvs;
# if YYLSP_NEEDED
YYLTYPE yyls;
# endif
};
/* The size of the maximum gap between one aligned stack and the next. */
# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# if YYLSP_NEEDED
# define YYSTACK_BYTES(N) \
((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ 2 * YYSTACK_GAP_MAX)
# else
# define YYSTACK_BYTES(N) \
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAX)
# endif
/* Relocate the TYPE STACK from its old location to the new one. The
local variables YYSIZE and YYSTACKSIZE give the old and new number of
elements in the stack, and YYPTR gives the new location of the
stack. Advance YYPTR to a properly aligned location for the next
stack. */
# define YYSTACK_RELOCATE(Type, Stack) \
do \
{ \
YYSIZE_T yynewbytes; \
yymemcpy ((char *) yyptr, (char *) (Stack), \
yysize * (YYSIZE_T) sizeof (Type)); \
Stack = &yyptr->Stack; \
yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif #endif
#if ! defined (YYSIZE_T) && defined (size_t)
/* Realloc WHAT from SIZE to YYSTACKSIZE elements of TYPE. # define YYSIZE_T size_t
If WHAT was malloc'ed (not the original automatic ARRAY), free it. */ #endif
#if YYSTACK_USE_ALLOCA #if ! defined (YYSIZE_T)
# define YYSTACK_REALLOC(Type, What, Array) \ # if defined (__STDC__) || defined (__cplusplus)
do { \ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
Type *old = What; \ # define YYSIZE_T size_t
What = (Type *) malloc (yystacksize * sizeof (Type)); \ # endif
__yy_memcpy ((char *) What, (char *) old, \ #endif
(size) * (unsigned int) sizeof (Type)); \ #if ! defined (YYSIZE_T)
yyfree_stacks = 1; \ # define YYSIZE_T unsigned int
if (old != Array) \
free (old); \
} while (0)
#else
# define YYSTACK_REALLOC(Type, What, Array) \
do { \
Type *old = What; \
What = (Type *) alloca (yystacksize * sizeof (Type)); \
__yy_memcpy ((char *) What, (char *) old, \
(size) * (unsigned int) sizeof (Type)); \
} while (0)
#endif #endif
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
@@ -169,15 +198,19 @@ while (0)
/* Enable debugging if requested. */ /* Enable debugging if requested. */
#if YYDEBUG #if YYDEBUG
# ifndef YYFPRINTF
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
# define YYFPRINTF fprintf
# endif
# define YYDPRINTF(Args) \ # define YYDPRINTF(Args) \
do { \ do { \
if (yydebug) \ if (yydebug) \
fprintf Args; \ YYFPRINTF Args; \
} while (0) } while (0)
/* Nonzero means print parse trace. [The following comment makes no /* Nonzero means print parse trace. It is left uninitialized so that
sense to me. Could someone clarify it? --akim] Since this is multiple parsers can coexist. */
uninitialized, it does not stop multiple parsers from coexisting.
*/
int yydebug; int yydebug;
#else /* !YYDEBUG */ #else /* !YYDEBUG */
# define YYDPRINTF(Args) # define YYDPRINTF(Args)
@@ -189,7 +222,12 @@ int yydebug;
#endif #endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
if the built-in stack extension method is used). */ if the built-in stack extension method is used).
Do not make this value too large; the results are undefined if
SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
evaluated with infinite-precision integer arithmetic. */
#if YYMAXDEPTH == 0 #if YYMAXDEPTH == 0
# undef YYMAXDEPTH # undef YYMAXDEPTH
#endif #endif
@@ -198,35 +236,83 @@ int yydebug;
# define YYMAXDEPTH 10000 # define YYMAXDEPTH 10000
#endif #endif
/* Define __yy_memcpy. Note that the size argument #if ! defined (yyoverflow) && ! defined (yymemcpy)
should be passed with type unsigned int, because that is what the non-GCC # if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
definitions require. With GCC, __builtin_memcpy takes an arg # define yymemcpy __builtin_memcpy
of type size_t, but it can handle unsigned int. */ # else /* not GNU C or C++ */
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
# define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count)
#else /* not GNU C or C++ */
/* This is the most reliable way to avoid incompatibilities /* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */ in available built-in functions on various systems. */
static void static void
# ifndef __cplusplus # if defined (__STDC__) || defined (__cplusplus)
__yy_memcpy (to, from, count) yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
char *to; # else
const char *from; yymemcpy (yyto, yyfrom, yycount)
unsigned int count; char *yyto;
# else /* __cplusplus */ const char *yyfrom;
__yy_memcpy (char *to, const char *from, unsigned int count) YYSIZE_T yycount;
# endif # endif
{ {
register const char *f = from; register const char *yyf = yyfrom;
register char *t = to; register char *yyt = yyto;
register int i = count; register YYSIZE_T yyi = yycount;
while (i-- > 0) while (yyi-- != 0)
*t++ = *f++; *yyt++ = *yyf++;
} }
# endif
#endif
#ifdef YYERROR_VERBOSE
# ifndef yystrlen
# if defined (__GLIBC__) && defined (_STRING_H)
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
static YYSIZE_T
# if defined (__STDC__) || defined (__cplusplus)
yystrlen (const char *yystr)
# else
yystrlen (yystr)
const char *yystr;
# endif
{
register const char *yys = yystr;
while (*yys++ != '\0')
continue;
return yys - yystr - 1;
}
# endif
# endif
# ifndef yystpcpy
# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
# define yystpcpy stpcpy
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
static char *
# if defined (__STDC__) || defined (__cplusplus)
yystpcpy (char *yydest, const char *yysrc)
# else
yystpcpy (yydest, yysrc)
char *yydest;
const char *yysrc;
# endif
{
register char *yyd = yydest;
register const char *yys = yysrc;
while ((*yyd++ = *yys++) != '\0')
continue;
return yyd - 1;
}
# endif
# endif
#endif #endif
#line #line
@@ -238,13 +324,13 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
to the proper pointer type. */ to the proper pointer type. */
#ifdef YYPARSE_PARAM #ifdef YYPARSE_PARAM
# ifdef __cplusplus # if defined (__STDC__) || defined (__cplusplus)
# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
# define YYPARSE_PARAM_DECL # define YYPARSE_PARAM_DECL
# else /* !__cplusplus */ # else
# define YYPARSE_PARAM_ARG YYPARSE_PARAM # define YYPARSE_PARAM_ARG YYPARSE_PARAM
# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
# endif /* !__cplusplus */ # endif
#else /* !YYPARSE_PARAM */ #else /* !YYPARSE_PARAM */
# define YYPARSE_PARAM_ARG # define YYPARSE_PARAM_ARG
# define YYPARSE_PARAM_DECL # define YYPARSE_PARAM_DECL
@@ -262,7 +348,7 @@ int yyparse (void);
/* YY_DECL_VARIABLES -- depending whether we use a pure parser, /* YY_DECL_VARIABLES -- depending whether we use a pure parser,
variables are global, or local to YYPARSE. */ variables are global, or local to YYPARSE. */
#define _YY_DECL_VARIABLES \ #define YY_DECL_NON_LSP_VARIABLES \
/* The lookahead symbol. */ \ /* The lookahead symbol. */ \
int yychar; \ int yychar; \
\ \
@@ -274,13 +360,13 @@ int yynerrs;
#if YYLSP_NEEDED #if YYLSP_NEEDED
# define YY_DECL_VARIABLES \ # define YY_DECL_VARIABLES \
_YY_DECL_VARIABLES \ YY_DECL_NON_LSP_VARIABLES \
\ \
/* Location data for the lookahead symbol. */ \ /* Location data for the lookahead symbol. */ \
YYLTYPE yylloc; YYLTYPE yylloc;
#else #else
# define YY_DECL_VARIABLES \ # define YY_DECL_VARIABLES \
_YY_DECL_VARIABLES YY_DECL_NON_LSP_VARIABLES
#endif #endif
@@ -301,6 +387,7 @@ yyparse (YYPARSE_PARAM_ARG)
register int yystate; register int yystate;
register int yyn; register int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */ /* Number of tokens to shift before error messages enabled. */
int yyerrstatus; int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */ /* Lookahead token as an internal (translated) token number. */
@@ -337,16 +424,15 @@ yyparse (YYPARSE_PARAM_ARG)
# define YYPOPSTACK (yyvsp--, yyssp--) # define YYPOPSTACK (yyvsp--, yyssp--)
#endif #endif
int yystacksize = YYINITDEPTH; YYSIZE_T yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
/* The variables used to return semantic value and location from the /* The variables used to return semantic value and location from the
action routines. */ action routines. */
YYSTYPE yyval; YYSTYPE yyval;
# if YYLSP_NEEDED #if YYLSP_NEEDED
YYLTYPE yyloc; YYLTYPE yyloc;
# endif #endif
/* When reducing, the number of symbols on the RHS of the reduced /* When reducing, the number of symbols on the RHS of the reduced
rule. */ rule. */
@@ -386,7 +472,7 @@ yyparse (YYPARSE_PARAM_ARG)
if (yyssp >= yyss + yystacksize - 1) if (yyssp >= yyss + yystacksize - 1)
{ {
/* Get the current used size of the three stacks, in elements. */ /* Get the current used size of the three stacks, in elements. */
int size = yyssp - yyss + 1; YYSIZE_T yysize = yyssp - yyss + 1;
#ifdef yyoverflow #ifdef yyoverflow
{ {
@@ -403,15 +489,15 @@ yyparse (YYPARSE_PARAM_ARG)
/* This used to be a conditional around just the two extra args, /* This used to be a conditional around just the two extra args,
but that might be undefined if yyoverflow is a macro. */ but that might be undefined if yyoverflow is a macro. */
yyoverflow ("parser stack overflow", yyoverflow ("parser stack overflow",
&yyss1, size * sizeof (*yyssp), &yyss1, yysize * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp), &yyvs1, yysize * sizeof (*yyvsp),
&yyls1, size * sizeof (*yylsp), &yyls1, yysize * sizeof (*yylsp),
&yystacksize); &yystacksize);
yyls = yyls1; yyls = yyls1;
# else # else
yyoverflow ("parser stack overflow", yyoverflow ("parser stack overflow",
&yyss1, size * sizeof (*yyssp), &yyss1, yysize * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp), &yyvs1, yysize * sizeof (*yyvsp),
&yystacksize); &yystacksize);
# endif # endif
yyss = yyss1; yyss = yyss1;
@@ -420,36 +506,36 @@ yyparse (YYPARSE_PARAM_ARG)
#else /* no yyoverflow */ #else /* no yyoverflow */
/* Extend the stack our own way. */ /* Extend the stack our own way. */
if (yystacksize >= YYMAXDEPTH) if (yystacksize >= YYMAXDEPTH)
{ goto yyoverflowlab;
yyerror ("parser stack overflow");
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
# if YYLSP_NEEDED
free (yyls);
# endif
}
return 2;
}
yystacksize *= 2; yystacksize *= 2;
if (yystacksize > YYMAXDEPTH) if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH; yystacksize = YYMAXDEPTH;
YYSTACK_REALLOC (short, yyss, yyssa); {
YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa); short *yyss1 = yyss;
union yyalloc *yyptr =
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
goto yyoverflowlab;
YYSTACK_RELOCATE (short, yyss);
YYSTACK_RELOCATE (YYSTYPE, yyvs);
# if YYLSP_NEEDED # if YYLSP_NEEDED
YYSTACK_REALLOC (YYLTYPE, yyls, yylsa); YYSTACK_RELOCATE (YYLTYPE, yyls);
# endif # endif
# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
#endif /* no yyoverflow */ #endif /* no yyoverflow */
yyssp = yyss + size - 1; yyssp = yyss + yysize - 1;
yyvsp = yyvs + size - 1; yyvsp = yyvs + yysize - 1;
#if YYLSP_NEEDED #if YYLSP_NEEDED
yylsp = yyls + size - 1; yylsp = yyls + yysize - 1;
#endif #endif
YYDPRINTF ((stderr, "Stack size increased to %d\n", yystacksize)); YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
if (yyssp >= yyss + yystacksize - 1) if (yyssp >= yyss + yystacksize - 1)
YYABORT; YYABORT;
@@ -504,13 +590,14 @@ yybackup:
which are defined only if `YYDEBUG' is set. */ which are defined only if `YYDEBUG' is set. */
if (yydebug) if (yydebug)
{ {
fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); YYFPRINTF (stderr, "Next token is %d (%s",
yychar, yytname[yychar1]);
/* Give the individual parser a way to print the precise /* Give the individual parser a way to print the precise
meaning of a token, for further debugging info. */ meaning of a token, for further debugging info. */
# ifdef YYPRINT # ifdef YYPRINT
YYPRINT (stderr, yychar, yylval); YYPRINT (stderr, yychar, yylval);
# endif # endif
fprintf (stderr, ")\n"); YYFPRINTF (stderr, ")\n");
} }
#endif #endif
} }
@@ -542,7 +629,8 @@ yybackup:
YYACCEPT; YYACCEPT;
/* Shift the lookahead token. */ /* Shift the lookahead token. */
YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1])); YYDPRINTF ((stderr, "Shifting token %d (%s), ",
yychar, yytname[yychar1]));
/* Discard the token being shifted unless it is eof. */ /* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF) if (yychar != YYEOF)
@@ -601,15 +689,15 @@ yyreduce:
are defined only if `YYDEBUG' is set. */ are defined only if `YYDEBUG' is set. */
if (yydebug) if (yydebug)
{ {
int i; int yyi;
fprintf (stderr, "Reducing via rule %d (line %d), ", YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
yyn, yyrline[yyn]); yyn, yyrline[yyn]);
/* Print the symbols being reduced, and their result. */ /* Print the symbols being reduced, and their result. */
for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
fprintf (stderr, "%s ", yytname[yyrhs[i]]); YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
} }
#endif #endif
%% actions /* The action file replaces this line. */ %% actions /* The action file replaces this line. */
@@ -624,11 +712,11 @@ yyreduce:
#if YYDEBUG #if YYDEBUG
if (yydebug) if (yydebug)
{ {
short *ssp1 = yyss - 1; short *yyssp1 = yyss - 1;
fprintf (stderr, "state stack now"); YYFPRINTF (stderr, "state stack now");
while (ssp1 != yyssp) while (yyssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1); YYFPRINTF (stderr, " %d", *++yyssp1);
fprintf (stderr, "\n"); YYFPRINTF (stderr, "\n");
} }
#endif #endif
@@ -666,45 +754,47 @@ yyerrlab:
if (yyn > YYFLAG && yyn < YYLAST) if (yyn > YYFLAG && yyn < YYLAST)
{ {
int size = 0; YYSIZE_T yysize = 0;
char *msg; char *yymsg;
int x, count; int yyx, yycount;
count = 0; yycount = 0;
/* Start X at -YYN if negative to avoid negative indexes in /* Start YYX at -YYN if negative to avoid negative indexes in
YYCHECK. */ YYCHECK. */
for (x = yyn < 0 ? -yyn : 0; for (yyx = yyn < 0 ? -yyn : 0;
x < (int) (sizeof (yytname) / sizeof (char *)); x++) yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
if (yycheck[x + yyn] == x) if (yycheck[yyx + yyn] == yyx)
size += strlen (yytname[x]) + 15, count++; yysize += yystrlen (yytname[yyx]) + 15, yycount++;
size += strlen ("parse error, unexpected ") + 1; yysize += yystrlen ("parse error, unexpected ") + 1;
size += strlen (yytname[YYTRANSLATE (yychar)]); yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
msg = (char *) malloc (size); yymsg = (char *) YYSTACK_ALLOC (yysize);
if (msg != 0) if (yymsg != 0)
{ {
strcpy (msg, "parse error, unexpected "); char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
strcat (msg, yytname[YYTRANSLATE (yychar)]); yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
if (count < 5) if (yycount < 5)
{ {
count = 0; yycount = 0;
for (x = yyn < 0 ? -yyn : 0; for (yyx = yyn < 0 ? -yyn : 0;
x < (int) (sizeof (yytname) / sizeof (char *)); x++) yyx < (int) (sizeof (yytname) / sizeof (char *));
if (yycheck[x + yyn] == x) yyx++)
if (yycheck[yyx + yyn] == yyx)
{ {
strcat (msg, count == 0 ? ", expecting " : " or "); const char *yyq = ! yycount ? ", expecting " : " or ";
strcat (msg, yytname[x]); yyp = yystpcpy (yyp, yyq);
count++; yyp = yystpcpy (yyp, yytname[yyx]);
yycount++;
} }
} }
yyerror (msg); yyerror (yymsg);
free (msg); YYSTACK_FREE (yymsg);
} }
else else
yyerror ("parse error; also virtual memory exhausted"); yyerror ("parse error; also virtual memory exhausted");
} }
else else
#endif /* YYERROR_VERBOSE */ #endif /* defined (YYERROR_VERBOSE) */
yyerror ("parse error"); yyerror ("parse error");
} }
goto yyerrlab1; goto yyerrlab1;
@@ -767,11 +857,11 @@ yyerrpop:
#if YYDEBUG #if YYDEBUG
if (yydebug) if (yydebug)
{ {
short *ssp1 = yyss - 1; short *yyssp1 = yyss - 1;
fprintf (stderr, "Error: state stack now"); YYFPRINTF (stderr, "Error: state stack now");
while (ssp1 != yyssp) while (yyssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1); YYFPRINTF (stderr, " %d", *++yyssp1);
fprintf (stderr, "\n"); YYFPRINTF (stderr, "\n");
} }
#endif #endif
@@ -816,28 +906,28 @@ yyerrhandle:
| yyacceptlab -- YYACCEPT comes here. | | yyacceptlab -- YYACCEPT comes here. |
`-------------------------------------*/ `-------------------------------------*/
yyacceptlab: yyacceptlab:
if (yyfree_stacks) yyresult = 0;
{ goto yyreturn;
free (yyss);
free (yyvs);
#if YYLSP_NEEDED
free (yyls);
#endif
}
return 0;
/*-----------------------------------. /*-----------------------------------.
| yyabortlab -- YYABORT comes here. | | yyabortlab -- YYABORT comes here. |
`-----------------------------------*/ `-----------------------------------*/
yyabortlab: yyabortlab:
if (yyfree_stacks) yyresult = 1;
{ goto yyreturn;
free (yyss);
free (yyvs); /*---------------------------------------------.
#if YYLSP_NEEDED | yyoverflowab -- parser overflow comes here. |
free (yyls); `---------------------------------------------*/
yyoverflowlab:
yyerror ("parser stack overflow");
yyresult = 2;
/* Fall through. */
yyreturn:
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif #endif
} return yyresult;
return 1;
} }
+74 -136
View File
@@ -26,9 +26,9 @@
#include "derives.h" #include "derives.h"
#include "warshall.h" #include "warshall.h"
/* ITEMSETSIZE is the size of the array ITEMSET. */ /* NITEMSET is the size of the array ITEMSET. */
short *itemset; short *itemset;
int itemsetsize; int nitemset;
static unsigned *ruleset; static unsigned *ruleset;
@@ -36,8 +36,9 @@ static unsigned *ruleset;
static unsigned *fderives; static unsigned *fderives;
static unsigned *firsts; static unsigned *firsts;
#define FDERIVES(Symbol) (fderives + (Symbol) * rulesetsize) /* Retrieve the FDERIVES/FIRSTS sets of the nonterminals numbered Var. */
#define FIRSTS(Symbol) (firsts + (Symbol) * varsetsize) #define FDERIVES(Var) (fderives + ((Var) - ntokens) * rulesetsize)
#define FIRSTS(Var) (firsts + ((Var) - ntokens) * varsetsize)
/* number of words required to hold a bit for each rule */ /* number of words required to hold a bit for each rule */
static int rulesetsize; static int rulesetsize;
@@ -51,33 +52,33 @@ static int varsetsize;
`-----------------*/ `-----------------*/
static void static void
print_closure (int n) print_closure (const char *title, short *array, size_t size)
{ {
int i; size_t i;
fprintf (stderr, "n = %d\n", n); fprintf (stderr, "Closure: %s\n", title);
for (i = 0; i < itemsetsize; ++i) for (i = 0; i < size; ++i)
fprintf (stderr, " %d\n", itemset[i]); {
fprintf (stderr, "\n\n"); short *rp;
fprintf (stderr, " %2d: .", array[i]);
for (rp = &ritem[array[i]]; *rp > 0; ++rp)
fprintf (stderr, " %s", tags[*rp]);
fprintf (stderr, " (rule %d)\n", -*rp);
}
fputs ("\n\n", stderr);
} }
static void static void
print_firsts (void) print_firsts (void)
{ {
int i; int i, j;
int j;
unsigned *rowp;
fprintf (stderr, "FIRSTS\n"); fprintf (stderr, "FIRSTS\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
fprintf (stderr, "\t%s firsts\n", tags[i]); fprintf (stderr, "\t%s firsts\n", tags[i]);
rowp = FIRSTS (i - ntokens);
for (j = 0; j < nvars; j++) for (j = 0; j < nvars; j++)
if (BITISSET (rowp, j)) if (BITISSET (FIRSTS (i), j))
fprintf (stderr, "\t\t%d (%s)\n", j + ntokens, tags[j + ntokens]); fprintf (stderr, "\t\t%d (%s)\n", j + ntokens, tags[j + ntokens]);
} }
fprintf (stderr, "\n\n"); fprintf (stderr, "\n\n");
@@ -89,17 +90,14 @@ print_fderives (void)
{ {
int i; int i;
int j; int j;
unsigned *rp;
fprintf (stderr, "FDERIVES\n"); fprintf (stderr, "FDERIVES\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
fprintf (stderr, "\t%s derives\n", tags[i]); fprintf (stderr, "\t%s derives\n", tags[i]);
rp = FDERIVES (i);
for (j = 0; j <= nrules; j++) for (j = 0; j <= nrules; j++)
if (BITISSET (rp, j)) if (BITISSET (FDERIVES (i), j))
{ {
short *rhsp; short *rhsp;
fprintf (stderr, "\t\t%d:", j); fprintf (stderr, "\t\t%d:", j);
@@ -124,33 +122,19 @@ print_fderives (void)
static void static void
set_firsts (void) set_firsts (void)
{ {
unsigned *row; int i, j;
int symbol;
short *sp;
int rowsize;
int i; varsetsize = WORDSIZE (nvars);
varsetsize = rowsize = WORDSIZE (nvars); firsts = XCALLOC (unsigned, nvars * varsetsize);
firsts = XCALLOC (unsigned, nvars * rowsize);
row = firsts;
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ for (j = 0; derives[i][j] >= 0; ++j)
sp = derives[i]; {
while (*sp >= 0) int symbol = ritem[rule_table[derives[i][j]].rhs];
{ if (ISVAR (symbol))
symbol = ritem[rule_table[*sp++].rhs]; SETBIT (FIRSTS (i), symbol - ntokens);
if (ISVAR (symbol)) }
{
symbol -= ntokens;
SETBIT (row, symbol);
}
}
row += rowsize;
}
RTC (firsts, nvars); RTC (firsts, nvars);
@@ -171,46 +155,17 @@ set_firsts (void)
static void static void
set_fderives (void) set_fderives (void)
{ {
unsigned *rrow; int i, j, k;
unsigned *vrow;
int j;
unsigned cword;
short *rp;
int b;
int ruleno; fderives = XCALLOC (unsigned, nvars * rulesetsize);
int i;
fderives = XCALLOC (unsigned, nvars * rulesetsize) - ntokens * rulesetsize;
set_firsts (); set_firsts ();
rrow = FDERIVES (ntokens); for (i = ntokens; i < nsyms; ++i)
for (j = ntokens; j < nsyms; ++j)
for (i = ntokens; i < nsyms; i++) if (BITISSET (FIRSTS (i), j - ntokens))
{ for (k = 0; derives[j][k] > 0; ++k)
vrow = FIRSTS (i - ntokens); SETBIT (FDERIVES (i), derives[j][k]);
cword = *vrow++;
b = 0;
for (j = ntokens; j < nsyms; j++)
{
if (cword & (1 << b))
{
rp = derives[j];
while ((ruleno = *rp++) > 0)
SETBIT (rrow, ruleno);
}
b++;
if (b >= BITS_PER_WORD && j + 1 < nsyms)
{
cword = *vrow++;
b = 0;
}
}
rrow += rulesetsize;
}
if (trace_flag) if (trace_flag)
print_fderives (); print_fderives ();
@@ -235,76 +190,59 @@ new_closure (int n)
void void
closure (short *core, int n) closure (short *core, int n)
{ {
int ruleno; /* Index over CORE. */
short *csp; int c;
int itemno; /* Index over RULESET. */
int i; int r;
/* A bit index over RULESET. */
int ruleno;
if (trace_flag) if (trace_flag)
{ print_closure ("input", core, n);
fprintf (stderr, "Entering closure (items = {");
for (i = 0; i < n; ++i)
fprintf (stderr, " %d ", core[i]);
fprintf (stderr, "}, nitems = %d)\n", n);
}
if (n == 0) if (n == 0)
{ {
for (i = 0; i < rulesetsize; ++i) for (r = 0; r < rulesetsize; ++r)
ruleset[i] = FDERIVES (start_symbol)[i]; ruleset[r] = FDERIVES (start_symbol)[r];
} }
else else
{ {
for (i = 0; i < rulesetsize; ++i) for (r = 0; r < rulesetsize; ++r)
ruleset[i] = 0; ruleset[r] = 0;
for (i = 0; i < n; ++i) for (c = 0; c < n; ++c)
{ if (ISVAR (ritem[core[c]]))
int symbol = ritem[core[i]]; for (r = 0; r < rulesetsize; ++r)
if (ISVAR (symbol)) ruleset[r] |= FDERIVES (ritem[core[c]])[r];
{
int j;
for (j = 0; j < rulesetsize; ++j)
ruleset[j] |= FDERIVES (symbol)[j];
}
}
} }
ruleno = 0; nitemset = 0;
itemsetsize = 0; c = 0;
csp = core; for (ruleno = 0; ruleno < rulesetsize * BITS_PER_WORD; ++ruleno)
for (i = 0; i < rulesetsize; ++i) if (BITISSET (ruleset, ruleno))
{
int itemno = rule_table[ruleno].rhs;
while (c < n && core[c] < itemno)
{
itemset[nitemset] = core[c];
nitemset++;
c++;
}
itemset[nitemset] = itemno;
nitemset++;
}
while (c < n)
{ {
int word = ruleset[i]; itemset[nitemset] = core[c];
if (word == 0) nitemset++;
{ c++;
ruleno += BITS_PER_WORD;
}
else
{
int b;
for (b = 0; b < BITS_PER_WORD; b++)
{
if (word & (1 << b))
{
itemno = rule_table[ruleno].rhs;
while (csp < (core + n) && *csp < itemno)
itemset[itemsetsize++] = *csp++;
itemset[itemsetsize++] = itemno;
}
ruleno++;
}
}
} }
while (csp < (core + n))
itemset[itemsetsize++] = *csp++;
if (trace_flag) if (trace_flag)
print_closure (n); print_closure ("output", itemset, nitemset);
} }
@@ -313,5 +251,5 @@ free_closure (void)
{ {
XFREE (itemset); XFREE (itemset);
XFREE (ruleset); XFREE (ruleset);
XFREE (fderives + ntokens * rulesetsize); XFREE (fderives);
} }
+9 -8
View File
@@ -30,18 +30,19 @@
void new_closure PARAMS ((int n)); void new_closure PARAMS ((int n));
/* Given a vector of item numbers ITEMS, of length N, set up ruleset /* Given the kernel (aka core) of a state (a vector of item numbers
and itemset to indicate what rules could be run and which items ITEMS, of length N), set up ruleset and itemset to indicate what
could be accepted when those items are the active ones. rules could be run and which items could be accepted when those
items are the active ones.
ruleset contains a bit for each rule. closure sets the bits for ruleset contains a bit for each rule. closure sets the bits for
all rules which could potentially describe the next input to be all rules which could potentially describe the next input to be
read. read.
itemset is a vector of item numbers; itemsetend points to just ITEMSET is a vector of item numbers; NITEMSET is its size
beyond the end of the part of it that is significant. closure 9actually, points to just beyond the end of the part of it that is
places there the indices of all items which represent units of significant). closure places there the indices of all items which
input that could arrive next. */ represent units of input that could arrive next. */
void closure PARAMS ((short *items, int n)); void closure PARAMS ((short *items, int n));
@@ -51,6 +52,6 @@ void closure PARAMS ((short *items, int n));
void free_closure PARAMS ((void)); void free_closure PARAMS ((void));
extern short *itemset; extern short *itemset;
extern int itemsetsize; extern int nitemset;
#endif /* !CLOSURE_H_ */ #endif /* !CLOSURE_H_ */
+3 -3
View File
@@ -41,6 +41,9 @@
void exit (); void exit ();
#endif #endif
/* To get error_one_per_line. */
#include "error.h"
#include "complain.h" #include "complain.h"
#ifndef HAVE_DECL_STRERROR_R #ifndef HAVE_DECL_STRERROR_R
@@ -106,9 +109,6 @@ unsigned int warn_message_count;
/* This variable is incremented each time `complain' is called. */ /* This variable is incremented each time `complain' is called. */
unsigned int complain_message_count; unsigned int complain_message_count;
/* Sometimes we want to have at most one error per line. This
variable controls whether this mode is selected or not. */
int error_one_per_line;
/*--------------------------------. /*--------------------------------.
| Report a warning, and proceed. | | Report a warning, and proceed. |
-4
View File
@@ -56,10 +56,6 @@ extern unsigned int warn_message_count;
/* This variable is incremented each time `complain' is called. */ /* This variable is incremented each time `complain' is called. */
extern unsigned int complain_message_count; extern unsigned int complain_message_count;
/* Sometimes we want to have at most one error per line. This
variable controls whether this mode is selected or not. */
extern int error_one_per_line;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+153 -319
View File
@@ -29,7 +29,6 @@
#include "reader.h" #include "reader.h"
#include "LR0.h" #include "LR0.h"
errs **err_table = NULL;
/* -1 stands for not specified. */ /* -1 stands for not specified. */
int expected_conflicts = -1; int expected_conflicts = -1;
static char *conflicts = NULL; static char *conflicts = NULL;
@@ -57,21 +56,12 @@ Conflict in state %d between rule %d and token %s resolved as %s.\n"),
static void static void
flush_shift (int state, int token) flush_shift (int state, int token)
{ {
shifts *shiftp; shifts *shiftp = state_table[state].shifts;
int k, i; int i;
shiftp = state_table[state].shift_table; for (i = 0; i < shiftp->nshifts; i++)
if (!SHIFT_IS_DISABLED (shiftp, i) && SHIFT_SYMBOL (shiftp, i) == token)
if (shiftp) SHIFT_DISABLE (shiftp, i);
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
if (shiftp->shifts[i]
&& token == state_table[shiftp->shifts[i]].accessing_symbol)
(shiftp->shifts[i]) = 0;
}
}
} }
@@ -86,95 +76,79 @@ static void
resolve_sr_conflict (int state, int lookaheadnum) resolve_sr_conflict (int state, int lookaheadnum)
{ {
int i; int i;
int mask; /* find the rule to reduce by to get precedence of reduction */
unsigned *fp1; int redprec = rule_table[LAruleno[lookaheadnum]].prec;
unsigned *fp2;
int redprec;
errs *errp = ERRS_ALLOC (ntokens + 1); errs *errp = ERRS_ALLOC (ntokens + 1);
short *errtokens = errp->errs; short *errtokens = errp->errs;
/* find the rule to reduce by to get precedence of reduction */
redprec = rule_table[LAruleno[lookaheadnum]].prec;
mask = 1;
fp1 = LA (lookaheadnum);
fp2 = lookaheadset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ if (BITISSET (LA (lookaheadnum), i)
if ((mask & *fp2 & *fp1) && sprec[i]) && BITISSET (lookaheadset, i)
/* Shift-reduce conflict occurs for token number i && sprec[i])
and it has a precedence. /* Shift-reduce conflict occurs for token number i
The precedence of shifting is that of token i. */ and it has a precedence.
{ The precedence of shifting is that of token i. */
if (sprec[i] < redprec) {
{ if (sprec[i] < redprec)
log_resolution (state, lookaheadnum, i, _("reduce")); {
*fp2 &= ~mask; /* flush the shift for this token */ log_resolution (state, lookaheadnum, i, _("reduce"));
flush_shift (state, i); /* flush the shift for this token */
} RESETBIT (lookaheadset, i);
else if (sprec[i] > redprec) flush_shift (state, i);
{ }
log_resolution (state, lookaheadnum, i, _("shift")); else if (sprec[i] > redprec)
*fp1 &= ~mask; /* flush the reduce for this token */ {
} log_resolution (state, lookaheadnum, i, _("shift"));
else /* flush the reduce for this token */
{ RESETBIT (LA (lookaheadnum), i);
/* Matching precedence levels. }
For left association, keep only the reduction. else
For right association, keep only the shift. {
For nonassociation, keep neither. */ /* Matching precedence levels.
For left association, keep only the reduction.
For right association, keep only the shift.
For nonassociation, keep neither. */
switch (sassoc[i]) switch (sassoc[i])
{ {
case right_assoc: case right_assoc:
log_resolution (state, lookaheadnum, i, _("shift")); log_resolution (state, lookaheadnum, i, _("shift"));
break; break;
case left_assoc: case left_assoc:
log_resolution (state, lookaheadnum, i, _("reduce")); log_resolution (state, lookaheadnum, i, _("reduce"));
break; break;
case non_assoc: case non_assoc:
log_resolution (state, lookaheadnum, i, _("an error")); log_resolution (state, lookaheadnum, i, _("an error"));
break; break;
} }
if (sassoc[i] != right_assoc) if (sassoc[i] != right_assoc)
{ {
*fp2 &= ~mask; /* flush the shift for this token */ /* flush the shift for this token */
flush_shift (state, i); RESETBIT (lookaheadset, i);
} flush_shift (state, i);
if (sassoc[i] != left_assoc) }
{ if (sassoc[i] != left_assoc)
*fp1 &= ~mask; /* flush the reduce for this token */ {
} /* flush the reduce for this token */
if (sassoc[i] == non_assoc) RESETBIT (LA (lookaheadnum), i);
{ }
/* Record an explicit error for this token. */ if (sassoc[i] == non_assoc)
*errtokens++ = i; {
} /* Record an explicit error for this token. */
} *errtokens++ = i;
} }
}
}
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp2++;
fp1++;
}
}
errp->nerrs = errtokens - errp->errs; errp->nerrs = errtokens - errp->errs;
if (errp->nerrs) /* Some tokens have been explicitly made errors. Allocate a
{ permanent errs structure for this state, to record them. */
/* Some tokens have been explicitly made errors. Allocate i = (char *) errtokens - (char *) errp;
a permanent errs structure for this state, to record them. */ state_table[state].errs = ERRS_ALLOC (i + 1);
i = (char *) errtokens - (char *) errp; memcpy (state_table[state].errs, errp, i);
err_table[state] = ERRS_ALLOC (i + 1);
bcopy (errp, err_table[state], i);
}
else
err_table[state] = 0;
free (errp); free (errp);
} }
@@ -184,7 +158,6 @@ set_conflicts (int state)
{ {
int i, j; int i, j;
shifts *shiftp; shifts *shiftp;
int symbol;
if (state_table[state].consistent) if (state_table[state].consistent)
return; return;
@@ -192,15 +165,10 @@ set_conflicts (int state)
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
lookaheadset[i] = 0; lookaheadset[i] = 0;
shiftp = state_table[state].shift_table; shiftp = state_table[state].shifts;
if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
for (i = 0; i < shiftp->nshifts; i++) if (!SHIFT_IS_DISABLED (shiftp, i))
{ SETBIT (lookaheadset, SHIFT_SYMBOL (shiftp, i));
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol))
break;
SETBIT (lookaheadset, symbol);
}
/* Loop over all rules which require lookahead in this state. First /* Loop over all rules which require lookahead in this state. First
check for shift-reduce conflict, and try to resolve using check for shift-reduce conflict, and try to resolve using
@@ -241,8 +209,6 @@ solve_conflicts (void)
shiftset = XCALLOC (unsigned, tokensetsize); shiftset = XCALLOC (unsigned, tokensetsize);
lookaheadset = XCALLOC (unsigned, tokensetsize); lookaheadset = XCALLOC (unsigned, tokensetsize);
err_table = XCALLOC (errs *, nstates);
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
set_conflicts (i); set_conflicts (i);
} }
@@ -255,18 +221,10 @@ solve_conflicts (void)
static int static int
count_sr_conflicts (int state) count_sr_conflicts (int state)
{ {
int i; int i, k;
int k;
int mask;
shifts *shiftp;
unsigned *fp1;
unsigned *fp2;
unsigned *fp3;
int symbol;
int src_count = 0; int src_count = 0;
shifts *shiftp = state_table[state].shifts;
shiftp = state_table[state].shift_table;
if (!shiftp) if (!shiftp)
return 0; return 0;
@@ -276,49 +234,22 @@ count_sr_conflicts (int state)
lookaheadset[i] = 0; lookaheadset[i] = 0;
} }
k = shiftp->nshifts; for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
for (i = 0; i < k; i++) if (!SHIFT_IS_DISABLED (shiftp, i))
{ SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
if (!shiftp->shifts[i])
continue;
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol))
break;
SETBIT (shiftset, symbol);
}
k = state_table[state + 1].lookaheads; for (i = state_table[state].lookaheads;
fp3 = lookaheadset + tokensetsize; i < state_table[state + 1].lookaheads;
++i)
for (k = 0; k < tokensetsize; ++k)
lookaheadset[k] |= LA (i)[k];
for (i = state_table[state].lookaheads; i < k; i++) for (k = 0; k < tokensetsize; ++k)
{ lookaheadset[k] &= shiftset[k];
fp1 = LA (i);
fp2 = lookaheadset;
while (fp2 < fp3)
*fp2++ |= *fp1++;
}
fp1 = shiftset;
fp2 = lookaheadset;
while (fp2 < fp3)
*fp2++ &= *fp1++;
mask = 1;
fp2 = lookaheadset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ if (BITISSET (lookaheadset, i))
if (mask & *fp2) src_count++;
src_count++;
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp2++;
}
}
return src_count; return src_count;
} }
@@ -332,9 +263,6 @@ static int
count_rr_conflicts (int state) count_rr_conflicts (int state)
{ {
int i; int i;
unsigned mask;
unsigned *baseword;
int rrc_count = 0; int rrc_count = 0;
int m = state_table[state].lookaheads; int m = state_table[state].lookaheads;
@@ -343,31 +271,16 @@ count_rr_conflicts (int state)
if (n - m < 2) if (n - m < 2)
return 0; return 0;
mask = 1;
baseword = LA (m);
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
unsigned *wordp = baseword;
int count = 0; int count = 0;
int j; int j;
for (j = m; j < n; j++) for (j = m; j < n; j++)
{ if (BITISSET (LA (j), i))
if (mask & *wordp) count++;
count++;
wordp += tokensetsize;
}
if (count >= 2) if (count >= 2)
rrc_count++; rrc_count++;
mask <<= 1;
if (mask == 0)
{
mask = 1;
baseword++;
}
} }
return rrc_count; return rrc_count;
@@ -419,6 +332,7 @@ conflict_report (int src_num, int rrc_num)
void void
conflicts_output (FILE *out) conflicts_output (FILE *out)
{ {
bool printed_sth = FALSE;
int i; int i;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
if (conflicts[i]) if (conflicts[i])
@@ -426,7 +340,10 @@ conflicts_output (FILE *out)
fprintf (out, _("State %d contains "), i); fprintf (out, _("State %d contains "), i);
fputs (conflict_report (count_sr_conflicts (i), fputs (conflict_report (count_sr_conflicts (i),
count_rr_conflicts (i)), out); count_rr_conflicts (i)), out);
printed_sth = TRUE;
} }
if (printed_sth)
fputs ("\n\n", out);
} }
@@ -484,7 +401,14 @@ conflicts_print (void)
if (expected_conflicts != -1 && !src_ok) if (expected_conflicts != -1 && !src_ok)
{ {
complain_message_count++; /* FIXME: BIG ATTROCIOUS HACK. For flames, complaints and so
on, see Bruno Haible. GNU Gettext's plural.y's %expect is
wrong, and newer Bison reject it. But then, Bruno will be
overwhelmed by bug reports, until a fixed Gettext is
released. So for the 1.3x generation only, we leave a puke
puke hack. */
if (!strsuffix (infile, "plural.y"))
complain_message_count++;
fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n", fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
"expected %d shift/reduce conflicts\n", "expected %d shift/reduce conflicts\n",
expected_conflicts), expected_conflicts),
@@ -497,21 +421,8 @@ void
print_reductions (FILE *out, int state) print_reductions (FILE *out, int state)
{ {
int i; int i;
int j;
int k;
unsigned *fp1;
unsigned *fp2;
unsigned *fp3;
unsigned *fp4;
int rule;
int symbol;
unsigned mask;
int m; int m;
int n; int n;
int default_LA;
int default_rule = 0;
int cmax;
int count;
shifts *shiftp; shifts *shiftp;
errs *errp; errs *errp;
int nodefault = 0; int nodefault = 0;
@@ -519,105 +430,61 @@ print_reductions (FILE *out, int state)
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
shiftset[i] = 0; shiftset[i] = 0;
shiftp = state_table[state].shift_table; shiftp = state_table[state].shifts;
if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
{ if (!SHIFT_IS_DISABLED (shiftp, i))
k = shiftp->nshifts; {
for (i = 0; i < k; i++) /* if this state has a shift for the error token, don't use a
{ default rule. */
if (!shiftp->shifts[i]) if (SHIFT_IS_ERROR (shiftp, i))
continue; nodefault = 1;
symbol = state_table[shiftp->shifts[i]].accessing_symbol; SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
if (ISVAR (symbol)) }
break;
/* if this state has a shift for the error token,
don't use a default rule. */
if (symbol == error_token_number)
nodefault = 1;
SETBIT (shiftset, symbol);
}
}
errp = err_table[state]; errp = state_table[state].errs;
if (errp) if (errp)
{ for (i = 0; i < errp->nerrs; i++)
k = errp->nerrs; if (errp->errs[i])
for (i = 0; i < k; i++) SETBIT (shiftset, errp->errs[i]);
{
if (!errp->errs[i])
continue;
symbol = errp->errs[i];
SETBIT (shiftset, symbol);
}
}
m = state_table[state].lookaheads; m = state_table[state].lookaheads;
n = state_table[state + 1].lookaheads; n = state_table[state + 1].lookaheads;
if (n - m == 1 && !nodefault) if (n - m == 1 && !nodefault)
{ {
default_rule = LAruleno[m]; int k;
int default_rule = LAruleno[m];
fp1 = LA (m); for (k = 0; k < tokensetsize; ++k)
fp2 = shiftset; lookaheadset[k] = LA (m)[k] & shiftset[k];
fp3 = lookaheadset;
fp4 = lookaheadset + tokensetsize;
while (fp3 < fp4)
*fp3++ = *fp1++ & *fp2++;
mask = 1;
fp3 = lookaheadset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ if (BITISSET (lookaheadset, i))
if (mask & *fp3) fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"), tags[i], default_rule,
tags[i], default_rule, tags[rule_table[default_rule].lhs]);
tags[rule_table[default_rule].lhs]);
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp3++;
}
}
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"), fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
default_rule, tags[rule_table[default_rule].lhs]); default_rule, tags[rule_table[default_rule].lhs]);
} }
else if (n - m >= 1) else if (n - m >= 1)
{ {
cmax = 0; int cmax = 0;
default_LA = -1; int default_LA = -1;
fp4 = lookaheadset + tokensetsize; int default_rule = 0;
if (!nodefault) if (!nodefault)
for (i = m; i < n; i++) for (i = m; i < n; i++)
{ {
fp1 = LA (i); int count = 0;
fp2 = shiftset; int j, k;
fp3 = lookaheadset;
while (fp3 < fp4) for (k = 0; k < tokensetsize; ++k)
*fp3++ = *fp1++ & (~(*fp2++)); lookaheadset[k] = LA (i)[k] & ~shiftset[k];
count = 0;
mask = 1;
fp3 = lookaheadset;
for (j = 0; j < ntokens; j++) for (j = 0; j < ntokens; j++)
{ if (BITISSET (lookaheadset, j))
if (mask & *fp3) count++;
count++;
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp3++;
}
}
if (count > cmax) if (count > cmax)
{ {
@@ -626,56 +493,35 @@ print_reductions (FILE *out, int state)
default_rule = LAruleno[i]; default_rule = LAruleno[i];
} }
fp2 = shiftset; for (k = 0; k < tokensetsize; ++k)
fp3 = lookaheadset; shiftset[k] |= lookaheadset[k];
while (fp3 < fp4)
*fp2++ |= *fp3++;
} }
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
shiftset[i] = 0; shiftset[i] = 0;
if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++)
{ if (!SHIFT_IS_DISABLED (shiftp, i))
k = shiftp->nshifts; SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
for (i = 0; i < k; i++)
{
if (!shiftp->shifts[i])
continue;
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol))
break;
SETBIT (shiftset, symbol);
}
}
mask = 1;
fp1 = LA (m);
fp2 = shiftset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
int j;
int defaulted = 0; int defaulted = 0;
int count = BITISSET (shiftset, i);
if (mask & *fp2)
count = 1;
else
count = 0;
fp3 = fp1;
for (j = m; j < n; j++) for (j = m; j < n; j++)
{ {
if (mask & *fp3) if (BITISSET (LA (j), i))
{ {
if (count == 0) if (count == 0)
{ {
if (j != default_LA) if (j != default_LA)
{ fprintf (out,
rule = LAruleno[j]; _(" %-4s\treduce using rule %d (%s)\n"),
fprintf (out, tags[i],
_(" %-4s\treduce using rule %d (%s)\n"), LAruleno[j],
tags[i], rule, tags[rule_table[rule].lhs]); tags[rule_table[LAruleno[j]].lhs]);
}
else else
defaulted = 1; defaulted = 1;
@@ -684,31 +530,19 @@ print_reductions (FILE *out, int state)
else else
{ {
if (defaulted) if (defaulted)
{ fprintf (out,
rule = LAruleno[default_LA]; _(" %-4s\treduce using rule %d (%s)\n"),
fprintf (out, tags[i],
_(" %-4s\treduce using rule %d (%s)\n"), LAruleno[default_LA],
tags[i], rule, tags[rule_table[rule].lhs]); tags[rule_table[LAruleno[default_LA]].lhs]);
defaulted = 0; defaulted = 0;
}
rule = LAruleno[j];
fprintf (out, fprintf (out,
_(" %-4s\t[reduce using rule %d (%s)]\n"), _(" %-4s\t[reduce using rule %d (%s)]\n"),
tags[i], rule, tags[rule_table[rule].lhs]); tags[i],
LAruleno[j],
tags[rule_table[LAruleno[j]].lhs]);
} }
} }
fp3 += tokensetsize;
}
mask <<= 1;
if (mask == 0)
{
mask = 1;
/* We tried incrementing just fp1, and just fp2; both seem wrong.
It seems necessary to increment both in sync. */
fp1++;
fp2++;
} }
} }
+1 -2
View File
@@ -1,5 +1,5 @@
/* Find and resolve or report look-ahead conflicts for bison, /* Find and resolve or report look-ahead conflicts for bison,
Copyright 2000 Free Software Foundation, Inc. Copyright 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -29,6 +29,5 @@ void print_reductions PARAMS ((FILE*out, int state));
void free_conflicts PARAMS ((void)); void free_conflicts PARAMS ((void));
/* Were there conflicts? */ /* Were there conflicts? */
extern errs **err_table;
extern int expected_conflicts; extern int expected_conflicts;
#endif /* !CONFLICTS_H_ */ #endif /* !CONFLICTS_H_ */
+10 -19
View File
@@ -19,11 +19,6 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
/* set_derives finds, for each variable (nonterminal), which rules can
derive it. It sets up the value of derives so that derives[i -
ntokens] points to a vector of rule numbers, terminated with -1.
*/
#include "system.h" #include "system.h"
#include "getargs.h" #include "getargs.h"
#include "types.h" #include "types.h"
@@ -31,8 +26,7 @@
#include "gram.h" #include "gram.h"
#include "derives.h" #include "derives.h"
short **derives; short **derives = NULL;
static void static void
print_derives (void) print_derives (void)
@@ -51,7 +45,7 @@ print_derives (void)
fprintf (stderr, "\t\t%d:", *sp); fprintf (stderr, "\t\t%d:", *sp);
for (rhsp = ritem + rule_table[*sp].rhs; *rhsp > 0; ++rhsp) for (rhsp = ritem + rule_table[*sp].rhs; *rhsp > 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]); fprintf (stderr, " %s", tags[*rhsp]);
fputc ('\n', stderr); fprintf (stderr, " (rule %d)\n", -*rhsp);
} }
} }
@@ -63,7 +57,6 @@ void
set_derives (void) set_derives (void)
{ {
int i; int i;
int lhs;
shorts *p; shorts *p;
short *q; short *q;
shorts **dset; shorts **dset;
@@ -74,16 +67,14 @@ set_derives (void)
p = delts; p = delts;
for (i = nrules; i > 0; i--) for (i = nrules; i > 0; i--)
{ if (rule_table[i].useful)
lhs = rule_table[i].lhs; {
if (lhs >= 0) int lhs = rule_table[i].lhs;
{ p->next = dset[lhs];
p->next = dset[lhs]; p->value = i;
p->value = i; dset[lhs] = p;
dset[lhs] = p; p++;
p++; }
}
}
derives = XCALLOC (short *, nvars) - ntokens; derives = XCALLOC (short *, nvars) - ntokens;
q = XCALLOC (short, nvars + nrules); q = XCALLOC (short, nvars + nrules);
+4 -5
View File
@@ -1,5 +1,5 @@
/* Match rules with nonterminals for bison, /* Match rules with nonterminals for bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -21,12 +21,11 @@
#ifndef DERIVES_H_ #ifndef DERIVES_H_
# define DERIVES_H_ # define DERIVES_H_
/* DERIVES[SYMBOL - NTOKENS] points to a vector of the number of the
rules that SYMBOL derives, terminated with -1. */
extern short **derives; extern short **derives;
/* set_derives finds, for each variable (nonterminal), which rules can /* Compute DERIVES. */
derive it. It sets up the value of derives so that derives[i -
ntokens] points to a vector of rule numbers, terminated with -1.
*/
void set_derives PARAMS((void)); void set_derives PARAMS((void));
void free_derives PARAMS((void)); void free_derives PARAMS((void));
+116 -116
View File
@@ -1,5 +1,6 @@
/* Open and close files for bison, /* Open and close files for bison,
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -23,8 +24,14 @@
#include "getargs.h" #include "getargs.h"
#include "files.h" #include "files.h"
#include "gram.h" #include "gram.h"
#include "error.h"
#include "complain.h" #include "complain.h"
/* From basename.c. Almost a lie, as it returns a char *. */
const char *base_name PARAMS ((char const *name));
/* From xstrndup.c. */
char *xstrndup PARAMS ((const char *s, size_t n));
FILE *finput = NULL; FILE *finput = NULL;
struct obstack action_obstack; struct obstack action_obstack;
@@ -44,7 +51,7 @@ char *spec_defines_file = NULL; /* for --defines. */
char *infile = NULL; char *infile = NULL;
char *attrsfile = NULL; char *attrsfile = NULL;
static char *base_name = NULL; static char *full_base_name = NULL;
static char *short_base_name = NULL; static char *short_base_name = NULL;
/* C source file extension (the parser source). */ /* C source file extension (the parser source). */
@@ -57,7 +64,7 @@ const char *header_extension = NULL;
| Is SUFFIX ending STRING? | | Is SUFFIX ending STRING? |
`--------------------------*/ `--------------------------*/
static int int
strsuffix (const char *string, const char *suffix) strsuffix (const char *string, const char *suffix)
{ {
size_t string_len = strlen (string); size_t string_len = strlen (string);
@@ -111,10 +118,10 @@ compute_header_macro (void)
{ {
macro_name = XMALLOC (char, macro_name = XMALLOC (char,
strlen (prefix) + strlen (prefix) +
strlen (base_name) + strlen (full_base_name) +
strlen (header_extension) + 1); strlen (header_extension) + 1);
cp = stpcpy (macro_name, prefix); cp = stpcpy (macro_name, prefix);
cp = stpcpy (cp, base_name); cp = stpcpy (cp, full_base_name);
cp = stpcpy (cp, header_extension); cp = stpcpy (cp, header_extension);
} }
@@ -207,7 +214,8 @@ skeleton_find (const char *envvar, const char *skeleton_name)
{ {
const char *res = getenv (envvar); const char *res = getenv (envvar);
#if defined (MSDOS) || defined (_WIN32) #if (defined (MSDOS) && !defined(__DJGPP__)) || defined (_WIN32)
const char *cp = getenv ("INIT");
if (!res) if (!res)
{ {
/* Skeleton file name without path */ /* Skeleton file name without path */
@@ -220,7 +228,6 @@ skeleton_find (const char *envvar, const char *skeleton_name)
++skel_name; ++skel_name;
/* File doesn't exist in current directory; try in INIT directory. */ /* File doesn't exist in current directory; try in INIT directory. */
const char *cp = getenv ("INIT");
if (cp) if (cp)
{ {
res = XMALLOC (char, strlen (cp) + strlen (skel_name) + 2); res = XMALLOC (char, strlen (cp) + strlen (skel_name) + 2);
@@ -242,7 +249,7 @@ skeleton_find (const char *envvar, const char *skeleton_name)
strcpy (res + (cp - program_name), skel_name); strcpy (res + (cp - program_name), skel_name);
} }
} }
#endif /* defined (MSDOS) || defined (_WIN32) */ #endif /* (defined (MSDOS) && !defined (__DJGPP__)) || defined (_WIN32) */
if (!res) if (!res)
res = skeleton_name; res = skeleton_name;
@@ -273,27 +280,6 @@ tr (const char *in, char from, char to)
return (temp); return (temp);
} }
/* Gets the extension index in FILENAME. Returns 0 if fails to
find an extension. */
static int
get_extension_index (const char *filename)
{
int len;
len = strlen (filename);
if (filename[len-- - 1] == '.')
return (0);
while ((len > 0) && (filename[len - 1] != '.'))
if (filename[len - 1] == '/')
return (0);
else
len--;
return (len - 1);
}
/* Computes extensions from the grammar file extension. */ /* Computes extensions from the grammar file extension. */
static void static void
compute_exts_from_gf (const char *ext) compute_exts_from_gf (const char *ext)
@@ -316,14 +302,61 @@ compute_exts_from_src (const char *ext)
header_extension = tr (header_extension, 'C', 'H'); header_extension = tr (header_extension, 'C', 'H');
} }
/* Decompose FILENAME in four parts: *BASE, *TAB, and *EXT, the fourth
part, (the directory) is ranging from FILENAME to the char before
*BASE, so we don't need an additional parameter.
*EXT points to the last period in the basename, or NULL if none.
If there is no *EXT, *TAB is NULL. Otherwise, *TAB points to
`.tab' or `_tab' if present right before *EXT, or is NULL. *TAB
cannot be equal to *BASE.
None are allocated, they are simply pointers to parts of FILENAME.
Examples:
'/tmp/foo.tab.c' -> *BASE = 'foo.tab.c', *TAB = '.tab.c', *EXT =
'.c'
'foo.c' -> *BASE = 'foo.c', *TAB = NULL, *EXT = '.c'
'tab.c' -> *BASE = 'tab.c', *TAB = NULL, *EXT = '.c'
'.tab.c' -> *BASE = '.tab.c', *TAB = NULL, *EXT = '.c'
'foo.tab' -> *BASE = 'foo.tab', *TAB = NULL, *EXT = '.tab'
'foo_tab' -> *BASE = 'foo_tab', *TAB = NULL, *EXT = NULL
'foo' -> *BASE = 'foo', *TAB = NULL, *EXT = NULL. */
static void
filename_split (const char *filename,
const char **base, const char **tab, const char **ext)
{
*base = base_name (filename);
/* Look for the extension, i.e., look for the last dot. */
*ext = strrchr (*base, '.');
*tab = NULL;
/* If there is an exentension, check if there is a `.tab' part right
before. */
if (*ext
&& (*ext - *base) > (int) strlen (".tab")
&& (!strncmp (*ext - strlen (".tab"), ".tab", strlen (".tab"))
|| !strncmp (*ext - strlen ("_tab"), "_tab", strlen ("_tab"))))
*tab = *ext - strlen (".tab");
}
/* FIXME: Should use xstrndup. */ /* FIXME: Should use xstrndup. */
static void static void
compute_base_names (void) compute_base_names (void)
{ {
size_t base_length; const char *base, *tab, *ext;
size_t short_base_length;
size_t ext_index;
/* If --output=foo.c was specified (SPEC_OUTFILE == foo.c), /* If --output=foo.c was specified (SPEC_OUTFILE == foo.c),
BASE_NAME and SHORT_BASE_NAME are `foo'. BASE_NAME and SHORT_BASE_NAME are `foo'.
@@ -335,94 +368,64 @@ compute_base_names (void)
files, remove the ".c" or ".tab.c" suffix. */ files, remove the ".c" or ".tab.c" suffix. */
if (spec_outfile) if (spec_outfile)
{ {
#ifdef MSDOS filename_split (spec_outfile, &base, &tab, &ext);
strlwr (spec_outfile);
#endif /* MSDOS */
/* BASE_LENGTH includes ".tab" but not ".c". */
base_length = strlen (spec_outfile);
ext_index = get_extension_index (spec_outfile); /* The full base name goes up the EXT, excluding it. */
/* If the initial segment of extension contains 'c' or a 'C', I assume full_base_name =
that it is a C or C++ source file. */ xstrndup (spec_outfile,
if (ext_index) (strlen (spec_outfile) - (ext ? strlen (ext) : 0)));
ext_index = /* The short base name goes up to TAB, excluding it. */
(strspn (spec_outfile + ext_index + 1, "cC")) ? ext_index : 0; short_base_name =
if (ext_index) xstrndup (spec_outfile,
{ (strlen (spec_outfile)
base_length -= strlen (spec_outfile + ext_index); - (tab ? strlen (tab) : (ext ? strlen (ext) : 0))));
compute_exts_from_src (spec_outfile + ext_index);
}
base_name = strndup (spec_outfile, base_length); if (ext)
/* SHORT_BASE_LENGTH includes neither ".tab" nor ".c". */ compute_exts_from_src (ext);
short_base_length = base_length;
if (strsuffix (base_name, ".tab") || strsuffix (base_name, "_tab"))
short_base_length -= 4;
short_base_name = strndup (spec_outfile, short_base_length);
return;
} }
/* If --file-prefix=foo was specified, BASE_NAME and SHORT_BASE_NAME /* If --file-prefix=foo was specified, FULL_BASE_NAME = `foo.tab'
are `foo'. and SHORT_BASE_NAME = `foo'.
Construct names from it. */ Construct names from it. */
if (spec_file_prefix) else
{ {
#ifdef MSDOS if (spec_file_prefix)
strlwr (spec_file_prefix); {
#endif /* MSDOS */ /* If --file-prefix=foo was specified, SHORT_BASE_NAME =
short_base_name = xstrdup (spec_file_prefix); `foo'. */
base_name = XMALLOC (char, short_base_name = xstrdup (spec_file_prefix);
strlen (short_base_name) + strlen (EXT_TAB) + 1); }
stpcpy (stpcpy (base_name, short_base_name), EXT_TAB); else if (yacc_flag)
{
/* If --yacc, then the output is `y.tab.c'. */
short_base_name = xstrdup ("y");
}
else
{
/* Otherwise, the short base name is computed from the input
grammar: `foo.yy' => `foo'. */
filename_split (infile, &base, &tab, &ext);
short_base_name =
xstrndup (infile,
(strlen (infile) - (ext ? strlen (ext) : 0)));
}
/* Computes the extensions from the garmmar file name. */ /* In these cases, always append `.tab'. */
ext_index = get_extension_index (infile); full_base_name = XMALLOC (char,
/* If the initial segment of extension contains a 'y' or a 'Y', I assume strlen (short_base_name)
that it is a yacc or bison grammar file. */ + strlen (EXT_TAB) + 1);
if (ext_index) stpcpy (stpcpy (full_base_name, short_base_name), EXT_TAB);
ext_index = (strspn (infile + ext_index + 1, "yY")) ? ext_index : 0;
if (ext_index)
compute_exts_from_gf (infile + ext_index);
return; /* Computes the extensions from the grammar file name. */
filename_split (infile, &base, &tab, &ext);
if (ext && !yacc_flag)
compute_exts_from_gf (ext);
} }
/* If neither -o nor --file-prefix were specified, and the input
file is foo.y, BASE_NAME is `foo.tab', and SHORT_BASE_NAME is
`foo'.
If --yacc is used, do as if the input file was `y.y'. */
{
const char *name_base = yacc_flag ? "y.y" : infile;
/* BASE_LENGTH gets length of BASE_NAME, sans ".y" suffix if any. */
base_length = strlen (name_base);
ext_index = get_extension_index (name_base);
/* If the initial segment of extension contains a 'y' or a 'Y', I assume
that it is a yacc or bison grammar file. */
if (ext_index)
ext_index = (strspn (name_base + ext_index + 1, "yY")) ? ext_index : 0;
if (ext_index)
{
base_length -= strlen (name_base + ext_index);
compute_exts_from_gf (name_base + ext_index);
}
short_base_length = base_length;
short_base_name = strndup (name_base, short_base_length);
base_name = XMALLOC (char,
strlen (short_base_name) + strlen (EXT_TAB) + 1);
stpcpy (stpcpy (base_name, short_base_name), EXT_TAB);
return;
}
} }
/*-------------------------------------------------------. /*-------------------------------------------------------.
| Close the open files, compute the output files names. | | Close the open files, compute the output files names. |
`-------------------------------------------------------*/ `-------------------------------------------------------*/
@@ -440,7 +443,7 @@ compute_output_file_names (void)
/* It the defines filename if not given, we create it. */ /* It the defines filename if not given, we create it. */
if (!spec_defines_file) if (!spec_defines_file)
spec_defines_file = stringappend (base_name, header_extension); spec_defines_file = stringappend (full_base_name, header_extension);
/* It the graph filename if not given, we create it. */ /* It the graph filename if not given, we create it. */
if (!spec_graph_file) if (!spec_graph_file)
@@ -449,9 +452,7 @@ compute_output_file_names (void)
spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT); spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT);
attrsfile = stringappend (short_base_name, EXT_STYPE_H); attrsfile = stringappend (short_base_name, EXT_STYPE_H);
#ifndef MSDOS attrsfile = stringappend (attrsfile, EXT_TYPE (header_extension));
attrsfile = stringappend (attrsfile, header_extension);
#endif /* MSDOS */
} }
@@ -497,7 +498,8 @@ output_files (void)
if (spec_outfile) if (spec_outfile)
obstack_save (&table_obstack, spec_outfile); obstack_save (&table_obstack, spec_outfile);
else else
obstack_save (&table_obstack, stringappend (base_name, src_extension)); obstack_save (&table_obstack,
stringappend (full_base_name, src_extension));
obstack_free (&table_obstack, NULL); obstack_free (&table_obstack, NULL);
/* Output the header file if wanted. */ /* Output the header file if wanted. */
@@ -519,9 +521,7 @@ output_files (void)
obstack_save (&attrs_obstack, attrsfile); obstack_save (&attrs_obstack, attrsfile);
obstack_free (&attrs_obstack, NULL); obstack_free (&attrs_obstack, NULL);
temp_name = stringappend (short_base_name, EXT_GUARD_C); temp_name = stringappend (short_base_name, EXT_GUARD_C);
#ifndef MSDOS temp_name = stringappend (temp_name, EXT_TYPE (src_extension));
temp_name = stringappend (temp_name, src_extension);
#endif /* MSDOS */
obstack_save (&guard_obstack, temp_name); obstack_save (&guard_obstack, temp_name);
obstack_free (&guard_obstack, NULL); obstack_free (&guard_obstack, NULL);
} }
+7 -3
View File
@@ -1,7 +1,5 @@
#ifndef FILES_H_
# define FILES_H_
/* File names and variables for bison, /* File names and variables for bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2002 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -20,6 +18,9 @@
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#ifndef FILES_H_
# define FILES_H_
/* These two should be pathnames for opening the sample parser files. /* These two should be pathnames for opening the sample parser files.
When bison is installed, they should be absolute pathnames. When bison is installed, they should be absolute pathnames.
XPFILE1 and XPFILE2 normally come from config.h. */ XPFILE1 and XPFILE2 normally come from config.h. */
@@ -79,4 +80,7 @@ int xfclose PARAMS ((FILE *ptr));
const char *skeleton_find PARAMS ((const char *envvar, const char *skeleton_find PARAMS ((const char *envvar,
const char *skeleton_name)); const char *skeleton_name));
int strsuffix PARAMS ((const char *string, const char *suffix));
#endif /* !FILES_H_ */ #endif /* !FILES_H_ */
+21 -6
View File
@@ -144,7 +144,8 @@ bison (GNU Bison) %s"), VERSION);
putc ('\n', stream); putc ('\n', stream);
fputs (_("\ fputs (_("\
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"), Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n\
Free Software Foundation, Inc.\n"),
stream); stream);
fputs (_("\ fputs (_("\
@@ -159,6 +160,20 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
| Process the options. | | Process the options. |
`----------------------*/ `----------------------*/
/* Under plain DOS, there is no difference on the case. This can be
troublesome when looking for `.tab' etc. */
#ifdef MSDOS
# if defined (__DJGPP__)
/* Windows 9X and successors are case sensitive. */
# define STRLWR(String) ((String) ? (strlwr (String), (String)) : (String))
# define AS_FILE_NAME(File) ((pathconf ((File), _PC_NAME_MAX) > 12) ? (File) : STRLWR (File))
# else
# define AS_FILE_NAME(File) (strlwr (File), (File))
# endif
#else
# define AS_FILE_NAME(File) (File)
#endif
void void
getargs (int argc, char *argv[]) getargs (int argc, char *argv[])
{ {
@@ -186,7 +201,7 @@ getargs (int argc, char *argv[])
case 'g': case 'g':
/* Here, the -g and --graph=FILE options are differentiated. */ /* Here, the -g and --graph=FILE options are differentiated. */
graph_flag = 1; graph_flag = 1;
spec_graph_file = optarg; spec_graph_file = AS_FILE_NAME (optarg);
break; break;
case 'v': case 'v':
@@ -194,13 +209,13 @@ getargs (int argc, char *argv[])
break; break;
case 'S': case 'S':
skeleton = optarg; skeleton = AS_FILE_NAME (optarg);
break; break;
case 'd': case 'd':
/* Here, the -d and --defines options are differentiated. */ /* Here, the -d and --defines options are differentiated. */
defines_flag = 1; defines_flag = 1;
spec_defines_file = optarg; spec_defines_file = AS_FILE_NAME (optarg);
break; break;
case 'l': case 'l':
@@ -224,11 +239,11 @@ getargs (int argc, char *argv[])
break; break;
case 'o': case 'o':
spec_outfile = optarg; spec_outfile = AS_FILE_NAME (optarg);
break; break;
case 'b': case 'b':
spec_file_prefix = optarg; spec_file_prefix = AS_FILE_NAME (optarg);
break; break;
case 'p': case 'p':
+56 -19
View File
@@ -1,28 +1,27 @@
/* Allocate input grammar variables for bison, /* Allocate input grammar variables for bison,
Copyright 1984, 1986, 1989, 2001 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option) the Free Software Foundation; either version 2, or (at your option)
any later version. any later version.
Bison is distributed in the hope that it will be useful, Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "gram.h" #include "gram.h"
#include "reader.h"
void dummy PARAMS((void));
/* comments for these variables are in gram.h */ /* comments for these variables are in gram.h */
@@ -40,7 +39,6 @@ short *sprec = NULL;
short *rassoc = NULL; short *rassoc = NULL;
short *sassoc = NULL; short *sassoc = NULL;
short *token_translations = NULL; short *token_translations = NULL;
short *rline = NULL;
int start_symbol; int start_symbol;
@@ -52,10 +50,49 @@ int pure_parser;
int error_token_number; int error_token_number;
/* This is to avoid linker problems which occur on VMS when using GCC,
when the file in question contains data definitions only. */ /*------------------------.
| Dump RITEM for traces. |
`------------------------*/
void void
dummy (void) ritem_print (FILE *out)
{ {
int i;
fputs ("RITEM\n", out);
for (i = 0; ritem[i]; ++i)
if (ritem[i] > 0)
fprintf (out, " %s", tags[ritem[i]]);
else
fprintf (out, " (rule %d)\n", -ritem[i]);
fputs ("\n\n", out);
}
/*------------------------------------------.
| Return the size of the longest rule RHS. |
`------------------------------------------*/
size_t
ritem_longest_rhs (void)
{
short *itemp;
int length;
int max;
length = 0;
max = 0;
for (itemp = ritem; *itemp; itemp++)
if (*itemp > 0)
{
length++;
}
else
{
if (length > max)
max = length;
length = 0;
}
return max;
} }
+11
View File
@@ -59,6 +59,8 @@
RULE_TABLE[R].line -- the line where R was defined. RULE_TABLE[R].line -- the line where R was defined.
RULE_TABLE[R].useful -- TRUE iff the rule is used.
The right hand side is stored as symbol numbers in a portion of The right hand side is stored as symbol numbers in a portion of
RITEM. RITEM.
@@ -119,6 +121,7 @@ typedef struct rule_s
short precsym; short precsym;
short assoc; short assoc;
short line; short line;
bool useful;
} rule_t; } rule_t;
extern struct rule_s *rule_table; extern struct rule_s *rule_table;
@@ -144,4 +147,12 @@ extern int pure_parser;
/* ERROR_TOKEN_NUMBER is the token number of the error token. */ /* ERROR_TOKEN_NUMBER is the token number of the error token. */
extern int error_token_number; extern int error_token_number;
/* Dump RITEM for traces. */
void ritem_print PARAMS ((FILE *out));
/* Return the size of the longest rule RHS. */
size_t ritem_longest_rhs PARAMS ((void));
#endif /* !GRAM_H_ */ #endif /* !GRAM_H_ */
+185 -240
View File
@@ -31,6 +31,7 @@
#include "lalr.h" #include "lalr.h"
#include "nullable.h" #include "nullable.h"
#include "derives.h" #include "derives.h"
#include "getargs.h"
/* All the decorated states, indexed by the state number. Warning: /* All the decorated states, indexed by the state number. Warning:
there is a state_TABLE in LR0.c, but it is different and static. there is a state_TABLE in LR0.c, but it is different and static.
@@ -41,82 +42,69 @@ int tokensetsize;
short *LAruleno; short *LAruleno;
unsigned *LA; unsigned *LA;
static int ngotos;
short *goto_map; short *goto_map;
short *from_state; short *from_state;
short *to_state; short *to_state;
extern void berror PARAMS ((const char *)); /* And for the famous F variable, which name is so descriptive that a
static int infinity;
static int ngotos;
/* And for the famous F variable, which named is so descriptive that a
comment is hardly needed. <grin>. */ comment is hardly needed. <grin>. */
static unsigned *F = NULL; static unsigned *F = NULL;
#define F(Rule) (F + (Rule) * tokensetsize) #define F(Rule) (F + (Rule) * tokensetsize)
static short **includes; static short **includes;
static shorts **lookback; static shorts **lookback;
/*---------------------------------------------------------------.
| digraph & traverse. |
| |
| The following variables are used as common storage between the |
| two. |
`---------------------------------------------------------------*/
static short **R; static short **R;
static short *INDEX; static short *INDEX;
static short *VERTICES; static short *VERTICES;
static int top; static int top;
static int infinity;
static void static void
traverse (int i) traverse (int i)
{ {
unsigned *fp1;
unsigned *fp2;
unsigned *fp3;
int j; int j;
short *rp; size_t k;
int height; int height;
unsigned *base; size_t size = F (i + 1) - F(i);
VERTICES[++top] = i; VERTICES[++top] = i;
INDEX[i] = height = top; INDEX[i] = height = top;
base = F (i); if (R[i])
fp3 = F (i + 1); for (j = 0; R[i][j] >= 0; ++j)
{
if (INDEX[R[i][j]] == 0)
traverse (R[i][j]);
rp = R[i]; if (INDEX[i] > INDEX[R[i][j]])
if (rp) INDEX[i] = INDEX[R[i][j]];
{
while ((j = *rp++) >= 0)
{
if (INDEX[j] == 0)
traverse (j);
if (INDEX[i] > INDEX[j]) for (k = 0; k < size; ++k)
INDEX[i] = INDEX[j]; F (i)[k] |= F (R[i][j])[k];
}
fp1 = base;
fp2 = F (j);
while (fp1 < fp3)
*fp1++ |= *fp2++;
}
}
if (INDEX[i] == height) if (INDEX[i] == height)
{ for (;;)
for (;;) {
{ j = VERTICES[top--];
j = VERTICES[top--]; INDEX[j] = infinity;
INDEX[j] = infinity;
if (i == j) if (i == j)
break; break;
fp1 = base; for (k = 0; k < size; ++k)
fp2 = F (j); F (j)[k] = F (i)[k];
}
while (fp1 < fp3)
*fp2++ = *fp1++;
}
}
} }
@@ -168,13 +156,22 @@ set_state_table (void)
{ {
shifts *sp; shifts *sp;
for (sp = first_shift; sp; sp = sp->next) for (sp = first_shift; sp; sp = sp->next)
state_table[sp->number].shift_table = sp; state_table[sp->number].shifts = sp;
} }
{ {
reductions *rp; reductions *rp;
for (rp = first_reduction; rp; rp = rp->next) for (rp = first_reduction; rp; rp = rp->next)
state_table[rp->number].reduction_table = rp; state_table[rp->number].reductions = rp;
}
/* Pessimization, but simplification of the code: make sense all the
states have a shifts, even if reduced to 0 shifts. */
{
int i;
for (i = 0; i < nstates; i++)
if (!state_table[i].shifts)
state_table[i].shifts = shifts_new (0);
} }
/* Initializing the lookaheads members. Please note that it must be /* Initializing the lookaheads members. Please note that it must be
@@ -186,60 +183,29 @@ set_state_table (void)
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ {
int k; int k;
reductions *rp = state_table[i].reduction_table; reductions *rp = state_table[i].reductions;
shifts *sp = state_table[i].shift_table; shifts *sp = state_table[i].shifts;
state_table[i].lookaheads = count; state_table[i].lookaheads = count;
if (rp if (rp
&& (rp->nreds > 1 && (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
|| (sp && !ISVAR (state_table[sp->shifts[0]].accessing_symbol))))
count += rp->nreds; count += rp->nreds;
else else
state_table[i].consistent = 1; state_table[i].consistent = 1;
if (sp) for (k = 0; k < sp->nshifts; k++)
for (k = 0; k < sp->nshifts; k++) if (SHIFT_IS_ERROR (sp, k))
if (state_table[sp->shifts[k]].accessing_symbol {
== error_token_number) state_table[i].consistent = 0;
{ break;
state_table[i].consistent = 0; }
break;
}
} }
state_table[nstates].lookaheads = count; state_table[nstates].lookaheads = count;
} }
} }
/* Return the size of the longest ride hand side of the rules. */
static size_t
maxrhs (void)
{
short *itemp;
int length;
int max;
length = 0;
max = 0;
for (itemp = ritem; *itemp; itemp++)
{
if (*itemp > 0)
{
length++;
}
else
{
if (length > max)
max = length;
length = 0;
}
}
return max;
}
static void static void
initialize_LA (void) initialize_LA (void)
{ {
@@ -259,7 +225,7 @@ initialize_LA (void)
np = LAruleno; np = LAruleno;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
if (!state_table[i].consistent) if (!state_table[i].consistent)
if ((rp = state_table[i].reduction_table)) if ((rp = state_table[i].reductions))
for (j = 0; j < rp->nreds; j++) for (j = 0; j < rp->nreds; j++)
*np++ = rp->rules[j]; *np++ = rp->rules[j];
} }
@@ -281,21 +247,17 @@ set_goto_map (void)
ngotos = 0; ngotos = 0;
for (sp = first_shift; sp; sp = sp->next) for (sp = first_shift; sp; sp = sp->next)
{ if (sp->nshifts)
for (i = sp->nshifts - 1; i >= 0; i--) for (i = sp->nshifts - 1; i >= 0 && SHIFT_IS_GOTO (sp, i); --i)
{ {
symbol = state_table[sp->shifts[i]].accessing_symbol; symbol = state_table[sp->shifts[i]].accessing_symbol;
if (ISTOKEN (symbol))
break;
if (ngotos == MAXSHORT) if (ngotos == MAXSHORT)
fatal (_("too many gotos (max %d)"), MAXSHORT); fatal (_("too many gotos (max %d)"), MAXSHORT);
ngotos++; ngotos++;
goto_map[symbol]++; goto_map[symbol]++;
} }
}
k = 0; k = 0;
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
@@ -316,18 +278,16 @@ set_goto_map (void)
for (sp = first_shift; sp; sp = sp->next) for (sp = first_shift; sp; sp = sp->next)
{ {
state1 = sp->number; state1 = sp->number;
for (i = sp->nshifts - 1; i >= 0; i--) if (sp->nshifts)
{ for (i = sp->nshifts - 1; i >= 0 && SHIFT_IS_GOTO (sp, i); --i)
state2 = sp->shifts[i]; {
symbol = state_table[state2].accessing_symbol; state2 = sp->shifts[i];
symbol = state_table[state2].accessing_symbol;
if (ISTOKEN (symbol)) k = temp_map[symbol]++;
break; from_state[k] = state1;
to_state[k] = state2;
k = temp_map[symbol]++; }
from_state[k] = state1;
to_state[k] = state2;
}
} }
XFREE (temp_map + ntokens); XFREE (temp_map + ntokens);
@@ -371,64 +331,40 @@ map_goto (int state, int symbol)
static void static void
initialize_F (void) initialize_F (void)
{ {
short **reads = XCALLOC (short *, ngotos);
short *edge = XCALLOC (short, ngotos + 1);
int nedges = 0;
int i; int i;
int j;
int k;
shifts *sp;
short *edge;
unsigned *rowp;
short *rp;
short **reads;
int nedges;
int stateno;
int symbol;
int nwords;
nwords = ngotos * tokensetsize; F = XCALLOC (unsigned, ngotos * tokensetsize);
F = XCALLOC (unsigned, nwords);
reads = XCALLOC (short *, ngotos);
edge = XCALLOC (short, ngotos + 1);
nedges = 0;
rowp = F;
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ {
stateno = to_state[i]; int stateno = to_state[i];
sp = state_table[stateno].shift_table; shifts *sp = state_table[stateno].shifts;
if (sp) int j;
for (j = 0; j < sp->nshifts && SHIFT_IS_SHIFT (sp, j); j++)
{ {
k = sp->nshifts; int symbol = state_table[sp->shifts[j]].accessing_symbol;
SETBIT (F (i), symbol);
for (j = 0; j < k; j++)
{
symbol = state_table[sp->shifts[j]].accessing_symbol;
if (ISVAR (symbol))
break;
SETBIT (rowp, symbol);
}
for (; j < k; j++)
{
symbol = state_table[sp->shifts[j]].accessing_symbol;
if (nullable[symbol])
edge[nedges++] = map_goto (stateno, symbol);
}
if (nedges)
{
reads[i] = rp = XCALLOC (short, nedges + 1);
for (j = 0; j < nedges; j++)
rp[j] = edge[j];
rp[nedges] = -1;
nedges = 0;
}
} }
rowp += tokensetsize; for (; j < sp->nshifts; j++)
{
int symbol = state_table[sp->shifts[j]].accessing_symbol;
if (nullable[symbol])
edge[nedges++] = map_goto (stateno, symbol);
}
if (nedges)
{
reads[i] = XCALLOC (short, nedges + 1);
shortcpy (reads[i], edge, nedges);
reads[i][nedges] = -1;
nedges = 0;
}
} }
digraph (reads); digraph (reads);
@@ -469,56 +405,87 @@ add_lookback_edge (int stateno, int ruleno, int gotono)
} }
static void
matrix_print (FILE *out, short **matrix, int n)
{
int i, j;
for (i = 0; i < n; ++i)
{
fprintf (out, "%3d: ", i);
if (matrix[i])
for (j = 0; matrix[i][j] != -1; ++j)
fprintf (out, "%3d ", matrix[i][j]);
fputc ('\n', out);
}
fputc ('\n', out);
}
/*-------------------------------------------------------------------.
| Return the transpose of R_ARG, of size N. Destroy R_ARG, as it is |
| replaced with the result. |
| |
| R_ARG[I] is NULL or a -1 terminated list of numbers. |
| |
| RESULT[NUM] is NULL or the -1 terminated list of the I such as NUM |
| is in R_ARG[I]. |
`-------------------------------------------------------------------*/
static short ** static short **
transpose (short **R_arg, int n) transpose (short **R_arg, int n)
{ {
short **new_R; /* The result. */
short **temp_R; short **new_R = XCALLOC (short *, n);
short *nedges; /* END_R[I] -- next entry of NEW_R[I]. */
short *sp; short **end_R = XCALLOC (short *, n);
int i; /* NEDGES[I] -- total size of NEW_R[I]. */
int k; short *nedges = XCALLOC (short, n);
int i, j;
nedges = XCALLOC (short, n); if (trace_flag)
for (i = 0; i < n; i++)
{ {
sp = R_arg[i]; fputs ("transpose: input\n", stderr);
if (sp) matrix_print (stderr, R_arg, n);
{
while (*sp >= 0)
nedges[*sp++]++;
}
} }
new_R = XCALLOC (short *, n); /* Count. */
temp_R = XCALLOC (short *, n);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ if (R_arg[i])
k = nedges[i]; for (j = 0; R_arg[i][j] >= 0; ++j)
if (k > 0) ++nedges[R_arg[i][j]];
{
sp = XCALLOC (short, k + 1);
new_R[i] = sp;
temp_R[i] = sp;
sp[k] = -1;
}
}
XFREE (nedges);
/* Allocate. */
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ if (nedges[i] > 0)
sp = R_arg[i]; {
if (sp) short *sp = XCALLOC (short, nedges[i] + 1);
{ sp[nedges[i]] = -1;
while (*sp >= 0) new_R[i] = sp;
*temp_R[*sp++]++ = i; end_R[i] = sp;
} }
}
XFREE (temp_R); /* Store. */
for (i = 0; i < n; i++)
if (R_arg[i])
for (j = 0; R_arg[i][j] >= 0; ++j)
{
*end_R[R_arg[i][j]] = i;
++end_R[R_arg[i][j]];
}
free (nedges);
free (end_R);
/* Free the input: it is replaced with the result. */
for (i = 0; i < n; i++)
XFREE (R_arg[i]);
free (R_arg);
if (trace_flag)
{
fputs ("transpose: output\n", stderr);
matrix_print (stderr, new_R, n);
}
return new_R; return new_R;
} }
@@ -527,50 +494,35 @@ transpose (short **R_arg, int n)
static void static void
build_relations (void) build_relations (void)
{ {
short *edge = XCALLOC (short, ngotos + 1);
short *states = XCALLOC (short, ritem_longest_rhs () + 1);
int i; int i;
int j;
int k;
short *rulep;
short *rp;
shifts *sp;
int length;
int nedges;
int done;
int state1;
int stateno;
int symbol1;
int symbol2;
short *shortp;
short *edge;
short *states;
short **new_includes;
includes = XCALLOC (short *, ngotos); includes = XCALLOC (short *, ngotos);
edge = XCALLOC (short, ngotos + 1);
states = XCALLOC (short, maxrhs () + 1);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ {
nedges = 0; int nedges = 0;
state1 = from_state[i]; int state1 = from_state[i];
symbol1 = state_table[to_state[i]].accessing_symbol; int symbol1 = state_table[to_state[i]].accessing_symbol;
short *rulep;
for (rulep = derives[symbol1]; *rulep > 0; rulep++) for (rulep = derives[symbol1]; *rulep > 0; rulep++)
{ {
length = 1; int done;
int length = 1;
int stateno = state1;
short *rp;
states[0] = state1; states[0] = state1;
stateno = state1;
for (rp = ritem + rule_table[*rulep].rhs; *rp > 0; rp++) for (rp = ritem + rule_table[*rulep].rhs; *rp > 0; rp++)
{ {
symbol2 = *rp; shifts *sp = state_table[stateno].shifts;
sp = state_table[stateno].shift_table; int j;
k = sp->nshifts; for (j = 0; j < sp->nshifts; j++)
for (j = 0; j < k; j++)
{ {
stateno = sp->shifts[j]; stateno = sp->shifts[j];
if (state_table[stateno].accessing_symbol == symbol2) if (state_table[stateno].accessing_symbol == *rp)
break; break;
} }
@@ -599,25 +551,18 @@ build_relations (void)
if (nedges) if (nedges)
{ {
includes[i] = shortp = XCALLOC (short, nedges + 1); int j;
includes[i] = XCALLOC (short, nedges + 1);
for (j = 0; j < nedges; j++) for (j = 0; j < nedges; j++)
shortp[j] = edge[j]; includes[i][j] = edge[j];
shortp[nedges] = -1; includes[i][nedges] = -1;
} }
} }
new_includes = transpose (includes, ngotos);
for (i = 0; i < ngotos; i++)
if (includes[i])
XFREE (includes[i]);
XFREE (includes);
includes = new_includes;
XFREE (edge); XFREE (edge);
XFREE (states); XFREE (states);
includes = transpose (includes, ngotos);
} }
@@ -645,10 +590,10 @@ compute_lookaheads (void)
for (i = 0; i < state_table[nstates].lookaheads; i++) for (i = 0; i < state_table[nstates].lookaheads; i++)
for (sp = lookback[i]; sp; sp = sp->next) for (sp = lookback[i]; sp; sp = sp->next)
{ {
unsigned *fp1 = LA (i); int size = LA (i + 1) - LA (i);
unsigned *fp2 = F (sp->value); int j;
while (fp1 < LA (i + 1)) for (j = 0; j < size; ++j)
*fp1++ |= *fp2++; LA (i)[j] |= F (sp->value)[j];
} }
/* Free LOOKBACK. */ /* Free LOOKBACK. */
+3 -2
View File
@@ -78,8 +78,9 @@ typedef struct state_s
/* Its accessing symbol. */ /* Its accessing symbol. */
short accessing_symbol; short accessing_symbol;
shifts *shift_table; shifts *shifts;
reductions *reduction_table; reductions *reductions;
errs *errs;
/* Nonzero if no lookahead is needed to decide what to do in state /* Nonzero if no lookahead is needed to decide what to do in state
S. */ S. */
+17 -6
View File
@@ -590,43 +590,54 @@ parse_percent_token (void)
size_t arg_offset = 0; size_t arg_offset = 0;
int c = getc (finput); int c = getc (finput);
obstack_1grow (&token_obstack, '%');
obstack_1grow (&token_obstack, c);
switch (c) switch (c)
{ {
case '%': case '%':
token_buffer = obstack_finish (&token_obstack);
return tok_two_percents; return tok_two_percents;
case '{': case '{':
token_buffer = obstack_finish (&token_obstack);
return tok_percent_left_curly; return tok_percent_left_curly;
/* FIXME: Who the heck are those 5 guys!?! `%<' = `%left'!!! /* The following guys are here for backward compatibility with
Let's ask for there removal. */ very ancient Yacc versions. The paper of Johnson mentions
them (as ancient :). */
case '<': case '<':
token_buffer = obstack_finish (&token_obstack);
return tok_left; return tok_left;
case '>': case '>':
token_buffer = obstack_finish (&token_obstack);
return tok_right; return tok_right;
case '2': case '2':
token_buffer = obstack_finish (&token_obstack);
return tok_nonassoc; return tok_nonassoc;
case '0': case '0':
token_buffer = obstack_finish (&token_obstack);
return tok_token; return tok_token;
case '=': case '=':
token_buffer = obstack_finish (&token_obstack);
return tok_prec; return tok_prec;
} }
if (!isalpha (c)) if (!isalpha (c))
return tok_illegal; {
token_buffer = obstack_finish (&token_obstack);
return tok_illegal;
}
obstack_1grow (&token_obstack, '%'); while (c = getc (finput), isalpha (c) || c == '_' || c == '-')
while (isalpha (c) || c == '_' || c == '-')
{ {
if (c == '_') if (c == '_')
c = '-'; c = '-';
obstack_1grow (&token_obstack, c); obstack_1grow (&token_obstack, c);
c = getc (finput);
} }
/* %DIRECTIVE="ARG". Separate into /* %DIRECTIVE="ARG". Separate into
+2 -13
View File
@@ -1,5 +1,5 @@
/* Top level entry point of bison, /* Top level entry point of bison,
Copyright 1984, 1986, 1989, 1992, 1995, 2000 Copyright 1984, 1986, 1989, 1992, 1995, 2000, 2001
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -40,7 +40,6 @@
/* The name this program was run with, for messages. */ /* The name this program was run with, for messages. */
char *program_name; char *program_name;
extern void berror PARAMS((const char *));
int int
main (int argc, char *argv[]) main (int argc, char *argv[])
@@ -62,8 +61,7 @@ main (int argc, char *argv[])
if (complain_message_count) if (complain_message_count)
exit (1); exit (1);
/* Find useless nonterminals and productions and reduce the grammar. /* Find useless nonterminals and productions and reduce the grammar. */
In file reduce.c. */
reduce_grammar (); reduce_grammar ();
/* Record other info about the grammar. In files derives and /* Record other info about the grammar. In files derives and
@@ -125,12 +123,3 @@ main (int argc, char *argv[])
return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS; return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS;
} }
/* Abort for an internal error denoted by string S. */
void
berror (const char *s)
{
fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
abort ();
}
+47 -58
View File
@@ -28,6 +28,7 @@
#include "reader.h" #include "reader.h"
#include "types.h" #include "types.h"
#include "gram.h" #include "gram.h"
#include "reduce.h"
#include "nullable.h" #include "nullable.h"
char *nullable = NULL; char *nullable = NULL;
@@ -45,87 +46,75 @@ nullable_print (FILE *out)
void void
set_nullable (void) set_nullable (void)
{ {
short *r; int ruleno;
short *s1; short *s1;
short *s2; short *s2;
shorts *p; shorts *p;
short *squeue; short *squeue = XCALLOC (short, nvars);
short *rcount; short *rcount = XCALLOC (short, nrules + 1);
shorts **rsets; /* RITEM contains all the rules, including useless productions.
shorts *relts; Hence we must allocate room for useless nonterminals too. */
shorts **rsets = XCALLOC (shorts *, nvars) - ntokens;
/* This is said to be more elements than we actually use.
Supposedly nitems - nrules is enough. But why take the risk? */
shorts *relts = XCALLOC (shorts, nitems + nvars + 1);
if (trace_flag) if (trace_flag)
fprintf (stderr, "Entering set_nullable\n"); fprintf (stderr, "Entering set_nullable\n");
nullable = XCALLOC (char, nvars) - ntokens; nullable = XCALLOC (char, nvars) - ntokens;
squeue = XCALLOC (short, nvars);
s1 = s2 = squeue; s1 = s2 = squeue;
rcount = XCALLOC (short, nrules + 1);
rsets = XCALLOC (shorts *, nvars) - ntokens;
/* This is said to be more elements than we actually use.
Supposedly nitems - nrules is enough.
But why take the risk? */
relts = XCALLOC (shorts, nitems + nvars + 1);
p = relts; p = relts;
r = ritem; for (ruleno = 1; ruleno < nrules + 1; ++ruleno)
while (*r) if (rule_table[ruleno].useful)
{ {
if (*r < 0) if (ritem[rule_table[ruleno].rhs] > 0)
{ {
int symbol = rule_table[-(*r++)].lhs; /* This rule has a non empty RHS. */
if (symbol >= 0 && !nullable[symbol]) short *r;
{ int any_tokens = 0;
nullable[symbol] = 1; for (r = ritem + rule_table[ruleno].rhs; *r > 0; ++r)
*s2++ = symbol; if (ISTOKEN (*r))
} any_tokens = 1;
}
else
{
int any_tokens = 0;
int symbol;
short *r1 = r;
for (symbol = *r++; symbol > 0; symbol = *r++)
if (ISTOKEN (symbol))
any_tokens = 1;
if (!any_tokens) /* This rule has only nonterminals: schedule it for the second
{ pass. */
int ruleno = -symbol; if (!any_tokens)
r = r1; for (r = ritem + rule_table[ruleno].rhs; *r > 0; ++r)
for (symbol = *r++; symbol > 0; symbol = *r++)
{ {
rcount[ruleno]++; rcount[ruleno]++;
p->next = rsets[symbol]; p->next = rsets[*r];
p->value = ruleno; p->value = ruleno;
rsets[symbol] = p; rsets[*r] = p;
p++; p++;
} }
} }
} else
} {
/* This rule has an empty RHS. */
assert (ritem[rule_table[ruleno].rhs] == -ruleno);
if (rule_table[ruleno].useful && !nullable[rule_table[ruleno].lhs])
{
nullable[rule_table[ruleno].lhs] = 1;
*s2++ = rule_table[ruleno].lhs;
}
}
}
while (s1 < s2) while (s1 < s2)
{ for (p = rsets[*s1++]; p; p = p->next)
p = rsets[*s1++]; {
while (p) ruleno = p->value;
{ if (--rcount[ruleno] == 0)
int ruleno = p->value; if (rule_table[ruleno].useful && !nullable[rule_table[ruleno].lhs])
p = p->next;
if (--rcount[ruleno] == 0)
{ {
int symbol = rule_table[ruleno].lhs; nullable[rule_table[ruleno].lhs] = 1;
if (symbol >= 0 && !nullable[symbol]) *s2++ = rule_table[ruleno].lhs;
{
nullable[symbol] = 1;
*s2++ = symbol;
}
} }
} }
}
XFREE (squeue); XFREE (squeue);
XFREE (rcount); XFREE (rcount);
+39 -71
View File
@@ -1,5 +1,7 @@
/* Output the generated parsing program for bison, /* Output the generated parsing program for bison,
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001 Free Software
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -103,9 +105,6 @@
#include "reader.h" #include "reader.h"
#include "conflicts.h" #include "conflicts.h"
extern void berror PARAMS((const char *));
static int nvectors; static int nvectors;
static int nentries; static int nentries;
@@ -132,7 +131,7 @@ output_short_or_char_table (struct obstack *oout,
const char *table_name, const char *table_name,
short *short_table, short *short_table,
short first_value, short first_value,
short begin, short end) int begin, int end)
{ {
int i, j; int i, j;
@@ -170,7 +169,7 @@ output_short_table (struct obstack *oout,
const char *table_name, const char *table_name,
short *short_table, short *short_table,
short first_value, short first_value,
short begin, short end) int begin, int end)
{ {
output_short_or_char_table (oout, comment, "short", table_name, short_table, output_short_or_char_table (oout, comment, "short", table_name, short_table,
first_value, begin, end); first_value, begin, end);
@@ -317,7 +316,7 @@ output_gram (void)
yyprhs and yyrhs are needed only for yydebug. */ yyprhs and yyrhs are needed only for yydebug. */
/* With the no_parser option, all tables are generated */ /* With the no_parser option, all tables are generated */
if (!semantic_parser && !no_parser_flag) if (!semantic_parser && !no_parser_flag)
obstack_sgrow (&table_obstack, "\n#if YYDEBUG != 0\n"); obstack_sgrow (&table_obstack, "\n#if YYDEBUG\n");
{ {
int i; int i;
@@ -373,7 +372,7 @@ output_rule_data (void)
short *short_tab = NULL; short *short_tab = NULL;
obstack_sgrow (&table_obstack, "\n\ obstack_sgrow (&table_obstack, "\n\
#if YYDEBUG != 0\n"); #if YYDEBUG\n");
{ {
short *values = XCALLOC (short, nrules + 1); short *values = XCALLOC (short, nrules + 1);
@@ -401,7 +400,7 @@ output_rule_data (void)
/* Output the table of symbol names. */ /* Output the table of symbol names. */
if (!token_table_flag && !no_parser_flag) if (!token_table_flag && !no_parser_flag)
obstack_sgrow (&table_obstack, obstack_sgrow (&table_obstack,
"\n#if YYDEBUG != 0 || defined YYERROR_VERBOSE\n\n"); "\n#if (YYDEBUG) || defined YYERROR_VERBOSE\n\n");
obstack_sgrow (&table_obstack, "\ obstack_sgrow (&table_obstack, "\
/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */\n"); /* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */\n");
obstack_sgrow (&table_obstack, obstack_sgrow (&table_obstack,
@@ -453,7 +452,7 @@ output_rule_data (void)
j += strsize; j += strsize;
} }
/* add a NULL entry to list of tokens */ /* add a NULL entry to list of tokens */
obstack_sgrow (&table_obstack, "NULL\n};\n"); obstack_sgrow (&table_obstack, "0\n};\n");
if (!token_table_flag && !no_parser_flag) if (!token_table_flag && !no_parser_flag)
obstack_sgrow (&table_obstack, "#endif\n\n"); obstack_sgrow (&table_obstack, "#endif\n\n");
@@ -529,15 +528,11 @@ action_row (int state)
int k; int k;
int m = 0; int m = 0;
int n = 0; int n = 0;
int count;
int default_rule; int default_rule;
int nreds; int nreds;
int max;
int rule; int rule;
int shift_state; int shift_state;
int symbol; int symbol;
unsigned mask;
unsigned *wordp;
reductions *redp; reductions *redp;
shifts *shiftp; shifts *shiftp;
errs *errp; errs *errp;
@@ -548,7 +543,7 @@ action_row (int state)
default_rule = 0; default_rule = 0;
nreds = 0; nreds = 0;
redp = state_table[state].reduction_table; redp = state_table[state].reductions;
if (redp) if (redp)
{ {
@@ -562,65 +557,42 @@ action_row (int state)
n = state_table[state + 1].lookaheads; n = state_table[state + 1].lookaheads;
for (i = n - 1; i >= m; i--) for (i = n - 1; i >= m; i--)
{ /* and find each token which the rule finds acceptable
rule = -LAruleno[i]; to come next */
wordp = LA (i); for (j = 0; j < ntokens; j++)
mask = 1; /* and record this rule as the rule to use if that
token follows. */
/* and find each token which the rule finds acceptable if (BITISSET (LA (i), j))
to come next */ actrow[j] = -LAruleno[i];
for (j = 0; j < ntokens; j++)
{
/* and record this rule as the rule to use if that
token follows. */
if (mask & *wordp)
actrow[j] = rule;
mask <<= 1;
if (mask == 0)
{
mask = 1;
wordp++;
}
}
}
} }
} }
shiftp = state_table[state].shift_table;
/* Now see which tokens are allowed for shifts in this state. For /* Now see which tokens are allowed for shifts in this state. For
them, record the shift as the thing to do. So shift is preferred them, record the shift as the thing to do. So shift is preferred
to reduce. */ to reduce. */
shiftp = state_table[state].shifts;
if (shiftp) for (i = 0; i < shiftp->nshifts; i++)
{ {
k = shiftp->nshifts; shift_state = shiftp->shifts[i];
if (!shift_state)
continue;
for (i = 0; i < k; i++) symbol = state_table[shift_state].accessing_symbol;
{
shift_state = shiftp->shifts[i];
if (!shift_state)
continue;
symbol = state_table[shift_state].accessing_symbol; if (ISVAR (symbol))
break;
if (ISVAR (symbol)) actrow[symbol] = shift_state;
break;
actrow[symbol] = shift_state; /* Do not use any default reduction if there is a shift for
error */
/* Do not use any default reduction if there is a shift for if (symbol == error_token_number)
error */ nodefault = 1;
if (symbol == error_token_number)
nodefault = 1;
}
} }
errp = err_table[state];
/* See which tokens are an explicit error in this state (due to /* See which tokens are an explicit error in this state (due to
%nonassoc). For them, record MINSHORT as the action. */ %nonassoc). For them, record MINSHORT as the action. */
errp = state_table[state].errs;
if (errp) if (errp)
{ {
@@ -642,10 +614,10 @@ action_row (int state)
default_rule = redp->rules[0]; default_rule = redp->rules[0];
else else
{ {
max = 0; int max = 0;
for (i = m; i < n; i++) for (i = m; i < n; i++)
{ {
count = 0; int count = 0;
rule = -LAruleno[i]; rule = -LAruleno[i];
for (j = 0; j < ntokens; j++) for (j = 0; j < ntokens; j++)
@@ -1006,9 +978,9 @@ pack_vector (int vector)
return j; return j;
} }
} }
#define pack_vector_succeeded 0
berror ("pack_vector"); assert (pack_vector_succeeded);
return 0; /* JF keep lint happy */ return 0;
} }
@@ -1296,20 +1268,16 @@ output (void)
obstack_grow (&table_obstack, obstack_finish (&attrs_obstack), size); obstack_grow (&table_obstack, obstack_finish (&attrs_obstack), size);
} }
reader_output_yylsp (&table_obstack); reader_output_yylsp (&table_obstack);
if (debug_flag) obstack_fgrow1 (&table_obstack, "\
obstack_sgrow (&table_obstack, "\
#ifndef YYDEBUG\n\ #ifndef YYDEBUG\n\
# define YYDEBUG 1\n\ # define YYDEBUG %d\n\
#endif\n\ #endif\n\
\n"); \n", debug_flag);
if (semantic_parser) if (semantic_parser)
obstack_fgrow1 (&table_obstack, "#include %s\n", obstack_fgrow1 (&table_obstack, "#include %s\n",
quotearg_style (c_quoting_style, attrsfile)); quotearg_style (c_quoting_style, attrsfile));
if (!no_parser_flag)
obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n");
LIST_FREE (core, first_state); LIST_FREE (core, first_state);
output_defines (); output_defines ();
output_token_translations (); output_token_translations ();
+89 -80
View File
@@ -30,6 +30,7 @@
#include "reader.h" #include "reader.h"
#include "print.h" #include "print.h"
#include "reduce.h" #include "reduce.h"
#include "closure.h"
#if 0 #if 0
static void static void
@@ -48,51 +49,60 @@ static void
print_core (FILE *out, int state) print_core (FILE *out, int state)
{ {
int i; int i;
core *statep = state_table[state].state; short *sitems = state_table[state].state->items;
int snitems = state_table[state].state->nitems;
if (!statep->nitems) /* New experimental feature: if TRACE_FLAGS output all the items of
return; a state, not only its kernel. */
if (trace_flag)
for (i = 0; i < statep->nitems; i++)
{ {
short *sp; closure (sitems, snitems);
short *sp1; sitems = itemset;
int rule; snitems = nitemset;
sp1 = sp = ritem + statep->items[i];
while (*sp > 0)
sp++;
rule = -(*sp);
fprintf (out, " %s -> ", tags[rule_table[rule].lhs]);
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
fprintf (out, "%s ", tags[*sp]);
fputc ('.', out);
for (/* Nothing */; *sp > 0; ++sp)
fprintf (out, " %s", tags[*sp]);
fprintf (out, _(" (rule %d)"), rule);
fputc ('\n', out);
} }
fputc ('\n', out); if (snitems)
{
for (i = 0; i < snitems; i++)
{
short *sp;
short *sp1;
int rule;
sp1 = sp = ritem + sitems[i];
while (*sp > 0)
sp++;
rule = -(*sp);
fprintf (out, " %s -> ", tags[rule_table[rule].lhs]);
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
fprintf (out, "%s ", tags[*sp]);
fputc ('.', out);
for (/* Nothing */; *sp > 0; ++sp)
fprintf (out, " %s", tags[*sp]);
fprintf (out, _(" (rule %d)"), rule);
fputc ('\n', out);
}
fputc ('\n', out);
}
} }
static void static void
print_actions (FILE *out, int state) print_actions (FILE *out, int state)
{ {
int i; int i;
int k;
shifts *shiftp = state_table[state].shift_table; shifts *shiftp = state_table[state].shifts;
reductions *redp = state_table[state].reduction_table; reductions *redp = state_table[state].reductions;
errs *errp = err_table[state]; errs *errp = state_table[state].errs;
if (!shiftp && !redp) if (!shiftp->nshifts && !redp)
{ {
if (final_state == state) if (final_state == state)
fprintf (out, _(" $default\taccept\n")); fprintf (out, _(" $default\taccept\n"));
@@ -101,37 +111,25 @@ print_actions (FILE *out, int state)
return; return;
} }
if (shiftp) for (i = 0; i < shiftp->nshifts; i++)
{ if (!SHIFT_IS_DISABLED (shiftp, i))
k = shiftp->nshifts; {
int state1 = shiftp->shifts[i];
int symbol = state_table[state1].accessing_symbol;
/* The following line used to be turned off. */
if (ISVAR (symbol))
break;
if (symbol == 0) /* I.e. strcmp(tags[symbol],"$")==0 */
fprintf (out,
_(" $ \tgo to state %d\n"), state1);
else
fprintf (out,
_(" %-4s\tshift, and go to state %d\n"),
tags[symbol], state1);
}
for (i = 0; i < k; i++) if (i > 0)
{ fputc ('\n', out);
int symbol;
int state1 = shiftp->shifts[i];
if (!state1)
continue;
symbol = state_table[state1].accessing_symbol;
/* The following line used to be turned off. */
if (ISVAR (symbol))
break;
if (symbol == 0) /* I.e. strcmp(tags[symbol],"$")==0 */
fprintf (out,
_(" $ \tgo to state %d\n"), state1);
else
fprintf (out,
_(" %-4s\tshift, and go to state %d\n"),
tags[symbol], state1);
}
if (i > 0)
fputc ('\n', out);
}
else
{
i = 0;
k = 0;
}
if (errp) if (errp)
{ {
@@ -161,18 +159,16 @@ print_actions (FILE *out, int state)
print_reductions (out, state); print_reductions (out, state);
} }
if (i < k) if (i < shiftp->nshifts)
{ {
for (; i < k; i++) for (; i < shiftp->nshifts; i++)
{ if (!SHIFT_IS_DISABLED (shiftp, i))
int symbol; {
int state1 = shiftp->shifts[i]; int state1 = shiftp->shifts[i];
if (!state1) int symbol = state_table[state1].accessing_symbol;
continue; fprintf (out, _(" %-4s\tgo to state %d\n"),
symbol = state_table[state1].accessing_symbol; tags[symbol], state1);
fprintf (out, _(" %-4s\tgo to state %d\n"), }
tags[symbol], state1);
}
fputc ('\n', out); fputc ('\n', out);
} }
@@ -181,11 +177,11 @@ print_actions (FILE *out, int state)
static void static void
print_state (FILE *out, int state) print_state (FILE *out, int state)
{ {
fputs ("\n\n", out);
fprintf (out, _("state %d"), state); fprintf (out, _("state %d"), state);
fputs ("\n\n", out); fputs ("\n\n", out);
print_core (out, state); print_core (out, state);
print_actions (out, state); print_actions (out, state);
fputs ("\n\n", out);
} }
/*-----------------------------------------. /*-----------------------------------------.
@@ -212,11 +208,11 @@ print_grammar (FILE *out)
int column = 0; int column = 0;
/* rule # : LHS -> RHS */ /* rule # : LHS -> RHS */
fprintf (out, "\n%s\n\n", _("Grammar")); fprintf (out, "%s\n\n", _("Grammar"));
fprintf (out, " %s\n", _("Number, Line, Rule")); fprintf (out, " %s\n", _("Number, Line, Rule"));
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
/* Don't print rules disabled in reduce_grammar_tables. */ /* Don't print rules disabled in reduce_grammar_tables. */
if (rule_table[i].lhs >= 0) if (rule_table[i].useful)
{ {
fprintf (out, _(" %3d %3d %s ->"), fprintf (out, _(" %3d %3d %s ->"),
i, rule_table[i].line, tags[rule_table[i].lhs]); i, rule_table[i].line, tags[rule_table[i].lhs]);
@@ -228,9 +224,11 @@ print_grammar (FILE *out)
fprintf (out, " /* %s */", _("empty")); fprintf (out, " /* %s */", _("empty"));
fputc ('\n', out); fputc ('\n', out);
} }
fputs ("\n\n", out);
/* TERMINAL (type #) : rule #s terminal is on RHS */ /* TERMINAL (type #) : rule #s terminal is on RHS */
fprintf (out, "\n%s\n\n", _("Terminals, with rules where they appear")); fprintf (out, "%s\n\n", _("Terminals, with rules where they appear"));
fprintf (out, "%s (-1)\n", tags[0]); fprintf (out, "%s (-1)\n", tags[0]);
for (i = 0; i <= max_user_token_number; i++) for (i = 0; i <= max_user_token_number; i++)
@@ -252,9 +250,10 @@ print_grammar (FILE *out)
} }
fprintf (out, "%s\n", buffer); fprintf (out, "%s\n", buffer);
} }
fputs ("\n\n", out);
fprintf (out, "\n%s\n\n",
_("Nonterminals, with rules where they appear")); fprintf (out, "%s\n\n", _("Nonterminals, with rules where they appear"));
for (i = ntokens; i <= nsyms - 1; i++) for (i = ntokens; i <= nsyms - 1; i++)
{ {
int left_count = 0, right_count = 0; int left_count = 0, right_count = 0;
@@ -309,6 +308,7 @@ print_grammar (FILE *out)
} }
fprintf (out, "%s\n", buffer); fprintf (out, "%s\n", buffer);
} }
fputs ("\n\n", out);
} }
void void
@@ -324,14 +324,23 @@ print_results (void)
size_t size = obstack_object_size (&output_obstack); size_t size = obstack_object_size (&output_obstack);
fwrite (obstack_finish (&output_obstack), 1, size, out); fwrite (obstack_finish (&output_obstack), 1, size, out);
if (size)
fputs ("\n\n", out);
reduce_output (out); reduce_output (out);
conflicts_output (out); conflicts_output (out);
print_grammar (out); print_grammar (out);
/* New experimental feature: output all the items of a state,
not only its kernel. Requires to run closure, which need
memory allocation/deallocation. */
if (trace_flag)
new_closure (nitems);
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
print_state (out, i); print_state (out, i);
if (trace_flag)
free_closure ();
xfclose (out); xfclose (out);
} }
+31 -53
View File
@@ -84,20 +84,17 @@ static void
print_actions (int state, const char *node_name) print_actions (int state, const char *node_name)
{ {
int i; int i;
int k;
int state1; shifts *shiftp = state_table[state].shifts;
int symbol; reductions *redp = state_table[state].reductions;
shifts *shiftp; #if 0
errs *errp; errs *errp = err_table[state];
reductions *redp; #endif
static char buff[10]; static char buff[10];
edge_t edge; edge_t edge;
shiftp = state_table[state].shift_table; if (!shiftp->nshifts && !redp)
redp = state_table[state].reduction_table;
errp = err_table[state];
if (!shiftp && !redp)
{ {
#if 0 #if 0
if (final_state == state) if (final_state == state)
@@ -108,42 +105,26 @@ print_actions (int state, const char *node_name)
return; return;
} }
if (shiftp) for (i = 0; i < shiftp->nshifts; i++)
{ if (!SHIFT_IS_DISABLED (shiftp, i))
k = shiftp->nshifts; {
int state1 = shiftp->shifts[i];
int symbol = state_table[state1].accessing_symbol;
for (i = 0; i < k; i++) new_edge (&edge);
{
if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i];
symbol = state_table[state1].accessing_symbol;
if (ISVAR (symbol)) if (state > state1)
break; edge.type = back_edge;
open_edge (&edge, fgraph);
{ /* The edge source is the current node. */
new_edge (&edge); edge.sourcename = node_name;
sprintf (buff, "%d", state1);
if (state > state1) edge.targetname = buff;
edge.type = back_edge; edge.color = (symbol == 0) ? red : blue;
open_edge (&edge, fgraph); edge.label = tags[symbol];
/* The edge source is the current node. */ output_edge (&edge, fgraph);
edge.sourcename = node_name; close_edge (fgraph);
sprintf (buff, "%d", state1); }
edge.targetname = buff;
edge.color = (symbol == 0) ? red : blue;
edge.label = tags[symbol];
output_edge (&edge, fgraph);
close_edge (fgraph);
}
}
}
else
{
i = 0;
k = 0;
}
#if 0 #if 0
if (errp) if (errp)
@@ -182,14 +163,12 @@ print_actions (int state, const char *node_name)
} }
#endif #endif
if (i < k) if (i < shiftp->nshifts)
{ for (; i < shiftp->nshifts; i++)
for (; i < k; i++) if (!SHIFT_IS_DISABLED (shiftp, i))
{ {
if (!shiftp->shifts[i]) int state1 = shiftp->shifts[i];
continue; int symbol = state_table[state1].accessing_symbol;
state1 = shiftp->shifts[i];
symbol = state_table[state1].accessing_symbol;
new_edge (&edge); new_edge (&edge);
open_edge (&edge, fgraph); open_edge (&edge, fgraph);
@@ -201,7 +180,6 @@ print_actions (int state, const char *node_name)
output_edge (&edge, fgraph); output_edge (&edge, fgraph);
close_edge (fgraph); close_edge (fgraph);
} }
}
} }
+32 -6
View File
@@ -304,13 +304,15 @@ copy_comment (FILE *fin, struct obstack *oout)
/*-----------------------------------------------------------------. /*-----------------------------------------------------------------.
| FIN is pointing to a location (i.e., a `@'). Output to OOUT a | | FIN is pointing to a location (i.e., a `@'). Output to OOUT a |
| reference to this location. STACK_OFFSET is the number of values | | reference to this location. STACK_OFFSET is the number of values |
| in the current rule so far, which says where to find `$0' with | | in the current rule so far, which says where to find `@0' with |
| respect to the top of the stack. | | respect to the top of the stack. |
`-----------------------------------------------------------------*/ `-----------------------------------------------------------------*/
static inline void static inline void
copy_at (FILE *fin, struct obstack *oout, int stack_offset) copy_at (FILE *fin, struct obstack *oout,
struct symbol_list *rule, int stack_offset)
{ {
symbol_list *rp;
int c; int c;
c = getc (fin); c = getc (fin);
@@ -321,11 +323,25 @@ copy_at (FILE *fin, struct obstack *oout, int stack_offset)
} }
else if (isdigit (c) || c == '-') else if (isdigit (c) || c == '-')
{ {
int n; int n, i;
ungetc (c, fin); ungetc (c, fin);
n = read_signed_integer (fin); n = read_signed_integer (fin);
rp = rule;
i = 0;
while (i < n)
{
rp = rp->next;
if (rp == NULL)
{
complain (_("invalid @ value"));
return;
}
i++;
}
obstack_fgrow1 (oout, "yylsp[%d]", n - stack_offset); obstack_fgrow1 (oout, "yylsp[%d]", n - stack_offset);
locations_flag = 1; locations_flag = 1;
} }
@@ -1103,7 +1119,7 @@ copy_action (symbol_list *rule, int stack_offset)
case '@': case '@':
copy_at (finput, &action_obstack, copy_at (finput, &action_obstack,
stack_offset); rule, stack_offset);
break; break;
case EOF: case EOF:
@@ -1125,7 +1141,13 @@ copy_action (symbol_list *rule, int stack_offset)
} }
} }
obstack_sgrow (&action_obstack, ";\n break;}"); /* As a Bison extension, add the ending semicolon. Since some Yacc
don't do that, help people using bison as a Yacc finding their
missing semicolons. */
if (yacc_flag)
obstack_sgrow (&action_obstack, "}\n break;");
else
obstack_sgrow (&action_obstack, ";\n break;}");
} }
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
@@ -1197,7 +1219,7 @@ copy_guard (symbol_list *rule, int stack_offset)
break; break;
case '@': case '@':
copy_at (finput, &guard_obstack, stack_offset); copy_at (finput, &guard_obstack, rule, stack_offset);
break; break;
case EOF: case EOF:
@@ -1877,6 +1899,7 @@ packgram (void)
rule_table[ruleno].lhs = p->sym->value; rule_table[ruleno].lhs = p->sym->value;
rule_table[ruleno].rhs = itemno; rule_table[ruleno].rhs = itemno;
rule_table[ruleno].line = p->line; rule_table[ruleno].line = p->line;
rule_table[ruleno].useful = TRUE;
p = p->next; p = p->next;
while (p && p->sym) while (p && p->sym)
@@ -1910,6 +1933,9 @@ packgram (void)
} }
ritem[itemno] = 0; ritem[itemno] = 0;
if (trace_flag)
ritem_print (stderr);
} }
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
+172 -155
View File
@@ -38,16 +38,23 @@ typedef unsigned *BSet;
typedef short *rule; typedef short *rule;
/* N is set of all nonterminals which are not useless. P is set of /* Set of all nonterminals which are not useless. */
all rules which have no useless nonterminals in their RHS. V is static BSet N;
the set of all accessible symbols. */
static BSet N, P, V, V1; /* Set of all rules which have no useless nonterminals in their RHS. */
static BSet P;
/* Set of all accessible symbols. */
static BSet V;
/* Set of symbols used to define rule precedence (so they are
`useless', but no warning should be issued). */
static BSet V1;
static int nuseful_productions; static int nuseful_productions;
static int nuseless_productions; static int nuseless_productions;
static int nuseful_nonterminals; static int nuseful_nonterminals;
static int nuseless_nonterminals; int nuseless_nonterminals;
static bool static bool
bits_equal (BSet L, BSet R, int n) bits_equal (BSet L, BSet R, int n)
@@ -257,28 +264,35 @@ inaccessable_symbols (void)
static void static void
reduce_grammar_tables (void) reduce_grammar_tables (void)
{ {
/* This is turned off because we would need to change the numbers /* This is turned off because we would need to change the numbers in
in the case statements in the actions file. */ the case statements in the actions file.
#if 0
/* remove useless productions */
if (nuseless_productions > 0)
{
short np, pn, ni, pi;
np = 0; We don't disable it via CPP so that it is still checked with the
ni = 0; rest of the code, to avoid its becoming completely obsolete.
for (pn = 1; pn <= nrules; pn++)
{ FIXME: I think the comment above demonstrates this code must be
turned off for *semantic* parser, not in the general case. Try
to understand this better --akim. */
if (0)
/* remove useless productions */
if (nuseless_productions > 0)
{
short np, pn, ni, pi;
np = 0;
ni = 0;
for (pn = 1; pn <= nrules; pn++)
if (BITISSET (P, pn)) if (BITISSET (P, pn))
{ {
np++; np++;
if (pn != np) if (pn != np)
{ {
rule_table[np].lhs = rule_table[pn].lhs; rule_table[np].lhs = rule_table[pn].lhs;
rline[np] = rline[pn]; rule_table[np].line = rule_table[pn].line;
rule_table[np].prec = rule_table[pn].prec; rule_table[np].prec = rule_table[pn].prec;
rule_table[np].assoc = rule_table[pn].assoc; rule_table[np].assoc = rule_table[pn].assoc;
rule_table[np].rhs = rule_table[pn].rhs; rule_table[np].rhs = rule_table[pn].rhs;
if (rule_table[np].rhs != ni) if (rule_table[np].rhs != ni)
{ {
pi = rule_table[np].rhs; pi = rule_table[np].rhs;
@@ -293,149 +307,142 @@ reduce_grammar_tables (void)
while (ritem[ni++] >= 0); while (ritem[ni++] >= 0);
} }
} }
}
ritem[ni] = 0;
nrules -= nuseless_productions;
nitems = ni;
/* Is it worth it to reduce the amount of memory for the ritem[ni] = 0;
grammar? Probably not. */ nrules -= nuseless_productions;
nitems = ni;
} /* Is it worth it to reduce the amount of memory for the
#endif /* 0 */ grammar? Probably not. */
/* Disable useless productions, }
since they may contain useless nonterms
that would get mapped below to -1 and confuse everyone. */ /* Disable useless productions. */
if (nuseless_productions > 0) if (nuseless_productions > 0)
{ {
int pn; int pn;
for (pn = 1; pn <= nrules; pn++) for (pn = 1; pn <= nrules; pn++)
{ rule_table[pn].useful = BITISSET (P, pn);
if (!BITISSET (P, pn))
{
rule_table[pn].lhs = -1;
}
}
}
/* remove useless symbols */
if (nuseless_nonterminals > 0)
{
int i, n;
/* short j; JF unused */
short *nontermmap;
rule r;
/* Create a map of nonterminal number to new nonterminal
number. -1 in the map means it was useless and is being
eliminated. */
nontermmap = XCALLOC (short, nvars) - ntokens;
for (i = ntokens; i < nsyms; i++)
nontermmap[i] = -1;
n = ntokens;
for (i = ntokens; i < nsyms; i++)
if (BITISSET (V, i))
nontermmap[i] = n++;
/* Shuffle elements of tables indexed by symbol number. */
for (i = ntokens; i < nsyms; i++)
{
n = nontermmap[i];
if (n >= 0)
{
sassoc[n] = sassoc[i];
sprec[n] = sprec[i];
tags[n] = tags[i];
}
else
{
free (tags[i]);
}
}
/* Replace all symbol numbers in valid data structures. */
for (i = 1; i <= nrules; i++)
{
/* Ignore the rules disabled above. */
if (rule_table[i].lhs >= 0)
rule_table[i].lhs = nontermmap[rule_table[i].lhs];
if (ISVAR (rule_table[i].precsym))
/* Can this happen? */
rule_table[i].precsym = nontermmap[rule_table[i].precsym];
}
for (r = ritem; *r; r++)
if (ISVAR (*r))
*r = nontermmap[*r];
start_symbol = nontermmap[start_symbol];
nsyms -= nuseless_nonterminals;
nvars -= nuseless_nonterminals;
free (&nontermmap[ntokens]);
} }
} }
/*-----------------------------------------------------------------. /*------------------------------.
| Ouput the detailed results of the reductions. For FILE.output. | | Remove useless nonterminals. |
`-----------------------------------------------------------------*/ `------------------------------*/
static void
nonterminals_reduce (void)
{
int i, n;
rule r;
/* Map the nonterminals to their new index: useful first, useless
afterwards. Kept for later report. */
short *nontermmap = XCALLOC (short, nvars) - ntokens;
n = ntokens;
for (i = ntokens; i < nsyms; i++)
if (BITISSET (V, i))
nontermmap[i] = n++;
for (i = ntokens; i < nsyms; i++)
if (!BITISSET (V, i))
nontermmap[i] = n++;
/* Shuffle elements of tables indexed by symbol number. */
{
short *sassoc_sorted = XMALLOC (short, nvars) - ntokens;
short *sprec_sorted = XMALLOC (short, nvars) - ntokens;
char **tags_sorted = XMALLOC (char *, nvars) - ntokens;
for (i = ntokens; i < nsyms; i++)
{
n = nontermmap[i];
sassoc_sorted[n] = sassoc[i];
sprec_sorted[n] = sprec[i];
tags_sorted[n] = tags[i];
}
for (i = ntokens; i < nsyms; i++)
{
sassoc[i] = sassoc_sorted[i];
sprec[i] = sprec_sorted[i];
tags[i] = tags_sorted[i];
}
free (sassoc_sorted + ntokens);
free (sprec_sorted + ntokens);
free (tags_sorted + ntokens);
}
/* Replace all symbol numbers in valid data structures. */
for (i = 1; i <= nrules; i++)
{
rule_table[i].lhs = nontermmap[rule_table[i].lhs];
if (ISVAR (rule_table[i].precsym))
/* Can this happen? */
rule_table[i].precsym = nontermmap[rule_table[i].precsym];
}
for (r = ritem; *r; r++)
if (ISVAR (*r))
*r = nontermmap[*r];
start_symbol = nontermmap[start_symbol];
nsyms -= nuseless_nonterminals;
nvars -= nuseless_nonterminals;
free (nontermmap + ntokens);
}
/*------------------------------------------------------------------.
| Output the detailed results of the reductions. For FILE.output. |
`------------------------------------------------------------------*/
void void
reduce_output (FILE *out) reduce_output (FILE *out)
{ {
int i;
rule r;
bool b;
if (nuseless_nonterminals > 0) if (nuseless_nonterminals > 0)
{ {
fprintf (out, _("Useless nonterminals:")); int i;
fprintf (out, "\n\n"); fprintf (out, "%s\n\n", _("Useless nonterminals:"));
for (i = ntokens; i < nsyms; i++) for (i = 0; i < nuseless_nonterminals; ++i)
if (!BITISSET (V, i)) fprintf (out, " %s\n", tags[nsyms + i]);
fprintf (out, " %s\n", tags[i]); fputs ("\n\n", out);
} }
b = FALSE;
for (i = 0; i < ntokens; i++) {
{ bool b = FALSE;
int i;
for (i = 0; i < ntokens; i++)
if (!BITISSET (V, i) && !BITISSET (V1, i)) if (!BITISSET (V, i) && !BITISSET (V1, i))
{ {
if (!b) if (!b)
{ fprintf (out, "%s\n\n", _("Terminals which are not used:"));
fprintf (out, "\n\n"); b = TRUE;
fprintf (out, _("Terminals which are not used:"));
fprintf (out, "\n\n");
b = TRUE;
}
fprintf (out, " %s\n", tags[i]); fprintf (out, " %s\n", tags[i]);
} }
} if (b)
fputs ("\n\n", out);
}
if (nuseless_productions > 0) if (nuseless_productions > 0)
{ {
fprintf (out, "\n\n"); int i;
fprintf (out, _("Useless rules:")); fprintf (out, "%s\n\n", _("Useless rules:"));
fprintf (out, "\n\n");
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
if (!BITISSET (P, i)) if (!rule_table[i].useful)
{ {
rule r;
fprintf (out, "#%-4d ", i); fprintf (out, "#%-4d ", i);
fprintf (out, "%s :\t", tags[rule_table[i].lhs]); fprintf (out, "%s:", tags[rule_table[i].lhs]);
for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++) for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
fprintf (out, " %s", tags[*r]); fprintf (out, " %s", tags[*r]);
fprintf (out, ";\n"); fputs (";\n", out);
} }
fputs ("\n\n", out);
} }
if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b)
fprintf (out, "\n\n");
} }
static void static void
@@ -446,28 +453,33 @@ dump_grammar (FILE *out)
fprintf (out, "REDUCED GRAMMAR\n\n"); fprintf (out, "REDUCED GRAMMAR\n\n");
fprintf (out, fprintf (out,
"ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n", "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n",
ntokens, nvars, nsyms, nrules, nitems); ntokens, nvars, nsyms, nrules, nitems);
fprintf (out, _("Variables\n---------\n\n")); fprintf (out, "Variables\n---------\n\n");
fprintf (out, _("Value Sprec Sassoc Tag\n")); fprintf (out, "Value Sprec Sassoc Tag\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
fprintf (out, "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]); fprintf (out, "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]);
fprintf (out, "\n\n"); fprintf (out, "\n\n");
fprintf (out, _("Rules\n-----\n\n")); fprintf (out, "Rules\n-----\n\n");
fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
{ {
fprintf (out, "%-5d(%5d%5d)%5d : (@%-5d)", int rhs_count = 0;
/* Find the last RHS index in ritems. */
for (r = &ritem[rule_table[i].rhs]; *r > 0; ++r)
++rhs_count;
fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d) %2d ->",
i, i,
rule_table[i].prec, rule_table[i].prec, rule_table[i].assoc, rule_table[i].useful,
rule_table[i].assoc, rule_table[i].rhs, rule_table[i].rhs + rhs_count - 1,
rule_table[i].lhs, rule_table[i].lhs);
rule_table[i].rhs); /* Dumped the RHS. */
for (r = &ritem[rule_table[i].rhs]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
fprintf (out, "%5d", *r); fprintf (out, "%3d", *r);
fprintf (out, " [%d]\n", -(*r)); fprintf (out, " [%d]\n", -(*r));
} }
fprintf (out, "\n\n"); fprintf (out, "\n\n");
fprintf (out, _("Rules interpreted\n-----------------\n\n")); fprintf (out, "Rules interpreted\n-----------------\n\n");
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
{ {
fprintf (out, "%-5d %s :", i, tags[rule_table[i].lhs]); fprintf (out, "%-5d %s :", i, tags[rule_table[i].lhs]);
@@ -488,24 +500,27 @@ static void
reduce_print (void) reduce_print (void)
{ {
if (yacc_flag && nuseless_productions) if (yacc_flag && nuseless_productions)
fprintf (stderr, _("%d rules never reduced\n"), nuseless_productions); fprintf (stderr, ngettext ("%d rule never reduced\n",
"%d rules never reduced\n",
nuseless_productions),
nuseless_productions);
fprintf (stderr, _("%s contains "), infile); fprintf (stderr, _("%s contains "), infile);
if (nuseless_nonterminals > 0) if (nuseless_nonterminals > 0)
{ fprintf (stderr, ngettext ("%d useless nonterminal",
fprintf (stderr, _("%d useless nonterminal%s"), "%d useless nonterminals",
nuseless_nonterminals, nuseless_nonterminals),
(nuseless_nonterminals == 1 ? "" : "s")); nuseless_nonterminals);
}
if (nuseless_nonterminals > 0 && nuseless_productions > 0) if (nuseless_nonterminals > 0 && nuseless_productions > 0)
fprintf (stderr, _(" and ")); fprintf (stderr, _(" and "));
if (nuseless_productions > 0) if (nuseless_productions > 0)
{ fprintf (stderr, ngettext ("%d useless rule",
fprintf (stderr, _("%d useless rule%s"), "%d useless rules",
nuseless_productions, (nuseless_productions == 1 ? "" : "s")); nuseless_productions),
} nuseless_productions);
fprintf (stderr, "\n"); fprintf (stderr, "\n");
fflush (stderr); fflush (stderr);
} }
@@ -537,6 +552,8 @@ reduce_grammar (void)
tags[start_symbol]); tags[start_symbol]);
reduce_grammar_tables (); reduce_grammar_tables ();
if (nuseless_nonterminals > 0)
nonterminals_reduce ();
if (trace_flag) if (trace_flag)
{ {
+2
View File
@@ -24,4 +24,6 @@
void reduce_grammar PARAMS ((void)); void reduce_grammar PARAMS ((void));
void reduce_output PARAMS ((FILE *out)); void reduce_output PARAMS ((FILE *out));
void reduce_free PARAMS ((void)); void reduce_free PARAMS ((void));
extern int nuseless_nonterminals;
#endif /* !REDUCE_H_ */ #endif /* !REDUCE_H_ */
+35
View File
@@ -0,0 +1,35 @@
/* Type definitions for nondeterministic finite state machine for bison,
Copyright 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "system.h"
#include "state.h"
/*---------------------------------.
| Create a new array of N shitfs. |
`---------------------------------*/
shifts *
shifts_new (int n)
{
shifts *res = SHIFTS_ALLOC (n);
res->nshifts = n;
return res;
}
+56 -9
View File
@@ -1,5 +1,5 @@
/* Type definitions for nondeterministic finite state machine for bison, /* Type definitions for nondeterministic finite state machine for bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -88,6 +88,11 @@
#ifndef STATE_H_ #ifndef STATE_H_
# define STATE_H_ # define STATE_H_
/*-------.
| Core. |
`-------*/
typedef struct core typedef struct core
{ {
struct core *next; struct core *next;
@@ -96,39 +101,82 @@ typedef struct core
short accessing_symbol; short accessing_symbol;
short nitems; short nitems;
short items[1]; short items[1];
} } core;
core;
#define CORE_ALLOC(Nitems) \ #define CORE_ALLOC(Nitems) \
(core *) xcalloc ((unsigned) (sizeof (core) \ (core *) xcalloc ((unsigned) (sizeof (core) \
+ (Nitems - 1) * sizeof (short)), 1) + (Nitems - 1) * sizeof (short)), 1)
/*---------.
| Shifts. |
`---------*/
typedef struct shifts typedef struct shifts
{ {
struct shifts *next; struct shifts *next;
short number; short number;
short nshifts; short nshifts;
short shifts[1]; short shifts[1];
} } shifts;
shifts;
#define SHIFTS_ALLOC(Nshifts) \ #define SHIFTS_ALLOC(Nshifts) \
(shifts *) xcalloc ((unsigned) (sizeof (shifts) \ (shifts *) xcalloc ((unsigned) (sizeof (shifts) \
+ (Nshifts - 1) * sizeof (short)), 1) + (Nshifts - 1) * sizeof (short)), 1)
shifts * shifts_new PARAMS ((int n));
/* What is the symbol which is shifted by SHIFTS->shifts[Shift]? Can
be a token (amongst which the error token), or non terminals in
case of gotos. */
#define SHIFT_SYMBOL(Shifts, Shift) \
(state_table[Shifts->shifts[Shift]].accessing_symbol)
/* Is the SHIFTS->shifts[Shift] a real shift? (as opposed to gotos.) */
#define SHIFT_IS_SHIFT(Shifts, Shift) \
(ISTOKEN (SHIFT_SYMBOL (Shifts, Shift)))
/* Is the SHIFTS->shifts[Shift] a goto?. */
#define SHIFT_IS_GOTO(Shifts, Shift) \
(!SHIFT_IS_SHIFT (Shifts, Shift))
/* Is the SHIFTS->shifts[Shift] then handling of the error token?. */
#define SHIFT_IS_ERROR(Shifts, Shift) \
(SHIFT_SYMBOL (Shifts, Shift) == error_token_number)
/* When resolving a SR conflicts, if the reduction wins, the shift is
disabled. */
#define SHIFT_DISABLE(Shifts, Shift) \
(Shifts->shifts[Shift] = 0)
#define SHIFT_IS_DISABLED(Shifts, Shift) \
(Shifts->shifts[Shift] == 0)
/*-------.
| Errs. |
`-------*/
typedef struct errs typedef struct errs
{ {
short nerrs; short nerrs;
short errs[1]; short errs[1];
} } errs;
errs;
#define ERRS_ALLOC(Nerrs) \ #define ERRS_ALLOC(Nerrs) \
(errs *) xcalloc ((unsigned) (sizeof (errs) \ (errs *) xcalloc ((unsigned) (sizeof (errs) \
+ (Nerrs - 1) * sizeof (short)), 1) + (Nerrs - 1) * sizeof (short)), 1)
/*-------------.
| Reductions. |
`-------------*/
typedef struct reductions typedef struct reductions
{ {
@@ -136,8 +184,7 @@ typedef struct reductions
short number; short number;
short nreds; short nreds;
short rules[1]; short rules[1];
} } reductions;
reductions;
#define REDUCTIONS_ALLOC(Nreductions) \ #define REDUCTIONS_ALLOC(Nreductions) \
(reductions *) xcalloc ((unsigned) (sizeof (reductions) \ (reductions *) xcalloc ((unsigned) (sizeof (reductions) \
+37 -23
View File
@@ -110,14 +110,26 @@ char *alloca ();
char *stpcpy PARAMS ((char *dest, const char *src)); char *stpcpy PARAMS ((char *dest, const char *src));
#endif #endif
#if !HAVE_DECL_STRNDUP #if !HAVE_DECL_STRCHR
char *strndup PARAMS ((const char *s, size_t size)); char *strchr(const char *s, int c);
#endif
#if !HAVE_DECL_STRSPN
size_t strspn(const char *s, const char *accept);
#endif #endif
#if !HAVE_DECL_STRNLEN #if !HAVE_DECL_STRNLEN
size_t strnlen PARAMS ((const char *s, size_t maxlen)); size_t strnlen PARAMS ((const char *s, size_t maxlen));
#endif #endif
#if !HAVE_DECL_MEMCHR
void *memchr PARAMS ((const void *s, int c, size_t n));
#endif
#if !HAVE_DECL_MEMRCHR
void *memrchr PARAMS ((const void *s, int c, size_t n));
#endif
/*-----------------. /*-----------------.
@@ -126,7 +138,8 @@ size_t strnlen PARAMS ((const char *s, size_t maxlen));
#ifndef __attribute__ #ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */ /* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ # if !defined (__GNUC__) || __GNUC__ < 2 || \
(__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */ # define __attribute__(Spec) /* empty */
# endif # endif
/* The __-protected variants of `format' and `printf' attributes /* The __-protected variants of `format' and `printf' attributes
@@ -149,20 +162,9 @@ size_t strnlen PARAMS ((const char *s, size_t maxlen));
# define setlocale(Category, Locale) # define setlocale(Category, Locale)
#endif #endif
#ifdef ENABLE_NLS #include "libgettext.h"
# include <libintl.h> #define _(Msgid) gettext (Msgid)
# define _(Text) gettext (Text) #define N_(Msgid) (Msgid)
#else
# undef bindtextdomain
# define bindtextdomain(Domain, Directory)
# undef textdomain
# define textdomain(Domain)
# undef ngettext
# define ngettext(Singular, Plural, Number) \
((Number == 1) ? Singular : Plural)
# define _(Text) Text
#endif
#define N_(Text) Text
/*-------------------------------. /*-------------------------------.
@@ -237,7 +239,7 @@ do { \
# define MINSHORT -32768 # define MINSHORT -32768
#endif #endif
#if defined (MSDOS) && !defined (__GO32__) #if defined (MSDOS) && !defined (__GO32__) && !defined (__DJGPP__)
# define BITS_PER_WORD 16 # define BITS_PER_WORD 16
# define MAXTABLE 16383 # define MAXTABLE 16383
#else #else
@@ -259,19 +261,31 @@ do { \
# define EXT_OUTPUT ".output" # define EXT_OUTPUT ".output"
# define EXT_STYPE_H "_stype" # define EXT_STYPE_H "_stype"
# define EXT_GUARD_C "_guard" # define EXT_GUARD_C "_guard"
# define EXT_TYPE(ext) (ext)
#else /* ! VMS */ #else /* ! VMS */
# ifdef MSDOS # ifdef MSDOS
/* MS DOS. */ # if defined (__DJGPP__)
# define EXT_TAB "_tab" /* DJGPP */
# define EXT_OUTPUT ".out" # define EXT_TAB ((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".tab" : "_tab")
# define EXT_STYPE_H ".sth" # define EXT_OUTPUT ((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".output" : ".out")
# define EXT_GUARD_C ".guc" # define EXT_STYPE_H ((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".stype" : ".sth")
# define EXT_GUARD_C ((pathconf (NULL, _PC_NAME_MAX) > 12) ? ".guard" : ".guc")
# define EXT_TYPE(ext) ((pathconf (NULL, _PC_NAME_MAX) > 12) ? (ext) : "")
# else /* ! __DJGPP__ */
/* MS DOS. */
# define EXT_TAB "_tab"
# define EXT_OUTPUT ".out"
# define EXT_STYPE_H ".sth"
# define EXT_GUARD_C ".guc"
# define EXT_TYPE(ext) ""
# endif
# else /* ! MSDOS */ # else /* ! MSDOS */
/* Standard. */ /* Standard. */
# define EXT_TAB ".tab" # define EXT_TAB ".tab"
# define EXT_OUTPUT ".output" # define EXT_OUTPUT ".output"
# define EXT_STYPE_H ".stype" # define EXT_STYPE_H ".stype"
# define EXT_GUARD_C ".guard" # define EXT_GUARD_C ".guard"
# define EXT_TYPE(ext) (ext)
# endif /* ! MSDOS */ # endif /* ! MSDOS */
#endif /* ! VMS */ #endif /* ! VMS */
+24 -12
View File
@@ -242,7 +242,8 @@ get_color_str (enum color_e c)
case orchid: return "orchid"; case orchid: return "orchid";
case black: return "black"; case black: return "black";
default: default:
assert (!"Not a default color."); #define A_known_default_color 0
assert (A_known_default_color);
} }
return NULL; return NULL;
} }
@@ -256,7 +257,8 @@ get_textmode_str (enum textmode_e t)
case left_justify: return "left_justify"; case left_justify: return "left_justify";
case right_justify: return "right_justify"; case right_justify: return "right_justify";
default: default:
assert (!"Not a text mode."); #define A_known_text_mode 0
assert (A_known_text_mode);
} }
return NULL; return NULL;
} }
@@ -271,7 +273,8 @@ get_shape_str (enum shape_e s)
case ellipse: return "ellipse"; case ellipse: return "ellipse";
case triangle: return "triangle"; case triangle: return "triangle";
default: default:
assert (!"Not a shape."); #define A_known_shape 0
assert (A_known_shape);
} }
return NULL; return NULL;
} }
@@ -296,7 +299,8 @@ get_layoutalgorithm_str (enum layoutalgorithm_e l)
case dfs: return "dfs"; case dfs: return "dfs";
case tree: return "tree"; case tree: return "tree";
default: default:
assert (!"Not a layout algorithm."); #define A_known_layout_algorithm 0
assert (A_known_layout_algorithm);
} }
return NULL; return NULL;
} }
@@ -309,7 +313,8 @@ get_decision_str (enum decision_e d)
case no: return "no"; case no: return "no";
case yes: return "yes"; case yes: return "yes";
default: default:
assert (!"Either yes nor no."); #define Either_yes_nor_no 0
assert (Either_yes_nor_no);
} }
return NULL; return NULL;
} }
@@ -324,7 +329,8 @@ get_orientation_str (enum orientation_e o)
case left_to_right: return "left_to_right"; case left_to_right: return "left_to_right";
case right_to_left: return "right_to_left"; case right_to_left: return "right_to_left";
default: default:
assert (!"Not an orientation."); #define A_knownn_orientation 0
assert (A_knownn_orientation);
} }
return NULL; return NULL;
} }
@@ -338,7 +344,8 @@ get_node_alignement_str (enum alignement_e a)
case top: return "top"; case top: return "top";
case bottom: return "bottom"; case bottom: return "bottom";
default: default:
assert (!"Not an alignement."); #define A_known_alignement 0
assert (A_known_alignement);
} }
return NULL; return NULL;
} }
@@ -351,7 +358,8 @@ get_arrow_mode_str (enum arrow_mode_e a)
case fixed: return "fixed"; case fixed: return "fixed";
case free_a: return "free"; case free_a: return "free";
default: default:
assert (!"Not an arrow mode."); #define A_known_arrow_mode 0
assert (A_known_arrow_mode);
} }
return NULL; return NULL;
} }
@@ -366,7 +374,8 @@ get_crossing_type_str (enum crossing_type_e c)
case barymedian: return "barymedian"; case barymedian: return "barymedian";
case medianbary: return "medianbary"; case medianbary: return "medianbary";
default: default:
assert (!"Not a crossing type."); #define A_known_crossing_type 0
assert (A_known_crossing_type);
} }
return NULL; return NULL;
} }
@@ -382,7 +391,8 @@ get_view_str (enum view_e v)
case fcfish: return "fcfish"; case fcfish: return "fcfish";
case fpfish: return "fpfish"; case fpfish: return "fpfish";
default: default:
assert (!"Not a view."); #define A_known_view 0
assert (A_known_view);
} }
return NULL; return NULL;
} }
@@ -397,7 +407,8 @@ get_linestyle_str (enum linestyle_e l)
case dotted: return "dotted"; case dotted: return "dotted";
case invisible: return "invisible"; case invisible: return "invisible";
default: default:
assert (!"Not a line style."); #define A_known_line_style 0
assert (A_known_line_style);
} }
return NULL; return NULL;
} }
@@ -411,7 +422,8 @@ get_arrowstyle_str (enum arrowstyle_e a)
case line: return "line"; case line: return "line";
case none: return "none"; case none: return "none";
default: default:
assert (!"Not an arrow style."); #define A_known_arrow_style 0
assert (A_known_arrow_style);
} }
return NULL; return NULL;
} }
+76 -74
View File
@@ -1,5 +1,5 @@
/* Generate transitive closure of a matrix, /* Generate transitive closure of a matrix,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -20,95 +20,97 @@
#include "system.h" #include "system.h"
#include "getargs.h"
#include "warshall.h" #include "warshall.h"
/* Given n by n matrix of bits R, modify its contents to be the /*-------------------------------------------------------------.
transive closure of what was given. */ | Given n by n matrix of bits R, modify its contents to be the |
| transive closure of what was given. |
`-------------------------------------------------------------*/
static void
bitmatrix_print (const char *title, unsigned *matrix, size_t size)
{
size_t i, j;
size_t rowsize = WORDSIZE (size) * sizeof (unsigned);
#define ROW(Num) ((unsigned *) ((char *) matrix + ((Num) * rowsize)))
/* Title. */
fprintf (stderr, "%s BEGIN\n", title);
/* Column numbers. */
fputs (" ", stderr);
for (i = 0; i < size; ++i)
putc (i / 10 ? '0' + i / 10 : ' ', stderr);
putc ('\n', stderr);
fputs (" ", stderr);
for (i = 0; i < size; ++i)
fprintf (stderr, "%d", i % 10);
putc ('\n', stderr);
/* Bar. */
fputs (" .", stderr);
for (i = 0; i < size; ++i)
putc ('-', stderr);
fputs (".\n", stderr);
/* Contents. */
for (i = 0; i < size; ++i)
{
fprintf (stderr, "%2d|", i);
for (j = 0; j < size; ++j)
fputs (BITISSET (ROW (i), j) ? "1" : " ", stderr);
fputs ("|\n", stderr);
}
/* Bar. */
fputs (" `", stderr);
for (i = 0; i < size; ++i)
putc ('-', stderr);
fputs ("'\n", stderr);
/* End title. */
fprintf (stderr, "%s END\n\n", title);
}
#define R(Num) (unsigned *) ((char *) R + ((Num) * rowsize))
static void static void
TC (unsigned *R, int n) TC (unsigned *R, int n)
{ {
int rowsize; int rowsize = WORDSIZE (n) * sizeof (unsigned);
unsigned mask; int i, j, k;
unsigned *rowj;
unsigned *rp;
unsigned *rend;
unsigned *ccol;
unsigned *relend; if (trace_flag)
unsigned *cword; bitmatrix_print ("TC: Input", R, n);
unsigned *rowi;
rowsize = WORDSIZE(n) * sizeof(unsigned); /* R (J, I) && R (I, K) => R (J, K).
relend = (unsigned *) ((char *) R + (n * rowsize)); I *must* be the outter loop. */
cword = R; for (i = 0; i < n; ++i)
mask = 1; for (j = 0; j < n; ++j)
rowi = R; if (BITISSET (R (j), i))
while (rowi < relend) for (k = 0; k < n; ++k)
{ if (BITISSET (R (i), k))
ccol = cword; SETBIT (R (j), k);
rowj = R;
while (rowj < relend) if (trace_flag)
{ bitmatrix_print ("TC: Output", R, n);
if (*ccol & mask)
{
rp = rowi;
rend = (unsigned *) ((char *) rowj + rowsize);
while (rowj < rend)
*rowj++ |= *rp++;
}
else
{
rowj = (unsigned *) ((char *) rowj + rowsize);
}
ccol = (unsigned *) ((char *) ccol + rowsize);
}
mask <<= 1;
if (mask == 0)
{
mask = 1;
cword++;
}
rowi = (unsigned *) ((char *) rowi + rowsize);
}
} }
/* Reflexive Transitive Closure. Same as TC /*---------------------------------------------------------------.
and then set all the bits on the diagonal of R. */ | Reflexive Transitive Closure. Same as TC and then set all the |
| bits on the diagonal of R. |
`---------------------------------------------------------------*/
void void
RTC (unsigned *R, int n) RTC (unsigned *R, int n)
{ {
int rowsize; int rowsize = WORDSIZE (n) * sizeof (unsigned);
unsigned mask; int i;
unsigned *rp;
unsigned *relend;
TC(R, n); TC (R, n);
for (i = 0; i < n; ++i)
rowsize = WORDSIZE(n) * sizeof(unsigned); SETBIT (R (i), i);
relend = (unsigned *) ((char *) R + n*rowsize);
mask = 1;
rp = R;
while (rp < relend)
{
*rp |= mask;
mask <<= 1;
if (mask == 0)
{
mask = 1;
rp++;
}
rp = (unsigned *) ((char *) rp + rowsize);
}
} }
+1 -26
View File
@@ -1,30 +1,5 @@
/* Generate transitive closure of a matrix, /* Generate transitive closure of a matrix,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef WARSHALL_H_
# define WARSHALL_H_
void RTC PARAMS ((unsigned *, int));
#endif /* !WARSHALL_H_ */
/* Generate transitive closure of a matrix,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
+1 -2
View File
@@ -8,8 +8,7 @@ expout
stderr stderr
stdout stdout
testsuite testsuite
testsuite.[0-9] testsuite.dir
testsuite.[0-9][0-9]
package.m4 package.m4
calc.[chy] calc.[chy]
calc.tab.* calc.tab.*
+24 -4
View File
@@ -1,7 +1,7 @@
## Process this file with automake to create Makefile.in. ## Process this file with automake to create Makefile.in.
## Makefile for Bison testsuite. ## Makefile for Bison testsuite.
## Copyright 2000, 2001 Free Software Foundation, Inc. ## Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
## This program is free software; you can redistribute it and/or modify ## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by ## it under the terms of the GNU General Public License as published by
@@ -20,16 +20,36 @@
EXTRA_DIST = $(TESTSUITE_AT) testsuite EXTRA_DIST = $(TESTSUITE_AT) testsuite
DISTCLEANFILES = atconfig bison package.m4 DISTCLEANFILES = atconfig bison
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
## ------------ ##
## package.m4. ##
## ------------ ##
$(srcdir)/package.m4: $(top_srcdir)/configure.in
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \
echo 'm4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \
echo 'm4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \
echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >$(srcdir)/package.m4
EXTRA_DIST += package.m4
## ------------ ##
## Test suite. ##
## ------------ ##
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at torture.at regression.at input.at output.at sets.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
AUTOTEST = $(AUTOM4TE) --language=autotest AUTOTEST = $(AUTOM4TE) --language=autotest
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT) $(srcdir)/$(TESTSUITE): package.m4 $(TESTSUITE_AT)
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp $(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
mv $@.tmp $@ mv $@.tmp $@
+27 -12
View File
@@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5c from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
@SET_MAKE@ @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -48,6 +47,7 @@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
install_sh_DATA = $(install_sh) -c -m 644
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@ transform = @program_transform_name@
@@ -92,23 +92,25 @@ PACKAGE = @PACKAGE@
POFILES = @POFILES@ POFILES = @POFILES@
POSUB = @POSUB@ POSUB = @POSUB@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
STRIP = @STRIP@
U = @U@ U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@ WARNING_CFLAGS = @WARNING_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
am__include = @am__include@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
EXTRA_DIST = $(TESTSUITE_AT) testsuite EXTRA_DIST = $(TESTSUITE_AT) testsuite package.m4
DISTCLEANFILES = atconfig bison package.m4 DISTCLEANFILES = atconfig bison
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at torture.at regression.at input.at output.at sets.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
@@ -126,7 +128,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu tests/Makefile $(AUTOMAKE) --gnu tests/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
bison: $(top_builddir)/config.status bison.in bison: $(top_builddir)/config.status bison.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
atlocal: $(top_builddir)/config.status atlocal.in atlocal: $(top_builddir)/config.status atlocal.in
@@ -135,7 +137,6 @@ uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .. top_distdir = ..
@@ -143,13 +144,16 @@ distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES) distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \ dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \ fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \ cp -pR $$d/$$file $(distdir)$$dir \
|| exit 1; \ || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
@@ -175,6 +179,7 @@ install-am: all-am
installcheck: installcheck-am installcheck: installcheck-am
install-strip: install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \ `test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic: mostlyclean-generic:
@@ -234,7 +239,17 @@ uninstall-am: uninstall-info-am
maintainer-clean-generic mostlyclean mostlyclean-generic \ maintainer-clean-generic mostlyclean mostlyclean-generic \
uninstall uninstall-am uninstall-info-am uninstall uninstall-am uninstall-info-am
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
$(srcdir)/package.m4: $(top_srcdir)/configure.in
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \
echo 'm4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \
echo 'm4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \
echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >$(srcdir)/package.m4
$(srcdir)/$(TESTSUITE): package.m4 $(TESTSUITE_AT)
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp $(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
mv $@.tmp $@ mv $@.tmp $@
+3 -6
View File
@@ -1,13 +1,10 @@
# @configure_input@ -*- shell-script -*- # @configure_input@ -*- shell-script -*-
# Configurable variable values for Bison test suite. # Configurable variable values for Bison test suite.
# Copyright 2000, 2001 Free Software Foundation, Inc. # Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
# We need a C compiler. # We need a C compiler.
CC='@CC@' CC='@CC@'
CFLAGS='@CFLAGS@' CFLAGS='@CFLAGS@ @WARNING_CFLAGS@ @WERROR_CFLAGS@'
# We need to know if the compiler is GCC.
GCC='@GCC@'
# We need `config.h'. # We need `config.h'.
CPPFLAGS="-I $top_buildpath @CPPFLAGS@" CPPFLAGS="-I$abs_top_builddir @CPPFLAGS@"
+4 -4
View File
@@ -1,11 +1,11 @@
#! /bin/sh #! /bin/sh
# @configure_generated@ # @configure_input@
# Wrapper around a non installed bison to make it work as an installed one. # Wrapper around a non installed bison to make it work as an installed one.
# We want to use the files shipped with Bison. # We want to use the files shipped with Bison.
BISON_SIMPLE='@top_srcpath@/src/bison.simple' BISON_SIMPLE='@abs_top_srcdir@/src/bison.simple'
export BISON_SIMPLE export BISON_SIMPLE
BISON_HAIRY='@top_srcpath@/src/bison.hairy' BISON_HAIRY='@abs_top_srcdir@/src/bison.hairy'
export BISON_HAIRY export BISON_HAIRY
exec '@top_buildpath@/src/bison' ${1+"$@"} exec '@abs_top_builddir@/src/bison' ${1+"$@"}
+2 -13
View File
@@ -272,7 +272,7 @@ m4_define([_AT_CHECK_CALC],
[AT_DATA([[input]], [AT_DATA([[input]],
[[$2 [[$2
]]) ]])
AT_CHECK([calc input], 0, [], [stderr])dnl AT_CHECK([./calc input], 0, [], [stderr])dnl
AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0, AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0,
[m4_bmatch([$1], [--debug], [m4_bmatch([$1], [--debug],
[$3], [0]) [$3], [0])
@@ -299,7 +299,7 @@ m4_define([_AT_CHECK_CALC_ERROR],
[[$2 [[$2
]]) ]])
AT_CHECK([calc input], 0, [], [stderr]) AT_CHECK([./calc input], 0, [], [stderr])
AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0, AT_CHECK([wc -l <stderr | sed 's/[[^0-9]]//g'], 0,
@@ -334,17 +334,6 @@ AT_DATA_CALC_Y([$1])
AT_CHECK([bison calc.y -o calc.c m4_bpatsubst([$1], [--yyerror-verbose])], AT_CHECK([bison calc.y -o calc.c m4_bpatsubst([$1], [--yyerror-verbose])],
[0], [], []) [0], [], [])
# Some compilers issue warnings we don't want to hear about.
# Maybe some day we will have proper Autoconf macros to disable these
# warnings, but this place is not the right one for that.
# So let's keep only GCC warnings, which we know are sane.
# Well, that's only part of the story: some assemblers issue warnings
# which can be totally useless, and actually polluting. It seems that
# the best bet be to completely ignore stderr, but to pass -Werror
# to GCC.
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Werror"
fi
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [ignore]) AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [ignore])
# Test the priorities. # Test the priorities.
+58
View File
@@ -0,0 +1,58 @@
# Checking the output filenames. -*- Autotest -*-
# Copyright 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_BANNER([[Input Processing.]])
# Mostly test that we are robust to mistakes.
## ------------ ##
## Invalid $n. ##
## ------------ ##
AT_SETUP([Invalid $n])
AT_DATA([input.y],
[[%%
exp: { $$ = $1 ; }
]])
AT_CHECK([bison input.y], [1], [],
[[input.y:2: invalid $ value
]])
AT_CLEANUP
## ------------ ##
## Invalid @n. ##
## ------------ ##
AT_SETUP([Invalid @n])
AT_DATA([input.y],
[[%%
exp: { @$ = @1 ; }
]])
AT_CHECK([bison input.y], [1], [],
[[input.y:2: invalid @ value
]])
AT_CLEANUP
+3
View File
@@ -53,6 +53,9 @@ AT_CHECK_OUTPUT([foo.y], [%defines %verbose], [],
AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[], AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[],
[y.output y.tab.c y.tab.h]) [y.output y.tab.c y.tab.h])
AT_CHECK_OUTPUT([foo.yy], [%defines %verbose %yacc],[],
[y.output y.tab.c y.tab.h])
# Exercise %output and %file-prefix # Exercise %output and %file-prefix
AT_CHECK_OUTPUT([foo.y], [%file-prefix="bar" %defines %verbose], [], AT_CHECK_OUTPUT([foo.y], [%file-prefix="bar" %defines %verbose], [],
[bar.output bar.tab.c bar.tab.h]) [bar.output bar.tab.c bar.tab.h])
+206
View File
@@ -0,0 +1,206 @@
# Exercising Bison Grammar Reduction. -*- Autotest -*-
# Copyright 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_BANNER([[Grammar Reduction.]])
## ------------------- ##
## Useless Terminals. ##
## ------------------- ##
AT_SETUP([Useless Terminals])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%token useless1
%token useless2
%token useless3
%token useless4
%token useless5
%token useless6
%token useless7
%token useless8
%token useless9
%token useful
%%
exp: useful;
]])
AT_CHECK([[bison input.y]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Terminals which are not used:
useless1
useless2
useless3
useless4
useless5
useless6
useless7
useless8
useless9
]])
AT_CLEANUP
## ---------------------- ##
## Useless Nonterminals. ##
## ---------------------- ##
AT_SETUP([Useless Nonterminals])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%nterm useless1
%nterm useless2
%nterm useless3
%nterm useless4
%nterm useless5
%nterm useless6
%nterm useless7
%nterm useless8
%nterm useless9
%token useful
%%
exp: useful;
]])
AT_CHECK([[bison input.y]], 0, [],
[[input.y contains 9 useless nonterminals
]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Useless nonterminals:
useless1
useless2
useless3
useless4
useless5
useless6
useless7
useless8
useless9
]])
AT_CLEANUP
## --------------- ##
## Useless Rules. ##
## --------------- ##
AT_SETUP([Useless Rules])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%token useful
%%
exp: useful;
useless1: '1';
useless2: '2';
useless3: '3';
useless4: '4';
useless5: '5';
useless6: '6';
useless7: '7';
useless8: '8';
useless9: '9';
]])
AT_CHECK([[bison input.y]], 0, [],
[[input.y contains 9 useless nonterminals and 9 useless rules
]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Useless nonterminals:
useless1
useless2
useless3
useless4
useless5
useless6
useless7
useless8
useless9
Terminals which are not used:
'1'
'2'
'3'
'4'
'5'
'6'
'7'
'8'
'9'
Useless rules:
#2 useless1: '1';
#3 useless2: '2';
#4 useless3: '3';
#5 useless4: '4';
#6 useless5: '5';
#7 useless6: '6';
#8 useless7: '7';
#9 useless8: '8';
#10 useless9: '9';
]])
AT_CLEANUP
## ------------------- ##
## Underivable Rules. ##
## ------------------- ##
AT_SETUP([Underivable Rules])
AT_DATA([[input.y]],
[[%verbose
%output="input.c"
%token useful
%%
exp: useful | underivable;
underivable: indirection;
indirection: underivable;
]])
AT_CHECK([[bison input.y]], 0, [],
[[input.y contains 2 useless nonterminals and 3 useless rules
]])
AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
[[Useless nonterminals:
underivable
indirection
Useless rules:
#2 exp: underivable;
#3 underivable: indirection;
#4 indirection: underivable;
]])
AT_CLEANUP
+344 -46
View File
@@ -18,6 +18,102 @@
AT_BANNER([[Regression tests.]]) AT_BANNER([[Regression tests.]])
## ------------------- ##
## %nonassoc and eof. ##
## ------------------- ##
AT_SETUP([%nonassoc and eof])
AT_DATA([input.y],
[[
%{
#include <stdio.h>
#define YYERROR_VERBOSE 1
#define yyerror(Msg) \
do { \
fprintf (stderr, "%s\n", Msg); \
exit (1); \
} while (0)
/* The current argument. */
static const char *input = NULL;
static int
yylex (void)
{
/* No token stands for end of file. */
if (input && *input)
return *input++;
else
return 0;
}
%}
%nonassoc '<' '>'
%%
expr: expr '<' expr
| expr '>' expr
| '0'
;
%%
int
main (int argc, const char *argv[])
{
if (argc > 1)
input = argv[1];
return yyparse ();
}
]])
# Specify the output files to avoid problems on different file systems.
AT_CHECK([bison input.y -o input.c])
AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
AT_CHECK([./input '0<0'])
# FIXME: This is an actual bug, but a new one, in the sense that
# no one has ever spotted it! The messages are *wrong*: there should
# be nothing there, it should be expected eof.
AT_CHECK([./input '0<0<0'], [1], [],
[parse error, unexpected '<', expecting '<' or '>'
])
AT_CHECK([./input '0>0'])
AT_CHECK([./input '0>0>0'], [1], [],
[parse error, unexpected '>', expecting '<' or '>'
])
AT_CHECK([./input '0<0>0'], [1], [],
[parse error, unexpected '>', expecting '<' or '>'
])
AT_CLEANUP
## ---------------- ##
## Braces parsing. ##
## ---------------- ##
AT_SETUP([braces parsing])
AT_DATA([input.y],
[[/* Bison used to swallow the character after `}'. */
%%
exp: { tests = {{{{{{{{{{}}}}}}}}}}; }
%%
]])
AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore)
AT_CHECK([fgrep 'tests = {{{{{{{{{{}}}}}}}}}};' input.c], 0, [ignore])
AT_CLEANUP
## ------------------ ## ## ------------------ ##
## Duplicate string. ## ## Duplicate string. ##
## ------------------ ## ## ------------------ ##
@@ -63,12 +159,14 @@ AT_CHECK([bison input.y -o input.c -v], 0, [],
AT_CHECK([cat input.output], [], AT_CHECK([cat input.output], [],
[[State 4 contains 1 shift/reduce conflict. [[State 4 contains 1 shift/reduce conflict.
Grammar Grammar
Number, Line, Rule Number, Line, Rule
1 3 exp -> exp OP exp 1 3 exp -> exp OP exp
2 3 exp -> NUM 2 3 exp -> NUM
Terminals, with rules where they appear Terminals, with rules where they appear
$ (-1) $ (-1)
@@ -76,6 +174,7 @@ error (256)
NUM (257) 2 NUM (257) 2
OP (258) 1 OP (258) 1
Nonterminals, with rules where they appear Nonterminals, with rules where they appear
exp (5) exp (5)
@@ -138,6 +237,8 @@ state 5
state 6 state 6
$default accept $default accept
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -162,12 +263,14 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], [])
AT_CHECK([cat input.output], [], AT_CHECK([cat input.output], [],
[[Conflict in state 4 between rule 1 and token OP resolved as shift. [[Conflict in state 4 between rule 1 and token OP resolved as shift.
Grammar Grammar
Number, Line, Rule Number, Line, Rule
1 4 exp -> exp OP exp 1 4 exp -> exp OP exp
2 4 exp -> NUM 2 4 exp -> NUM
Terminals, with rules where they appear Terminals, with rules where they appear
$ (-1) $ (-1)
@@ -175,6 +278,7 @@ error (256)
NUM (257) 2 NUM (257) 2
OP (258) 1 OP (258) 1
Nonterminals, with rules where they appear Nonterminals, with rules where they appear
exp (5) exp (5)
@@ -236,6 +340,8 @@ state 5
state 6 state 6
$default accept $default accept
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -283,8 +389,7 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], [])
# Check the contents of the report. # Check the contents of the report.
AT_CHECK([cat input.output], [], AT_CHECK([cat input.output], [],
[[ [[Grammar
Grammar
Number, Line, Rule Number, Line, Rule
1 2 @1 -> /* empty */ 1 2 @1 -> /* empty */
@@ -292,6 +397,7 @@ Grammar
3 15 @2 -> /* empty */ 3 15 @2 -> /* empty */
4 15 expr -> @2 'c' 4 15 expr -> @2 'c'
Terminals, with rules where they appear Terminals, with rules where they appear
$ (-1) $ (-1)
@@ -300,6 +406,7 @@ $ (-1)
'c' (99) 4 'c' (99) 4
error (256) error (256)
Nonterminals, with rules where they appear Nonterminals, with rules where they appear
expr (6) expr (6)
@@ -378,6 +485,8 @@ state 7
state 8 state 8
$default accept $default accept
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -509,40 +618,30 @@ AT_CHECK([fgrep '//*' union-comment.tab.c], [1], [])
AT_CLEANUP AT_CLEANUP
## ----------------- ## ## ---------------- ##
## Invalid input 1. ## ## Invalid inputs. ##
## ----------------- ## ## ---------------- ##
AT_SETUP([Invalid input: 1]) AT_SETUP([Invalid inputs])
AT_DATA([input.y], AT_DATA([input.y],
[[%% [[%%
? ?
default: 'a' }
%{
%&
%a
%-
]]) ]])
AT_CHECK([bison input.y], [1], [], AT_CHECK([bison input.y], [1], [],
[[input.y:2: invalid input: `?' [[input.y:2: invalid input: `?'
input.y:3: fatal error: no rules in the input grammar input.y:3: invalid input: `}'
]]) input.y:4: invalid input: `%{'
input.y:5: invalid input: `%&'
AT_CLEANUP input.y:6: invalid input: `%a'
input.y:7: invalid input: `%-'
## ----------------- ##
## Invalid input 2. ##
## ----------------- ##
AT_SETUP([Invalid input: 2])
AT_DATA([input.y],
[[%%
default: 'a' }
]])
AT_CHECK([bison input.y], [1], [],
[[input.y:2: invalid input: `}'
]]) ]])
AT_CLEANUP AT_CLEANUP
@@ -570,31 +669,230 @@ AT_CLEANUP
## --------------------- ## ## -------------- ##
## Invalid CPP headers. ## ## Web2c Report. ##
## --------------------- ## ## -------------- ##
# AT_TEST_CPP_GUARD_H([INPUT-FILE-BASE) # The generation of the reduction was once wrong in Bison, and made it
# ------------------------------------- # miss some reductions. In the following test case, the reduction on
m4_define([AT_TEST_CPP_GUARD_H], # `undef_id_tok' in state 1 was missing. This is stripped down from
[AT_SETUP([Invalid CPP guards: $1]) # the actual web2c.y.
# Possibly create inner directories. AT_SETUP([Web2c Report])
dirname=`AS_DIRNAME([$1])`
AS_MKDIR_P([$dirname])
AT_DATA([$1.y], AT_DATA([input.y],
[%% [[%token undef_id_tok const_id_tok
dummy:
])
AT_CHECK([bison --defines=$1.h $1.y]) %start CONST_DEC_PART
%%
CONST_DEC_PART:
CONST_DEC_LIST
;
# CPP should be happy with it. CONST_DEC_LIST:
AT_CHECK([$CC -E $1.h], 0, [ignore]) CONST_DEC
| CONST_DEC_LIST CONST_DEC
;
CONST_DEC:
{ } undef_id_tok '=' const_id_tok ';'
;
%%
]])
AT_CHECK([bison -v input.y])
AT_CHECK([sed -n 's/ *$//;/^$/!p' input.output], 0,
[[Grammar
Number, Line, Rule
1 6 CONST_DEC_PART -> CONST_DEC_LIST
2 10 CONST_DEC_LIST -> CONST_DEC
3 12 CONST_DEC_LIST -> CONST_DEC_LIST CONST_DEC
4 15 @1 -> /* empty */
5 15 CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';'
Terminals, with rules where they appear
$ (-1)
';' (59) 5
'=' (61) 5
error (256)
undef_id_tok (257) 5
const_id_tok (258) 5
Nonterminals, with rules where they appear
CONST_DEC_PART (7)
on left: 1
CONST_DEC_LIST (8)
on left: 2 3, on right: 1 3
CONST_DEC (9)
on left: 5, on right: 2 3
@1 (10)
on left: 4, on right: 5
state 0
$default reduce using rule 4 (@1)
CONST_DEC_PART go to state 9
CONST_DEC_LIST go to state 1
CONST_DEC go to state 2
@1 go to state 3
state 1
CONST_DEC_PART -> CONST_DEC_LIST . (rule 1)
CONST_DEC_LIST -> CONST_DEC_LIST . CONST_DEC (rule 3)
undef_id_tok reduce using rule 4 (@1)
$default reduce using rule 1 (CONST_DEC_PART)
CONST_DEC go to state 4
@1 go to state 3
state 2
CONST_DEC_LIST -> CONST_DEC . (rule 2)
$default reduce using rule 2 (CONST_DEC_LIST)
state 3
CONST_DEC -> @1 . undef_id_tok '=' const_id_tok ';' (rule 5)
undef_id_tok shift, and go to state 5
state 4
CONST_DEC_LIST -> CONST_DEC_LIST CONST_DEC . (rule 3)
$default reduce using rule 3 (CONST_DEC_LIST)
state 5
CONST_DEC -> @1 undef_id_tok . '=' const_id_tok ';' (rule 5)
'=' shift, and go to state 6
state 6
CONST_DEC -> @1 undef_id_tok '=' . const_id_tok ';' (rule 5)
const_id_tok shift, and go to state 7
state 7
CONST_DEC -> @1 undef_id_tok '=' const_id_tok . ';' (rule 5)
';' shift, and go to state 8
state 8
CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';' . (rule 5)
$default reduce using rule 5 (CONST_DEC)
state 9
$ go to state 10
state 10
$ go to state 11
state 11
$default accept
]])
AT_CLEANUP AT_CLEANUP
])
AT_TEST_CPP_GUARD_H([input/input])
AT_TEST_CPP_GUARD_H([9foo]) ## --------------- ##
## Web2c Actions. ##
## --------------- ##
# The generation of the mapping `state -> action' was once wrong in
# extremely specific situations. web2c.y exhibits this situation.
# Below is a stripped version of the grammar. It looks like one can
# simplify it further, but just don't: it is tuned to exhibit a bug,
# which disapears when applying sane grammar transformations.
#
# It used to be wrong on yydefact only:
#
# static const short yydefact[] =
# {
# - 2, 0, 1, 0, 0, 2, 3, 2, 5, 4,
# + 2, 0, 1, 0, 0, 0, 3, 2, 5, 4,
# 0, 0
# };
#
# but let's check all the tables.
AT_SETUP([Web2c Actions])
AT_DATA([input.y],
[[%%
statement: struct_stat;
struct_stat: /* empty. */ | if else;
if: "if" "const" "then" statement;
else: "else" statement;
%%
]])
AT_CHECK([bison -v input.y -o input.c])
# Check only the tables. We don't use --no-parser, because it is
# still to be implemented in the experimental branch of Bison.
AT_CHECK([[sed -n 's/ *$//;/^static const.*\[\] =/,/^}/p' input.c]], 0,
[[static const char yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
6
};
static const short yyprhs[] =
{
0, 0, 2, 3, 6, 11
};
static const short yyrhs[] =
{
8, 0, 0, 9, 10, 0, 3, 4, 5, 7,
0, 6, 7, 0
};
static const short yyrline[] =
{
0, 2, 3, 3, 4, 5
};
static const char *const yytname[] =
{
"$", "error", "$undefined.", "\"if\"", "\"const\"", "\"then\"",
"\"else\"", "statement", "struct_stat", "if", "else", 0
};
static const short yyr1[] =
{
0, 7, 8, 8, 9, 10
};
static const short yyr2[] =
{
0, 1, 0, 2, 4, 2
};
static const short yydefact[] =
{
2, 0, 1, 0, 0, 2, 3, 2, 5, 4,
0, 0, 0
};
static const short yydefgoto[] =
{
8, 2, 3, 6
};
static const short yypact[] =
{
-2, -1,-32768, -4, 1, -2,-32768, -2,-32768,-32768,
4, 5,-32768
};
static const short yypgoto[] =
{
0,-32768,-32768,-32768
};
static const short yytable[] =
{
10, 1, 5, 4, 11, 12, 7, 9
};
static const short yycheck[] =
{
0, 3, 6, 4, 0, 0, 5, 7
};
]])
AT_CLEANUP
+193
View File
@@ -0,0 +1,193 @@
# Exercising Bison Grammar Sets. -*- Autotest -*-
# Copyright 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_BANNER([[Grammar Sets (Firsts etc.).]])
## ---------- ##
## Nullable. ##
## ---------- ##
AT_SETUP([Nullable])
# At some point, nullable had been smoking grass, and managed to say:
#
# Entering set_nullable
# NULLABLE
# 'e': yes
# (null): no
# ...
AT_DATA([[input.y]],
[[%%
e: 'e' | /* Nothing */;
]])
AT_CHECK([[bison --trace input.y]], [], [],
[[RITEM
'e' (rule 1)
(rule 2)
DERIVES
e derives
1: 'e' (rule 1)
2: (rule 2)
Entering set_nullable
NULLABLE
e: yes
TC: Input BEGIN
@&t@
0
.-.
0| |
`-'
TC: Input END
TC: Output BEGIN
@&t@
0
.-.
0| |
`-'
TC: Output END
FIRSTS
e firsts
4 (e)
FDERIVES
e derives
1: 'e'
2:
Processing state 0 (reached by $)
Closure: input
Closure: output
0: . 'e' (rule 1)
2: . (rule 2)
Entering new_itemsets, state = 0
Entering append_states, state = 0
Entering get_state, state = 0, symbol = 3 ('e')
Entering new_state, state = 0, symbol = 3 ('e')
Exiting get_state => 1
Processing state 1 (reached by 'e')
Closure: input
1: . (rule 1)
Closure: output
1: . (rule 1)
Entering new_itemsets, state = 1
Entering append_states, state = 1
transpose: input
0: @&t@
transpose: output
0: @&t@
]])
AT_CLEANUP
## ---------------- ##
## Broken Closure. ##
## ---------------- ##
# TC was once broken during a massive `simplification' of the code.
# It resulted in bison dumping core on the following grammar (the
# computation of FIRSTS uses TC). It managed to produce a pretty
# exotic closure:
#
# TC: Input
#
# 01234567
# +--------+
# 0| 1 |
# 1| 1 |
# 2| 1 |
# 3| 1 |
# 4| 1 |
# 5| 1 |
# 6| 1|
# 7| |
# +--------+
#
# TC: Output
#
# 01234567
# +--------+
# 0| 1 |
# 1| 111 |
# 2| 111 |
# 3| 1111 |
# 4| 111 1 |
# 5| 111 1 |
# 6| 111 1|
# 7| 111 |
# +--------+
#
# instead of that below.
AT_SETUP([Broken Closure])
AT_DATA([input.y],
[[%%
a: b
b: c
c: d
d: e
e: f
f: g
g: h
h: 'h'
]])
AT_CHECK([bison --trace input.y 2>&1 |
sed -n '/^TC: Output BEGIN/,/^TC: Output END/p'],
[0],
[[TC: Output BEGIN
@&t@
01234567
.--------.
0| 1111111|
1| 111111|
2| 11111|
3| 1111|
4| 111|
5| 11|
6| 1|
7| |
`--------'
TC: Output END
]])
AT_CLEANUP
+3
View File
@@ -25,7 +25,10 @@ AT_INIT
AT_TESTED([bison]) AT_TESTED([bison])
m4_include([input.at])
m4_include([output.at]) m4_include([output.at])
m4_include([sets.at])
m4_include([reduce.at])
m4_include([calc.at]) m4_include([calc.at])
m4_include([torture.at]) m4_include([torture.at])
m4_include([regression.at]) m4_include([regression.at])
+1199 -7
View File
File diff suppressed because it is too large Load Diff