Compare commits

..
135 Commits
Author SHA1 Message Date
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
Akim Demaille cf2e198269 Version 1.30e. 2001-11-26 16:47:53 +00:00
Akim Demaille af4483a0ab Typo. 2001-11-26 15:25:10 +00:00
Akim Demaille 674fd9acbc * src/reader.c (readgram): Make sure rules for mid-rule actions
have a lineno equal to that of their host rule.
Reported by Hans Aberg.
* tests/regression.at (Rule Line Numbers): New.
2001-11-26 15:24:06 +00:00
Akim Demaille 6fedd4d1d6 * src/LR0.c (allocate_itemsets): kernel_size contains ints, not
size_ts.
Reported by Hans Aberg.
2001-11-26 13:01:10 +00:00
Akim Demaille abe1baa044 * src/complain.c, src/complain.h (error): Remove, provided by
lib/error.[ch].
2001-11-26 11:26:35 +00:00
Akim Demaille 33285af04d * src/reader.c (read_declarations): Don't abort on tok_illegal,
issue an error message.
* tests/regression.at (Invalid %directive): New.
Reported by Hans Aberg.
2001-11-26 09:49:58 +00:00
Akim Demaille cd7f95831e * configure.in: Invoke AC_FUNC_OBSTACK and AC_FUNC_ERROR_AT_LINE.
* lib/Makefile.am (libbison_a_SOURCES): Adjust.
2001-11-26 09:19:56 +00:00
Akim Demaille 1b9a8440cd * src/conflicts.c (conflicts_print): Don't complain at all when
there are no reduce/reduce conflicts, and as many shift/reduce
conflicts as expected.
* tests/regression.at (%expect right): Adjust.
2001-11-26 09:18:40 +00:00
Marc Autret aead559e00 * doc/bison.texinfo (Mystery Conflicts): Hint '-v' use.
From Golubev I. N.
2001-11-25 12:57:33 +00:00
Akim Demaille 92b69b7f09 * lib/alloca.c: Update, from fileutils. 2001-11-23 14:55:36 +00:00
Akim Demaille 6e303f08d6 * lib/Makefile.am (libbison_a_LIBADD): Add @ALLOCA@. 2001-11-23 14:18:36 +00:00
Akim Demaille 3dfc01e247 Regen. 2001-11-23 14:17:53 +00:00
Akim Demaille 1503820f54 1.30e. 2001-11-23 14:15:42 +00:00
Akim Demaille bc9bb28004 Update. 2001-11-23 14:15:08 +00:00
Akim Demaille 16c4a35041 * src/system.h: Include alloca.h.
* src/main.c (main) [C_ALLOCA]: Call alloca (0).
2001-11-23 14:13:19 +00:00
Akim Demaille f0451dba71 * src/print_graph.c (print_actions): Remove `rule', unused.
* src/LR0.c (kernel_size): Contain `int' instead of `size_t' to
pacify GCC's signed < unsigned warnings.
* src/closure.c (itemsetsize): Likewise.
* src/reader.c (symbol_list_new): Static.
2001-11-23 14:04:08 +00:00
Akim Demaille a9f37dee0c Attaching lineno to buckets is stupid, since only one copy of each
symbol is kept, only the line of the first occurrence is kept too.
* src/symtab.h, src/symtab.c (bucket): Remove the line member.
* src/reader.c (rline_allocated): Remove, unused.
(symbol_list): Have a `line' member.
(symbol_list_new): New.
(readgram): Use it.
* src/print.c (print_grammar): Output the rule line numbers.
* tests/regression.at (Solved SR Conflicts)
(Unresolved SR Conflicts): Adjust.
Reported by Hans Aberg.
2001-11-23 14:03:43 +00:00
Akim Demaille 4b0979fcf3 Englishoes reported by Jim. 2001-11-21 11:45:51 +00:00
Akim Demaille cc35239e1b Remove all po/ generated files from repository. 2001-11-20 13:30:31 +00:00
Akim Demaille 2e2cbb3fad Remove doc/ generated files from the repository. 2001-11-20 13:29:40 +00:00
Akim Demaille adb4edee47 Version 1.30d. 2001-11-20 13:26:58 +00:00
Akim Demaille 65490badba . 2001-11-20 13:21:23 +00:00
Akim Demaille 8b044b8540 Adjust. 2001-11-20 13:14:13 +00:00
Akim Demaille 0704bc9b8e * po/sv.po: New.
* configure.in (ALL_LINGUAS): Adjust.
* po/POTFILE.in: Remove `nullable.c' and `derives.c' which no
longer contains strings to translate.
2001-11-20 13:10:12 +00:00
Akim Demaille 2b7c2ef124 * src/conflicts.c (conflicts_print): Add a missing n. 2001-11-19 11:07:50 +00:00
Akim Demaille 48e38d301e Formatting changes. 2001-11-19 10:28:25 +00:00
Akim Demaille 560757768c * src/nullable.c (nullable_print): New.
(set_nullable): Call it when tracing.
Better locality of variables.
2001-11-19 09:27:37 +00:00
Akim Demaille 238b8134ec * src/print.c (print_actions): Better locality of variables. 2001-11-19 09:27:24 +00:00
Akim Demaille 483642486d * src/derives.c (print_derives): Fix and enrich.
* src/closure.c (print_fderives): Likewise.
2001-11-19 09:27:11 +00:00
Akim Demaille 146ad4c8d0 * src/closure.c (itemsetend): Remove, replaced with...
(itemsetsize): new.
2001-11-19 09:26:57 +00:00
Akim Demaille f2a4c94506 * src/LR0.c (kernel_end): Remove, replaced with...
(kernel_size): new.
2001-11-19 09:26:43 +00:00
Akim Demaille 65fae038b9 * src/conflicts.c (set_conflicts): Use arrays instead of pointers
to clarify.
2001-11-19 09:26:30 +00:00
Akim Demaille e1cb5fb523 * src/closure.c (closure): Use arrays instead of pointers to clarify. 2001-11-19 09:26:17 +00:00
Akim Demaille 64fabbb49f * src/closure.c, src/derives.c, src/nullable.c: Adjust various
trace messages.
* src/LR0.c: Likewise.
(allocate_itemsets): Use arrays instead of pointers to clarify.
2001-11-19 09:25:36 +00:00
Akim Demaille 3b2925a060 * src/getargs.c (statistics_flag): Replace with...
(trace_flag): New.
(longopts): Accept --trace instead of --statistics.
* src/getargs.h: Adjust.
* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.
2001-11-19 09:21:26 +00:00
Akim Demaille 83bcf86639 * src/LR0.c (new_itemsets, get_state): Use more arrays and less
pointers to clarify the code.
(save_reductions, save_shifts): Factor common parts of alternatives.
2001-11-19 09:17:53 +00:00
Akim Demaille 8639df64a6 * src/LR0.c (new_state, get_state): Complete TRACE code.
* src/closure.c: Include `reader.h' to get `tags', needed by the
trace code.
Rename the conditional DEBUG as TRACE.
Output consistently TRACEs to stderr, not stdout.
* src/derives.c: Likewise.
* src/reduce.c: (inaccessable_symbols): Using if is better style
than goto.
Use `#if TRACE' instead of `#if 0' for tracing code.
2001-11-19 09:16:24 +00:00
Akim Demaille 377bd7c9a2 * src/system.h (LIST_FREE, shortcpy): New.
* src/LR0.c: Use them.
* src/output.c (free_itemsets, free_reductions, free_shifts):
Remove, replaced by LIST_FREE.
2001-11-19 09:14:54 +00:00
Akim Demaille b4a7a230f1 * src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC)
(REDUCTIONS_ALLOC):  New.
* src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory
allocation.
2001-11-19 09:14:26 +00:00
Akim Demaille c1586e58fe * src/LR0.c (new_state): Complete trace code.
* src/nullable.c (set_nullable): Don't translate traces.
2001-11-19 09:14:07 +00:00
Akim Demaille 50766eee39 * src/print_graph.c (print_core): Better locality of variables.
* src/print.c (print_core): Likewise.
2001-11-19 09:13:53 +00:00
Akim Demaille dc3b81cd67 * src/vcg.c: You do the output, so you are responsible of the
handling of VCG syntax, in particular: use quotearg.
* src/print_graph.c: Don't.
(print_actions): Don't output the actions as part of the nodes,
since that's the job of the edges.
(print_state): Don't output by hand: fill the node description,
and ask for its output.
2001-11-19 09:13:40 +00:00
Akim Demaille c555896775 * src/bison.simple (yyparse): When reporting verbosely an error,
no longer issue additional quotes around token names.
* tests/calc.at: Adjust.
2001-11-19 09:13:26 +00:00
Akim Demaille 35f61cb998 * src/symtab.h, src/symtab.c: line' is a new member of bucket'.
* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
* src/output.c: Adjust.
2001-11-19 09:13:12 +00:00
Akim Demaille 9291f914de * src/gram.h (rprec, rprecsym, rassoc): Remove, now part of...
(rule_t): this.
* src/conflicts.c, src/reader.c, src/reduce.c: Adjust.
2001-11-19 09:12:49 +00:00
Akim Demaille ff1581dddb * src/gram.h (rule_t): New.
(rule_table): New.
(rrhs, rlhs): Remove, part of state_t.
* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/reader.c, src/reduce.c: Adjust.
2001-11-19 09:12:25 +00:00
Akim Demaille 4b9170b2c0 * src/reader.c (symbols_output): New, extracted from...
(packsymbols): Here.
(reader): Call it.
2001-11-19 09:12:02 +00:00
Akim Demaille 523a9eafdc * src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with...
(maxrhs): this new function.
2001-11-19 09:11:47 +00:00
Akim Demaille bcdf932ed9 * src/lalr.c (F): New macro to access to the variable F.
Adjust.
2001-11-19 09:11:34 +00:00
Akim Demaille e2aabb3dc6 * src/lalr.h (LA): New macro to access to the variable LA.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
* src/lalr.c: Adjust.
2001-11-19 09:11:21 +00:00
Akim Demaille e8ebe4b0c7 * src/lalr.c (initialize_LA): Only initialize LA. Let...
(set_state_table): handle the `lookaheads' members.
2001-11-19 09:11:03 +00:00
Akim Demaille 9043475828 * src/lalr.h (lookaheads): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:47 +00:00
Akim Demaille d80a86e0b5 * src/lalr.h (consistent): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:30 +00:00
Akim Demaille cfc3acf242 * src/lalr.h (reduction_table, shift_table): Removed arrays, which
contents is now members of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:12 +00:00
Akim Demaille 93337ac41c * src/lalr.h (state_t): New.
(state_table): Be a state_t * instead of a core **.
(accessing_symbol): Remove, part of state_t.
* src/lalr.c: Adjust.
(set_accessing_symbol): Merge into...
(set_state_table): this.
* src/print_graph.c, src/conflicts.c: Adjust.
2001-11-19 09:08:44 +00:00
Akim Demaille 0d7803637b Bump to 1.30d. 2001-11-14 17:52:37 +00:00
Akim Demaille a62c863ec3 . 2001-11-14 15:35:09 +00:00
Akim Demaille 1e883de90c Version 1.30c. 2001-11-14 15:25:51 +00:00
Akim Demaille efcff8cd5c * tests/calc.at, tests/output.at, tests/regression.at,
* tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g:
now the tests are run in private dirs, therefore AC_CLEANUP and
family can be simplified to 0-ary.
* tests/atlocal.in: Now that we run `elsewhere' than in tests/,
use abs. path to find config.h.
2001-11-14 15:16:40 +00:00
Akim Demaille 3e85a00236 * src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be
defined only if yyoverflow is defined, to avoid `warning: unused
variable `yyvs1''.
Reported by The Test Suite.
2001-11-14 14:57:06 +00:00
Akim Demaille f85c981ac1 * src/print.c: Include reduce.h.
Reported by Hans Aberg.
2001-11-14 14:43:29 +00:00
Akim Demaille 5cb10dae3c * src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer):
Revert a previous patch:  these are really const.
* src/conflicts.c (conflict_report): Additional useless pair of
braces to pacify GCC's warnings for `if () if () {} else {}'.
* src/lex.c (parse_percent_token): Replace equal_offset with
arg_offset.
arg is const.
Be sure to strdup `arg' when used, since there is no reason for
token_buffer not to change.
2001-11-14 14:42:14 +00:00
Akim Demaille 26e1ca45ba * src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper
definition.
* src/main.c (main): Use them.
Suggested by Hans Aberg.
2001-11-14 14:14:48 +00:00
Akim Demaille 8888e43b2c Bump to 1.30c. 2001-11-12 10:31:00 +00:00
Akim Demaille d9ca2df2aa . 2001-11-12 10:21:45 +00:00
90 changed files with 6128 additions and 11006 deletions
+749 -1
View File
@@ -1,3 +1,751 @@
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]>
Version 1.30e.
2001-11-26 Akim Demaille <[email protected]>
* src/reader.c (readgram): Make sure rules for mid-rule actions
have a lineno equal to that of their host rule.
Reported by Hans Aberg.
* tests/regression.at (Rule Line Numbers): New.
2001-11-26 Akim Demaille <[email protected]>
* src/LR0.c (allocate_itemsets): kernel_size contains ints, not
size_ts.
Reported by Hans Aberg.
2001-11-26 Akim Demaille <[email protected]>
* src/complain.c, src/complain.h (error): Remove, provided by
lib/error.[ch].
2001-11-26 Akim Demaille <[email protected]>
* src/reader.c (read_declarations): Don't abort on tok_illegal,
issue an error message.
* tests/regression.at (Invalid %directive): New.
Reported by Hans Aberg.
2001-11-26 Akim Demaille <[email protected]>
* configure.in: Invoke AC_FUNC_OBSTACK and AC_FUNC_ERROR_AT_LINE.
* lib/Makefile.am (libbison_a_SOURCES): Adjust.
2001-11-26 Akim Demaille <[email protected]>
* src/conflicts.c (conflicts_print): Don't complain at all when
there are no reduce/reduce conflicts, and as many shift/reduce
conflicts as expected.
* tests/regression.at (%expect right): Adjust.
2001-11-23 Akim Demaille <[email protected]>
* lib/alloca.c: Update, from fileutils.
2001-11-23 Akim Demaille <[email protected]>
* lib/Makefile.am (libbison_a_LIBADD): Add @ALLOCA@.
2001-11-23 Akim Demaille <[email protected]>
* src/system.h: Include alloca.h.
* src/main.c (main) [C_ALLOCA]: Call alloca (0).
2001-11-23 Akim Demaille <[email protected]>
* src/print_graph.c (print_actions): Remove `rule', unused.
* src/LR0.c (kernel_size): Contain `int' instead of `size_t' to
pacify GCC's signed < unsigned warnings.
* src/closure.c (itemsetsize): Likewise.
* src/reader.c (symbol_list_new): Static.
2001-11-23 Akim Demaille <[email protected]>
Attaching lineno to buckets is stupid, since only one copy of each
symbol is kept, only the line of the first occurrence is kept too.
* src/symtab.h, src/symtab.c (bucket): Remove the line member.
* src/reader.c (rline_allocated): Remove, unused.
(symbol_list): Have a `line' member.
(symbol_list_new): New.
(readgram): Use it.
* src/print.c (print_grammar): Output the rule line numbers.
* tests/regression.at (Solved SR Conflicts)
(Unresolved SR Conflicts): Adjust.
Reported by Hans Aberg.
2001-11-20 Akim Demaille <[email protected]>
Version 1.30d.
2001-11-20 Akim Demaille <[email protected]>
* po/sv.po: New.
* configure.in (ALL_LINGUAS): Adjust.
* po/POTFILE.in: Remove `nullable.c' and `derives.c' which no
longer contains strings to translate.
2001-11-19 Akim Demaille <[email protected]>
* src/conflicts.c (conflicts_print): Add a missing \n.
2001-11-19 Akim Demaille <[email protected]>
* src/nullable.c (nullable_print): New.
(set_nullable): Call it when tracing.
Better locality of variables.
2001-11-19 Akim Demaille <[email protected]>
* src/print.c (print_actions): Better locality of variables.
2001-11-19 Akim Demaille <[email protected]>
* src/derives.c (print_derives): Fix and enrich.
* src/closure.c (print_fderives): Likewise.
2001-11-19 Akim Demaille <[email protected]>
* src/closure.c (itemsetend): Remove, replaced with...
(itemsetsize): new.
2001-11-19 Akim Demaille <[email protected]>
* src/LR0.c (kernel_end): Remove, replaced with...
(kernel_size): new.
2001-11-19 Akim Demaille <[email protected]>
* src/conflicts.c (set_conflicts): Use arrays instead of pointers
to clarify.
2001-11-19 Akim Demaille <[email protected]>
* src/closure.c (closure): Use arrays instead of pointers to clarify.
2001-11-19 Akim Demaille <[email protected]>
* src/closure.c, src/derives.c, src/nullable.c: Adjust various
trace messages.
* src/LR0.c: Likewise.
(allocate_itemsets): Use arrays instead of pointers to clarify.
2001-11-19 Akim Demaille <[email protected]>
* src/getargs.c (statistics_flag): Replace with...
(trace_flag): New.
(longopts): Accept --trace instead of --statistics.
* src/getargs.h: Adjust.
* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.
2001-11-19 Akim Demaille <[email protected]>
* src/LR0.c (new_itemsets, get_state): Use more arrays and fewer
pointers to clarify the code.
(save_reductions, save_shifts): Factor common parts of alternatives.
2001-11-19 Akim Demaille <[email protected]>
* src/LR0.c (new_state, get_state): Complete TRACE code.
* src/closure.c: Include `reader.h' to get `tags', needed by the
trace code.
Rename the conditional DEBUG as TRACE.
Output consistently TRACEs to stderr, not stdout.
* src/derives.c: Likewise.
* src/reduce.c: (inaccessable_symbols): Using if is better style
than goto.
Use `#if TRACE' instead of `#if 0' for tracing code.
2001-11-19 Akim Demaille <[email protected]>
* src/system.h (LIST_FREE, shortcpy): New.
* src/LR0.c: Use them.
* src/output.c (free_itemsets, free_reductions, free_shifts):
Remove, replaced by LIST_FREE.
2001-11-19 Akim Demaille <[email protected]>
* src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC)
(REDUCTIONS_ALLOC): New.
* src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory
allocation.
2001-11-19 Akim Demaille <[email protected]>
* src/LR0.c (new_state): Complete trace code.
* src/nullable.c (set_nullable): Don't translate traces.
2001-11-19 Akim Demaille <[email protected]>
* src/print_graph.c (print_core): Better locality of variables.
* src/print.c (print_core): Likewise.
2001-11-19 Akim Demaille <[email protected]>
* src/vcg.c: You do the output, so you are responsible of the
handling of VCG syntax, in particular: use quotearg.
* src/print_graph.c: Don't.
(print_actions): Don't output the actions as part of the nodes,
since that's the job of the edges.
(print_state): Don't output by hand: fill the node description,
and ask for its output.
2001-11-19 Akim Demaille <[email protected]>
* src/bison.simple (yyparse): When verbosely reporting an error,
no longer put additional quotes around token names.
* tests/calc.at: Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/symtab.h, src/symtab.c: `line' is a new member of `bucket'.
* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
* src/output.c: Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/gram.h (rprec, rprecsym, rassoc): Remove, now part of...
(rule_t): this.
* src/conflicts.c, src/reader.c, src/reduce.c: Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/gram.h (rule_t): New.
(rule_table): New.
(rrhs, rlhs): Remove, part of state_t.
* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/reader.c, src/reduce.c: Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/reader.c (symbols_output): New, extracted from...
(packsymbols): Here.
(reader): Call it.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with...
(maxrhs): this new function.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.c (F): New macro to access the variable F.
Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.h (LA): New macro to access the variable LA.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
* src/lalr.c: Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.c (initialize_LA): Only initialize LA. Let...
(set_state_table): handle the `lookaheads' members.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.h (lookaheads): Removed array, whose contents is now
a member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.h (consistent): Removed array, whose contents is now
a member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.h (reduction_table, shift_table): Removed arrays, whose
contents are now members of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 Akim Demaille <[email protected]>
* src/lalr.h (state_t): New.
(state_table): Be a state_t * instead of a core **.
(accessing_symbol): Remove, part of state_t.
* src/lalr.c: Adjust.
(set_accessing_symbol): Merge into...
(set_state_table): this.
* src/print_graph.c, src/conflicts.c: Adjust.
2001-11-14 Akim Demaille <[email protected]>
Version 1.30c.
2001-11-14 Akim Demaille <[email protected]>
* tests/calc.at, tests/output.at, tests/regression.at,
* tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g:
now the tests are run in private dirs, therefore AC_CLEANUP and
family can be simplified to 0-ary.
* tests/atlocal.in: Now that we run `elsewhere' than in tests/,
use abs. path to find config.h.
2001-11-14 Akim Demaille <[email protected]>
* tests/calc.at (AT_CHECK_CALC): Don't try to check the compiler's
stderr, there can be way too much random noise.
Instead pass -Werror to GCC and rely on the exit status.
Reported by Wolfram Wagner.
2001-11-14 Akim Demaille <[email protected]>
* src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be
defined only if yyoverflow is defined, to avoid `warning: unused
variable `yyvs1''.
Reported by The Test Suite.
2001-11-14 Akim Demaille <[email protected]>
* src/print.c: Include reduce.h.
Reported by Hans Aberg.
2001-11-14 Akim Demaille <[email protected]>
* src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer):
Revert a previous patch: these are really const.
* src/conflicts.c (conflict_report): Additional useless pair of
braces to pacify GCC's warnings for `if () if () {} else {}'.
* src/lex.c (parse_percent_token): Replace equal_offset with
arg_offset.
arg is const.
Be sure to strdup `arg' when used, since there is no reason for
token_buffer not to change.
2001-11-14 Akim Demaille <[email protected]>
* src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper
definition.
* src/main.c (main): Use them.
Suggested by Hans Aberg.
2001-11-12 Akim Demaille <[email protected]> 2001-11-12 Akim Demaille <[email protected]>
Version 1.30b. Version 1.30b.
@@ -82,7 +830,7 @@
* src/bison.simple (YYSTACK_REALLOC): New. * src/bison.simple (YYSTACK_REALLOC): New.
(yyparse) [!yyoverflow]: Use it and free the old stack. (yyparse) [!yyoverflow]: Use it and free the old stack.
Reported by FIXME: Who. Reported by Per Allansson.
2001-11-05 Akim Demaille <[email protected]> 2001-11-05 Akim Demaille <[email protected]>
+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
+39
View File
@@ -1,6 +1,45 @@
Bison News Bison News
---------- ----------
Changes in version 1.30f:
* Reduced Grammars
Fixed bugs when reporting useless nonterminals.
* 64 bit hosts
The parsers work properly on 64 bit hosts.
Changes in version 1.30e:
* Error messages
Some calls to strerror resulted in scrambled or missing error messages.
* %expect
When the number of shift/reduce conflicts is correct, don't issue
any warning.
* The verbose report includes the rule line numbers.
* Rule line numbers are fixed in traces.
Changes in version 1.30d:
* Swedish translation
* Parse errors
Verbose parse error messages from the parsers are better looking.
Before: 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: Changes in version 1.30b:
* Fixed parser memory leaks. * Fixed parser memory leaks.
+3
View File
@@ -8,6 +8,7 @@ Alexander Belopolsky [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]
Fabrice Bauzac [email protected] Fabrice Bauzac [email protected]
Hans Aberg [email protected] Hans Aberg [email protected]
Jesse Thilo [email protected] Jesse Thilo [email protected]
@@ -21,11 +22,13 @@ 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]
Wolfram Wagner [email protected]
Wwp [email protected] Wwp [email protected]
Many people are not named here because we lost track of them. We Many people are not named here because we lost track of them. We
+67 -63
View File
@@ -5,29 +5,30 @@
*/ */
#undef CRAY_STACKSEG_END #undef CRAY_STACKSEG_END
/* Define if using `alloca.c'. */ /* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA #undef C_ALLOCA
/* Define to 1 if translation of program messages to the user's native /* Define to 1 if translation of program messages to the user's native
language is requested. */ language is requested. */
#undef ENABLE_NLS #undef ENABLE_NLS
/* Define if you have `alloca', as a function or macro. */ /* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA #undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */ /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H #undef HAVE_ALLOCA_H
/* Define if you have the <argz.h> header file. */ /* Define to 1 if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H #undef HAVE_ARGZ_H
/* Define if you have the <ctype.h> header file. */ /* Define to 1 if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H #undef HAVE_CTYPE_H
/* Define if backslash-a works in C strings. */ /* Define if backslash-a works in C strings. */
#undef HAVE_C_BACKSLASH_A #undef HAVE_C_BACKSLASH_A
/* Define if you have the `dcgettext' function. */ /* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT #undef HAVE_DCGETTEXT
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't. /* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
@@ -60,46 +61,46 @@
/* Define if the realloc check has been performed. */ /* Define if the realloc check has been performed. */
#undef HAVE_DONE_WORKING_REALLOC_CHECK #undef HAVE_DONE_WORKING_REALLOC_CHECK
/* Define if you have the `doprnt' function. */ /* Define to 1 if you have the `doprnt' function. */
#undef HAVE_DOPRNT #undef HAVE_DOPRNT
/* Define if you have the `feof_unlocked' function. */ /* Define to 1 if you have the `feof_unlocked' function. */
#undef HAVE_FEOF_UNLOCKED #undef HAVE_FEOF_UNLOCKED
/* Define if you have the `fgets_unlocked' function. */ /* Define to 1 if you have the `fgets_unlocked' function. */
#undef HAVE_FGETS_UNLOCKED #undef HAVE_FGETS_UNLOCKED
/* Define if you have the `getcwd' function. */ /* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD #undef HAVE_GETCWD
/* Define if you have the `getegid' function. */ /* Define to 1 if you have the `getegid' function. */
#undef HAVE_GETEGID #undef HAVE_GETEGID
/* Define if you have the `geteuid' function. */ /* Define to 1 if you have the `geteuid' function. */
#undef HAVE_GETEUID #undef HAVE_GETEUID
/* Define if you have the `getgid' function. */ /* Define to 1 if you have the `getgid' function. */
#undef HAVE_GETGID #undef HAVE_GETGID
/* Define if you have the `getpagesize' function. */ /* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE #undef HAVE_GETPAGESIZE
/* Define if the GNU gettext() function is already present or preinstalled. */ /* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT #undef HAVE_GETTEXT
/* Define if you have the `getuid' function. */ /* Define to 1 if you have the `getuid' function. */
#undef HAVE_GETUID #undef HAVE_GETUID
/* Define if you have the iconv() function. */ /* Define if you have the iconv() function. */
#undef HAVE_ICONV #undef HAVE_ICONV
/* Define if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H #undef HAVE_INTTYPES_H
/* Define if you have the `isascii' function. */ /* Define to 1 if you have the `isascii' function. */
#undef HAVE_ISASCII #undef HAVE_ISASCII
/* Define if you have the `iswprint' function. */ /* Define to 1 if you have the `iswprint' function. */
#undef HAVE_ISWPRINT #undef HAVE_ISWPRINT
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
@@ -108,127 +109,130 @@
/* Define if your <locale.h> file defines LC_MESSAGES. */ /* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES #undef HAVE_LC_MESSAGES
/* Define if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H #undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */ /* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H #undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */ /* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H #undef HAVE_MALLOC_H
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ /* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC #undef HAVE_MBRTOWC
/* Define if you have the `mbsinit' function. */ /* Define to 1 if you have the `mbsinit' function. */
#undef HAVE_MBSINIT #undef HAVE_MBSINIT
/* Define if you have the `memchr' function. */ /* Define to 1 if you have the `memchr' function. */
#undef HAVE_MEMCHR #undef HAVE_MEMCHR
/* Define if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H #undef HAVE_MEMORY_H
/* Define if you have the `mempcpy' function. */ /* Define to 1 if you have the `mempcpy' function. */
#undef HAVE_MEMPCPY #undef HAVE_MEMPCPY
/* Define if you have the `mkstemp' function. */ /* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP #undef HAVE_MKSTEMP
/* Define if you have a working `mmap' system call. */ /* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP #undef HAVE_MMAP
/* Define if you have the `munmap' function. */ /* Define to 1 if you have the `munmap' function. */
#undef HAVE_MUNMAP #undef HAVE_MUNMAP
/* Define if you have the <nl_types.h> header file. */ /* Define to 1 if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H #undef HAVE_NL_TYPES_H
/* Define if you have the `putenv' function. */ /* Define to 1 if libc includes obstacks. */
#undef HAVE_OBSTACK
/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV #undef HAVE_PUTENV
/* Define if you have the `setenv' function. */ /* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV #undef HAVE_SETENV
/* Define if you have the `setlocale' function. */ /* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE #undef HAVE_SETLOCALE
/* Define if you have the <stddef.h> header file. */ /* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H #undef HAVE_STDDEF_H
/* Define if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H #undef HAVE_STDINT_H
/* Define if you have the <stdlib.h> header file. */ /* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H #undef HAVE_STDLIB_H
/* Define if you have the `stpcpy' function. */ /* Define to 1 if you have the `stpcpy' function. */
#undef HAVE_STPCPY #undef HAVE_STPCPY
/* Define if you have the `strcasecmp' function. */ /* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP #undef HAVE_STRCASECMP
/* Define if you have the `strchr' function. */ /* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR #undef HAVE_STRCHR
/* Define if you have the `strdup' function. */ /* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP #undef HAVE_STRDUP
/* Define if you have the `strerror' function. */ /* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR #undef HAVE_STRERROR
/* Define if you have the `strerror_r' function. */ /* Define to 1 if you have the `strerror_r' function. */
#undef HAVE_STRERROR_R #undef HAVE_STRERROR_R
/* Define if you have the <strings.h> header file. */ /* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H #undef HAVE_STRINGS_H
/* Define 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 if you have the `strndup' function. */ /* Define to 1 if you have the `strndup' function. */
#undef HAVE_STRNDUP #undef HAVE_STRNDUP
/* Define if you have the `strnlen' function. */ /* Define to 1 if you have the `strnlen' function. */
#undef HAVE_STRNLEN #undef HAVE_STRNLEN
/* Define if you have the `strspn' function. */ /* Define to 1 if you have the `strspn' function. */
#undef HAVE_STRSPN #undef HAVE_STRSPN
/* Define if you have the `strtoul' function. */ /* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL #undef HAVE_STRTOUL
/* Define if you have the <sys/param.h> header file. */ /* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H #undef HAVE_SYS_PARAM_H
/* Define if you have the <sys/stat.h> header file. */ /* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H #undef HAVE_SYS_STAT_H
/* Define if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H #undef HAVE_SYS_TYPES_H
/* Define if you have the `tsearch' function. */ /* Define to 1 if you have the `tsearch' function. */
#undef HAVE_TSEARCH #undef HAVE_TSEARCH
/* Define if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
/* Define if you have the `vprintf' function. */ /* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF #undef HAVE_VPRINTF
/* Define if you have the <wchar.h> header file. */ /* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H #undef HAVE_WCHAR_H
/* Define if you have the <wctype.h> header file. */ /* Define to 1 if you have the <wctype.h> header file. */
#undef HAVE_WCTYPE_H #undef HAVE_WCTYPE_H
/* Define if you have the `__argz_count' function. */ /* Define to 1 if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT #undef HAVE___ARGZ_COUNT
/* Define if you have the `__argz_next' function. */ /* Define to 1 if you have the `__argz_next' function. */
#undef HAVE___ARGZ_NEXT #undef HAVE___ARGZ_NEXT
/* Define if you have the `__argz_stringify' function. */ /* Define to 1 if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY #undef HAVE___ARGZ_STRINGIFY
/* Define as const if the declaration of iconv() needs const. */ /* Define as const if the declaration of iconv() needs const. */
@@ -248,7 +252,7 @@
STACK_DIRECTION = 0 => direction of growth unknown */ STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION #undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #undef STDC_HEADERS
/* Define to 1 if strerror_r returns char *. */ /* Define to 1 if strerror_r returns char *. */
@@ -263,14 +267,14 @@
/* Define to 1 for GNU C library extensions. */ /* Define to 1 for GNU C library extensions. */
#undef _GNU_SOURCE #undef _GNU_SOURCE
/* Define if on MINIX. */ /* Define to 1 if on MINIX. */
#undef _MINIX #undef _MINIX
/* Define if the system does not provide POSIX.1 features except with this /* Define to 2 if the system does not provide POSIX.1 features except with
defined. */ this defined. */
#undef _POSIX_1_SOURCE #undef _POSIX_1_SOURCE
/* Define if you need to in order for `stat' and other things to work. */ /* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE #undef _POSIX_SOURCE
/* Define to empty if `const' does not conform to ANSI C. */ /* Define to empty if `const' does not conform to ANSI C. */
+2 -2
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
timestamp='2001-11-08' timestamp='2001-11-26'
# 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
@@ -1056,7 +1056,7 @@ EOF
*:QNX:*:4*) *:QNX:*:4*)
echo i386-pc-qnx echo i386-pc-qnx
exit 0 ;; exit 0 ;;
NSR-[KW]:NONSTOP_KERNEL:*:*) NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE} echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
*:NonStop-UX:*:*) *:NonStop-UX:*:*)
+9 -5
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
timestamp='2001-11-08' timestamp='2001-12-03'
# 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
@@ -249,9 +249,9 @@ case $basic_machine in
| 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
;; ;;
@@ -307,9 +307,10 @@ case $basic_machine in
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | vax-* \ | v850-* | v850e-* | vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
| xtensa-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-*)
;; ;;
@@ -1074,7 +1075,7 @@ 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*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@@ -1126,6 +1127,9 @@ case $os in
-acis*) -acis*)
os=-aos os=-aos
;; ;;
-atheos*)
os=-atheos
;;
-386bsd) -386bsd)
os=-bsd os=-bsd
;; ;;
+1 -1
View File
@@ -1 +1 @@
1.30a 1.30d
Vendored
+161 -12
View File
@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.52g for GNU Bison 1.30b. # Generated by GNU Autoconf 2.52g for GNU Bison 1.30f.
# #
# Report bugs to <[email protected]>. # Report bugs to <[email protected]>.
# #
@@ -332,8 +332,8 @@ mandir='${prefix}/man'
# Identity of this package. # Identity of this package.
PACKAGE_NAME='GNU Bison' PACKAGE_NAME='GNU Bison'
PACKAGE_TARNAME='bison' PACKAGE_TARNAME='bison'
PACKAGE_VERSION='1.30b' PACKAGE_VERSION='1.30f'
PACKAGE_STRING='GNU Bison 1.30b' PACKAGE_STRING='GNU Bison 1.30f'
PACKAGE_BUGREPORT='[email protected]' PACKAGE_BUGREPORT='[email protected]'
ac_prev= ac_prev=
@@ -760,7 +760,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures GNU Bison 1.30b to adapt to many kinds of systems. \`configure' configures GNU Bison 1.30f to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -826,7 +826,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of GNU Bison 1.30b:";; short | recursive ) echo "Configuration of GNU Bison 1.30f:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -921,7 +921,7 @@ fi
test -n "$ac_init_help" && exit 0 test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
GNU Bison configure 1.30b GNU Bison configure 1.30f
generated by GNU Autoconf 2.52g generated by GNU Autoconf 2.52g
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -936,7 +936,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by GNU Bison $as_me 1.30b, which was It was created by GNU Bison $as_me 1.30f, which was
generated by GNU Autoconf 2.52g. Invocation command line was generated by GNU Autoconf 2.52g. Invocation command line was
$ $0 $@ $ $0 $@
@@ -1470,7 +1470,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE=bison PACKAGE=bison
VERSION=1.30b VERSION=1.30f
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
#define PACKAGE "$PACKAGE" #define PACKAGE "$PACKAGE"
@@ -3734,7 +3734,52 @@ echo "${ECHO_T}no" >&6
fi fi
rm -f conftest.$ac_objext conftest.$ac_ext rm -f conftest.$ac_objext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS" CFLAGS="$ac_save_CFLAGS"
CFLAGS="$CFLAGS $WARNING_CFLAGS" echo "$as_me:$LINENO: checking whether compiler accepts -Werror" >&5
echo $ECHO_N "checking whether compiler accepts -Werror... $ECHO_C" >&6
ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
int x;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
WARNING_CFLAGS="$WARNING_CFLAGS -Werror"
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
rm -f conftest.$ac_objext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
fi fi
# Checks for libraries. # Checks for libraries.
@@ -4840,6 +4885,110 @@ _ACEOF
fi fi
echo "$as_me:$LINENO: checking for obstacks" >&5
echo $ECHO_N "checking for obstacks... $ECHO_C" >&6
if test "${ac_cv_func_obstack+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#include "obstack.h"
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
struct obstack *mem; obstack_free(mem,(char *) 0)
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_obstack=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_cv_func_obstack=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_obstack" >&5
echo "${ECHO_T}$ac_cv_func_obstack" >&6
if test $ac_cv_func_obstack = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_OBSTACK 1
_ACEOF
else
LIBOBJS="$LIBOBJS obstack.$ac_objext"
fi
echo "$as_me:$LINENO: checking for error_at_line" >&5
echo $ECHO_N "checking for error_at_line... $ECHO_C" >&6
if test "${ac_cv_lib_error_at_line+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
# endif
int F77_DUMMY_MAIN() { return 1; }
#endif
int
main ()
{
error_at_line (0, 0, "", 0, "");
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_error_at_line=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_cv_lib_error_at_line=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
echo "${ECHO_T}$ac_cv_lib_error_at_line" >&6
if test $ac_cv_lib_error_at_line = no; then
LIBOBJS="$LIBOBJS error.$ac_objext"
fi
for ac_func in mkstemp setlocale for ac_func in mkstemp setlocale
@@ -6830,7 +6979,7 @@ echo "${ECHO_T}no" >&6
fi; fi;
ALL_LINGUAS="de es et fr ja nl tr ru" ALL_LINGUAS="de es et fr ja nl ru sv tr"
# Make sure we can run config.sub. # Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 || $ac_config_sub sun4 >/dev/null 2>&1 ||
{ { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
@@ -9000,7 +9149,7 @@ _ASBOX
} >&5 } >&5
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by GNU Bison $as_me 1.30b, which was This file was extended by GNU Bison $as_me 1.30f, which was
generated by GNU Autoconf 2.52g. Invocation command line was generated by GNU Autoconf 2.52g. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -9062,7 +9211,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
GNU Bison config.status 1.30b GNU Bison config.status 1.30f
configured by $0, generated by GNU Autoconf 2.52g, configured by $0, generated by GNU Autoconf 2.52g,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+9 -5
View File
@@ -1,5 +1,7 @@
# Configure template for GNU Bison. -*-Autoconf-*- # Configure template for GNU Bison. -*-Autoconf-*-
# #
# 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
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
@@ -16,12 +18,12 @@
# 02111-1307 USA # 02111-1307 USA
# We need a recent Autoconf to run a recent Autotest. # We need a recent Autoconf to run a recent Autotest.
AC_PREREQ(2.52e) AC_PREREQ(2.52g)
AC_INIT([GNU Bison], [1.30b], [[email protected]]) AC_INIT([GNU Bison], [1.30f], [[email protected]])
AC_CONFIG_AUX_DIR(config) AC_CONFIG_AUX_DIR(config)
AM_INIT_AUTOMAKE([bison], [1.30b]) AM_INIT_AUTOMAKE([bison], [1.30f])
AM_CONFIG_HEADER(config.h:config.hin) AM_CONFIG_HEADER(config.h:config.hin)
# Initialize the test suite. # Initialize the test suite.
@@ -59,7 +61,7 @@ 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" BISON_WARNING(-Werror)
fi fi
# Checks for libraries. # Checks for libraries.
@@ -80,6 +82,8 @@ AM_C_PROTOTYPES
# Checks for library functions. # Checks for library functions.
AC_FUNC_ALLOCA AC_FUNC_ALLOCA
AC_FUNC_OBSTACK
AC_FUNC_ERROR_AT_LINE
AC_CHECK_FUNCS(mkstemp setlocale) AC_CHECK_FUNCS(mkstemp setlocale)
AC_CHECK_DECLS([stpcpy, strndup, strnlen, memchr]) AC_CHECK_DECLS([stpcpy, strndup, strnlen, memchr])
AC_REPLACE_FUNCS(stpcpy strndup strnlen strspn memchr) AC_REPLACE_FUNCS(stpcpy strndup strnlen strspn memchr)
@@ -89,7 +93,7 @@ jm_PREREQ_QUOTEARG
jm_PREREQ_ERROR jm_PREREQ_ERROR
AM_WITH_DMALLOC AM_WITH_DMALLOC
ALL_LINGUAS="de es et fr ja nl tr ru" ALL_LINGUAS="de es et fr 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
+3 -8
View File
@@ -1,16 +1,11 @@
Makefile Makefile Makefile.in
bison.aux *.aux *.dvi *.log *.info* *.pdf *.ps
stamp-*
bison.cp bison.cp
bison.cps bison.cps
bison.dvi
bison.fn bison.fn
bison.ky bison.ky
bison.log
bison.pg bison.pg
bison.ps
bison.toc bison.toc
bison.tp bison.tp
bison.vr bison.vr
refcard.dvi
refcard.log
refcard.ps
-403
View File
@@ -1,403 +0,0 @@
# Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
EXEEXT = @EXEEXT@
OBJEXT = @OBJEXT@
PATH_SEPARATOR = @PATH_SEPARATOR@
AMTAR = @AMTAR@
AUTOM4TE = @AUTOM4TE@
AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@
GCC = @GCC@
GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARNING_CFLAGS = @WARNING_CFLAGS@
am__include = @am__include@
am__quote = @am__quote@
install_sh = @install_sh@
AUTOMAKE_OPTIONS = 1.4
info_TEXINFOS = bison.texinfo
man_MANS = bison.1
bison_TEXINFOS = gpl.texi fdl.texi
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
CLEANFILES = refcard.dvi refcard.log refcard.ps
subdir = doc
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
DIST_SOURCES =
TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
INFO_DEPS = bison.info
DVIS = bison.dvi
TEXINFOS = bison.texinfo
NROFF = nroff
MANS = $(man_MANS)
DIST_COMMON = $(bison_TEXINFOS) Makefile.am Makefile.in stamp-vti \
version.texi
all: all-am
.SUFFIXES:
.SUFFIXES: .dvi .info .ps .texinfo
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
$(srcdir)/version.texi: $(srcdir)/stamp-vti
@:
$(srcdir)/stamp-vti: bison.texinfo $(top_srcdir)/configure.in
@(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/bison.texinfo`; \
echo "@set UPDATED $$1 $$2 $$3"; \
echo "@set UPDATED-MONTH $$2 $$3"; \
echo "@set EDITION $(VERSION)"; \
echo "@set VERSION $(VERSION)") > vti.tmp
@cmp -s vti.tmp $(srcdir)/version.texi \
|| (echo "Updating $(srcdir)/version.texi"; \
cp vti.tmp $(srcdir)/version.texi)
-@rm -f vti.tmp
@cp $(srcdir)/version.texi $@
mostlyclean-vti:
-rm -f vti.tmp
maintainer-clean-vti:
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
bison.info: bison.texinfo $(srcdir)/version.texi $(bison_TEXINFOS)
bison.dvi: bison.texinfo $(srcdir)/version.texi $(bison_TEXINFOS)
.texinfo.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
`echo $< | sed 's,.*/,,'`
.texinfo.dvi:
TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2DVI) $<
.texinfo:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
`echo $< | sed 's,.*/,,'`
MAKEINFO = @MAKEINFO@
TEXI2DVI = texi2dvi
DVIPS = dvips
.dvi.ps:
$(DVIPS) $< -o $@
uninstall-info-am:
$(PRE_UNINSTALL)
@if (install-info --version && \
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
done; \
else :; fi
@$(NORMAL_UNINSTALL)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
(if cd $(DESTDIR)$(infodir); then \
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
else :; fi); \
done
dist-info: $(INFO_DEPS)
list='$(INFO_DEPS)'; \
for base in $$list; do \
d=$(srcdir); \
for file in $$d/$$base*; do \
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
test -f $(distdir)/$$relfile || \
cp -p $$file $(distdir)/$$relfile; \
done; \
done
mostlyclean-aminfo:
-rm -f bison.aux bison.cp bison.cps bison.dvi bison.fn bison.ky bison.log \
bison.pg bison.ps bison.toc bison.tp bison.vr
maintainer-clean-aminfo:
cd $(srcdir) && \
for i in $(INFO_DEPS); do \
rm -f $$i; \
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
rm -f $$i-[0-9]*; \
fi; \
done
man1dir = $(mandir)/man1
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(man1dir)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
rm -f $(DESTDIR)$(man1dir)/$$inst; \
done
tags: TAGS
TAGS:
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
$(mkinstalldirs) "$(distdir)/$$dir"; \
fi; \
if test -d $$d/$$file; then \
cp -pR $$d/$$file $(distdir) \
|| exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="${top_distdir}" distdir="$(distdir)" \
dist-info
check-am: all-am
check: check-am
all-am: Makefile $(INFO_DEPS) $(MANS)
installdirs:
$(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(man1dir)
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am: $(DVIS)
info: info-am
info-am: $(INFO_DEPS)
install-data-am: install-info-am install-man
install-exec-am:
install-info: install-info-am
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
d=$(srcdir); \
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
if test -f $$ifile; then \
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \
$(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \
else : ; fi; \
done; \
done
@$(POST_INSTALL)
@if (install-info --version && \
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
done; \
else : ; fi
install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-am
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
maintainer-clean-generic maintainer-clean-vti
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
uninstall-am: uninstall-info-am uninstall-man
uninstall-man: uninstall-man1
.PHONY: all all-am check check-am clean clean-generic dist-info \
distclean distclean-generic distdir dvi dvi-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-man1 install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-aminfo \
maintainer-clean-generic maintainer-clean-vti mostlyclean \
mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \
uninstall uninstall-am uninstall-info-am uninstall-man \
uninstall-man1
refcard.dvi: refcard.tex
tex refcard.tex
refcard.ps: refcard.dvi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
-145
View File
@@ -1,145 +0,0 @@
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
à partir bison.texinfo.
START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement).
END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the sections entitled "GNU General Public License" and "Conditions
for Using Bison" are included exactly as in the original, and provided
that the entire resulting derived work is distributed under the terms
of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that the sections entitled "GNU General Public
License", "Conditions for Using Bison" and this permission notice may be
included in translations approved by the Free Software Foundation
instead of in the original English.

Indirect:
bison.info-1: 1313
bison.info-2: 50632
bison.info-3: 100395
bison.info-4: 147417
bison.info-5: 197287

Tag Table:
(Indirect)
Node: Top1313
Node: Introduction8968
Node: Conditions10243
Node: Copying11707
Node: Concepts30910
Node: Language and Grammar31989
Node: Grammar in Bison36947
Node: Semantic Values38871
Node: Semantic Actions40972
Node: Locations Overview42161
Node: Bison Parser43608
Node: Stages45920
Node: Grammar Layout47203
Node: Examples48460
Node: RPN Calc49658
Node: Rpcalc Decls50632
Node: Rpcalc Rules52219
Node: Rpcalc Input54019
Node: Rpcalc Line55480
Node: Rpcalc Expr56595
Node: Rpcalc Lexer58540
Node: Rpcalc Main61112
Node: Rpcalc Error61510
Node: Rpcalc Gen62518
Node: Rpcalc Compile63667
Node: Infix Calc64542
Node: Simple Error Recovery67249
Node: Location Tracking Calc69138
Node: Ltcalc Decls69820
Node: Ltcalc Rules70713
Node: Ltcalc Lexer72723
Node: Multi-function Calc75049
Node: Mfcalc Decl76616
Node: Mfcalc Rules78639
Node: Mfcalc Symtab80019
Node: Exercises86392
Node: Grammar File86898
Node: Grammar Outline87746
Node: C Declarations88480
Node: Bison Declarations89060
Node: Grammar Rules89472
Node: C Code89932
Node: Symbols90862
Node: Rules95943
Node: Recursion97582
Node: Semantics99301
Node: Value Type100395
Node: Multiple Types101067
Node: Actions102084
Node: Action Types104869
Node: Mid-Rule Actions106172
Node: Locations111742
Node: Location Type112390
Node: Actions and Locations112948
Node: Location Default Action115104
Node: Declarations116567
Node: Token Decl117886
Node: Precedence Decl119899
Node: Union Decl121450
Node: Type Decl122294
Node: Expect Decl123200
Node: Start Decl124768
Node: Pure Decl125146
Node: Decl Summary126823
Node: Multiple Parsers132951
Node: Interface134445
Node: Parser Function135317
Node: Lexical136152
Node: Calling Convention137558
Node: Token Values140329
Node: Token Positions141478
Node: Pure Calling142363
Node: Error Reporting145295
Node: Action Features147417
Node: Algorithm150712
Node: Look-Ahead153005
Node: Shift/Reduce155137
Node: Precedence158049
Node: Why Precedence158700
Node: Using Precedence160565
Node: Precedence Examples161533
Node: How Precedence162234
Node: Contextual Precedence163383
Node: Parser States165174
Node: Reduce/Reduce166417
Node: Mystery Conflicts169978
Node: Stack Overflow173364
Node: Error Recovery174737
Node: Context Dependency179873
Node: Semantic Tokens180721
Node: Lexical Tie-ins183738
Node: Tie-in Recovery185286
Node: Debugging187458
Node: Invocation190759
Node: Bison Options192011
Node: Environment Variables195561
Node: Option Cross Key196409
Node: VMS Invocation197287
Node: Table of Symbols198071
Node: Glossary206039
Node: Copying This Manual212343
Node: GNU Free Documentation License212552
Node: Index232417

End Tag Table
-1075
View File
File diff suppressed because it is too large Load Diff
-1423
View File
File diff suppressed because it is too large Load Diff
-1248
View File
File diff suppressed because it is too large Load Diff
-1318
View File
File diff suppressed because it is too large Load Diff
-1072
View File
File diff suppressed because it is too large Load Diff
+9 -1
View File
@@ -693,7 +693,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 +702,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. On all hosts,
@code{<stdio.h>} is included if you define @code{YYDEBUG}
(@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
-4
View File
@@ -1,4 +0,0 @@
@set UPDATED 12 November 2001
@set UPDATED-MONTH November 2001
@set EDITION 1.30b
@set VERSION 1.30b
+3 -3
View File
@@ -1,4 +1,4 @@
@set UPDATED 12 November 2001 @set UPDATED 30 November 2001
@set UPDATED-MONTH November 2001 @set UPDATED-MONTH November 2001
@set EDITION 1.30b @set EDITION 1.30f
@set VERSION 1.30b @set VERSION 1.30f
+19 -4
View File
@@ -1,7 +1,24 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*- ## 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 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
@@ -12,11 +29,9 @@ INCLUDES = -I.. -I$(srcdir) -I../intl
EXTRA_DIST = malloc.c realloc.c EXTRA_DIST = malloc.c realloc.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
error.c error.h \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
obstack.h obstack.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
libbison_a_LIBADD = @LIBOBJS@ libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD) libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
+20 -19
View File
@@ -103,6 +103,8 @@ 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
@@ -113,14 +115,12 @@ INCLUDES = -I.. -I$(srcdir) -I../intl
EXTRA_DIST = malloc.c realloc.c EXTRA_DIST = malloc.c realloc.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
error.c error.h \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
obstack.h obstack.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
libbison_a_LIBADD = @LIBOBJS@ libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD) libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
subdir = lib subdir = lib
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -129,9 +129,9 @@ CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES) LIBRARIES = $(noinst_LIBRARIES)
libbison_a_AR = $(AR) cru libbison_a_AR = $(AR) cru
am_libbison_a_OBJECTS = error$U.$(OBJEXT) getopt$U.$(OBJEXT) \ am_libbison_a_OBJECTS = getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) \
getopt1$U.$(OBJEXT) obstack$U.$(OBJEXT) quote$U.$(OBJEXT) \ quote$U.$(OBJEXT) quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) \
quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) xstrdup$U.$(OBJEXT) xstrdup$U.$(OBJEXT)
libbison_a_OBJECTS = $(am_libbison_a_OBJECTS) libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
DEFS = @DEFS@ DEFS = @DEFS@
@@ -140,22 +140,22 @@ 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)/error$U.Po $(DEPDIR)/getopt$U.Po \ @AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/error.Po \
@AMDEP_TRUE@ $(DEPDIR)/getopt1$U.Po $(DEPDIR)/malloc.Po \ @AMDEP_TRUE@ $(DEPDIR)/getopt$U.Po $(DEPDIR)/getopt1$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/memchr.Po $(DEPDIR)/obstack$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \
@AMDEP_TRUE@ $(DEPDIR)/quote$U.Po $(DEPDIR)/quotearg$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/obstack.Po $(DEPDIR)/quote$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/stpcpy.Po \ @AMDEP_TRUE@ $(DEPDIR)/quotearg$U.Po $(DEPDIR)/realloc.Po \
@AMDEP_TRUE@ $(DEPDIR)/strndup.Po $(DEPDIR)/strnlen.Po \ @AMDEP_TRUE@ $(DEPDIR)/stpcpy.Po $(DEPDIR)/strndup.Po \
@AMDEP_TRUE@ $(DEPDIR)/strspn.Po $(DEPDIR)/xmalloc$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/strnlen.Po $(DEPDIR)/strspn.Po \
@AMDEP_TRUE@ $(DEPDIR)/xstrdup$U.Po @AMDEP_TRUE@ $(DEPDIR)/xmalloc$U.Po $(DEPDIR)/xstrdup$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 ansi2knr.1 ansi2knr.c malloc.c \ DIST_COMMON = Makefile.am Makefile.in alloca.c ansi2knr.1 ansi2knr.c \
memchr.c realloc.c stpcpy.c strndup.c strnlen.c strspn.c error.c error.h malloc.c memchr.c obstack.c obstack.h realloc.c \
stpcpy.c strndup.c strnlen.c strspn.c
SOURCES = $(libbison_a_SOURCES) SOURCES = $(libbison_a_SOURCES)
all: all-am all: all-am
@@ -194,12 +194,13 @@ clean-krextra:
mostlyclean-kr: mostlyclean-kr:
-test "$U" = "" || rm -f *_.c -test "$U" = "" || rm -f *_.c
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error$U.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)/getopt$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)/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)/obstack$U.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)/quote$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/quotearg$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@
+66 -66
View File
@@ -22,18 +22,18 @@
your main control loop, etc. to force garbage collection. */ your main control loop, etc. to force garbage collection. */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> # include <config.h>
#endif #endif
#ifdef HAVE_STRING_H #if HAVE_STRING_H
#include <string.h> # include <string.h>
#endif #endif
#ifdef HAVE_STDLIB_H #if HAVE_STDLIB_H
#include <stdlib.h> # include <stdlib.h>
#endif #endif
#ifdef emacs #ifdef emacs
#include "blockinput.h" # include "blockinput.h"
#endif #endif
/* If compiling with GCC 2, this file's not needed. */ /* If compiling with GCC 2, this file's not needed. */
@@ -41,41 +41,41 @@
/* If someone has defined alloca as a macro, /* If someone has defined alloca as a macro,
there must be some other way alloca is supposed to work. */ there must be some other way alloca is supposed to work. */
#ifndef alloca # ifndef alloca
#ifdef emacs # ifdef emacs
#ifdef static # ifdef static
/* actually, only want this if static is defined as "" /* actually, only want this if static is defined as ""
-- this is for usg, in which emacs must undefine static -- this is for usg, in which emacs must undefine static
in order to make unexec workable in order to make unexec workable
*/ */
#ifndef STACK_DIRECTION # ifndef STACK_DIRECTION
you you
lose lose
-- must know STACK_DIRECTION at compile-time -- must know STACK_DIRECTION at compile-time
#endif /* STACK_DIRECTION undefined */ # endif /* STACK_DIRECTION undefined */
#endif /* static */ # endif /* static */
#endif /* emacs */ # endif /* emacs */
/* If your stack is a linked list of frames, you have to /* If your stack is a linked list of frames, you have to
provide an "address metric" ADDRESS_FUNCTION macro. */ provide an "address metric" ADDRESS_FUNCTION macro. */
#if defined (CRAY) && defined (CRAY_STACKSEG_END) # if defined (CRAY) && defined (CRAY_STACKSEG_END)
long i00afunc (); long i00afunc ();
#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) # define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
#else # else
#define ADDRESS_FUNCTION(arg) &(arg) # define ADDRESS_FUNCTION(arg) &(arg)
#endif # endif
#if __STDC__ # if __STDC__
typedef void *pointer; typedef void *pointer;
#else # else
typedef char *pointer; typedef char *pointer;
#endif # endif
#ifndef NULL # ifndef NULL
#define NULL 0 # define NULL 0
#endif # endif
/* Different portions of Emacs need to call different versions of /* Different portions of Emacs need to call different versions of
malloc. The Emacs executable needs alloca to call xmalloc, because malloc. The Emacs executable needs alloca to call xmalloc, because
@@ -83,13 +83,14 @@ typedef char *pointer;
hand, the utilities in lib-src need alloca to call malloc; some of hand, the utilities in lib-src need alloca to call malloc; some of
them are very simple, and don't have an xmalloc routine. them are very simple, and don't have an xmalloc routine.
Non-Emacs programs expect this to call use xmalloc. Non-Emacs programs expect this to call xmalloc.
Callers below should use malloc. */ Callers below should use malloc. */
#ifndef emacs # ifndef emacs
#define malloc xmalloc # undef malloc
#endif # define malloc xmalloc
# endif
extern pointer malloc (); extern pointer malloc ();
/* Define STACK_DIRECTION if you know the direction of stack /* Define STACK_DIRECTION if you know the direction of stack
@@ -100,18 +101,18 @@ extern pointer malloc ();
STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */ STACK_DIRECTION = 0 => direction of growth unknown */
#ifndef STACK_DIRECTION # ifndef STACK_DIRECTION
#define STACK_DIRECTION 0 /* Direction unknown. */ # define STACK_DIRECTION 0 /* Direction unknown. */
#endif # endif
#if STACK_DIRECTION != 0 # if STACK_DIRECTION != 0
#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ # define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
#else /* STACK_DIRECTION == 0; need run-time code. */ # else /* STACK_DIRECTION == 0; need run-time code. */
static int stack_dir; /* 1 or -1 once known. */ static int stack_dir; /* 1 or -1 once known. */
#define STACK_DIR stack_dir # define STACK_DIR stack_dir
static void static void
find_stack_direction () find_stack_direction ()
@@ -135,7 +136,7 @@ find_stack_direction ()
} }
} }
#endif /* STACK_DIRECTION == 0 */ # endif /* STACK_DIRECTION == 0 */
/* An "alloca header" is used to: /* An "alloca header" is used to:
(a) chain together all alloca'ed blocks; (a) chain together all alloca'ed blocks;
@@ -144,9 +145,9 @@ find_stack_direction ()
It is very important that sizeof(header) agree with malloc It is very important that sizeof(header) agree with malloc
alignment chunk size. The following default should work okay. */ alignment chunk size. The following default should work okay. */
#ifndef ALIGN_SIZE # ifndef ALIGN_SIZE
#define ALIGN_SIZE sizeof(double) # define ALIGN_SIZE sizeof(double)
#endif # endif
typedef union hdr typedef union hdr
{ {
@@ -168,16 +169,15 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */
implementations of C, for example under Gould's UTX/32. */ implementations of C, for example under Gould's UTX/32. */
pointer pointer
alloca (size) alloca (size_t size)
unsigned size;
{ {
auto char probe; /* Probes stack depth: */ auto char probe; /* Probes stack depth: */
register char *depth = ADDRESS_FUNCTION (probe); register char *depth = ADDRESS_FUNCTION (probe);
#if STACK_DIRECTION == 0 # if STACK_DIRECTION == 0
if (STACK_DIR == 0) /* Unknown growth direction. */ if (STACK_DIR == 0) /* Unknown growth direction. */
find_stack_direction (); find_stack_direction ();
#endif # endif
/* Reclaim garbage, defined as all alloca'd storage that /* Reclaim garbage, defined as all alloca'd storage that
was allocated from deeper in the stack than currently. */ was allocated from deeper in the stack than currently. */
@@ -185,9 +185,9 @@ alloca (size)
{ {
register header *hp; /* Traverses linked list. */ register header *hp; /* Traverses linked list. */
#ifdef emacs # ifdef emacs
BLOCK_INPUT; BLOCK_INPUT;
#endif # endif
for (hp = last_alloca_header; hp != NULL;) for (hp = last_alloca_header; hp != NULL;)
if ((STACK_DIR > 0 && hp->h.deep > depth) if ((STACK_DIR > 0 && hp->h.deep > depth)
@@ -204,9 +204,9 @@ alloca (size)
last_alloca_header = hp; /* -> last valid storage. */ last_alloca_header = hp; /* -> last valid storage. */
#ifdef emacs # ifdef emacs
UNBLOCK_INPUT; UNBLOCK_INPUT;
#endif # endif
} }
if (size == 0) if (size == 0)
@@ -232,15 +232,15 @@ alloca (size)
} }
} }
#if defined (CRAY) && defined (CRAY_STACKSEG_END) # if defined (CRAY) && defined (CRAY_STACKSEG_END)
#ifdef DEBUG_I00AFUNC # ifdef DEBUG_I00AFUNC
#include <stdio.h> # include <stdio.h>
#endif # endif
#ifndef CRAY_STACK # ifndef CRAY_STACK
#define CRAY_STACK # define CRAY_STACK
#ifndef CRAY2 # ifndef CRAY2
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ /* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
struct stack_control_header struct stack_control_header
{ {
@@ -292,7 +292,7 @@ struct stack_segment_linkage
long sss7; long sss7;
}; };
#else /* CRAY2 */ # else /* CRAY2 */
/* The following structure defines the vector of words /* The following structure defines the vector of words
returned by the STKSTAT library routine. */ returned by the STKSTAT library routine. */
struct stk_stat struct stk_stat
@@ -345,10 +345,10 @@ struct stk_trailer
long unknown14; long unknown14;
}; };
#endif /* CRAY2 */ # endif /* CRAY2 */
#endif /* not CRAY_STACK */ # endif /* not CRAY_STACK */
#ifdef CRAY2 # ifdef CRAY2
/* Determine a "stack measure" for an arbitrary ADDRESS. /* Determine a "stack measure" for an arbitrary ADDRESS.
I doubt that "lint" will like this much. */ I doubt that "lint" will like this much. */
@@ -419,7 +419,7 @@ i00afunc (long *address)
return (result); return (result);
} }
#else /* not CRAY2 */ # else /* not CRAY2 */
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. /* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
Determine the number of the cell within the stack, Determine the number of the cell within the stack,
given the address of the cell. The purpose of this given the address of the cell. The purpose of this
@@ -464,9 +464,9 @@ i00afunc (long address)
while (!(this_segment <= address && address <= stkl)) while (!(this_segment <= address && address <= stkl))
{ {
#ifdef DEBUG_I00AFUNC # ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
#endif # endif
if (pseg == 0) if (pseg == 0)
break; break;
stkl = stkl - pseg; stkl = stkl - pseg;
@@ -485,9 +485,9 @@ i00afunc (long address)
while (pseg != 0) while (pseg != 0)
{ {
#ifdef DEBUG_I00AFUNC # ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o\n", pseg, size); fprintf (stderr, "%011o %011o\n", pseg, size);
#endif # endif
stkl = stkl - pseg; stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl; ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize; size = ssptr->sssize;
@@ -497,8 +497,8 @@ i00afunc (long address)
return (result); return (result);
} }
#endif /* not CRAY2 */ # endif /* not CRAY2 */
#endif /* CRAY */ # endif /* CRAY */
#endif /* no alloca */ # endif /* no alloca */
#endif /* not GCC version 2 */ #endif /* not GCC version 2 */
+23 -10
View File
@@ -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));
+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. */
+1 -2
View File
@@ -1,6 +1,5 @@
ChangeLog ChangeLog
Makefile Makefile Makefile.in
Makefile.in
POTFILES POTFILES
bison.pot bison.pot
stamp-cat-id stamp-cat-id
-25
View File
@@ -1,28 +1,3 @@
2001-11-02 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-11-02 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-11-02 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-10-10 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-10-10 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-10-09 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
* cat-id-tbl.c: Remove file.
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.
-3
View File
@@ -1,13 +1,10 @@
src/LR0.c src/LR0.c
src/complain.c src/complain.c
src/conflicts.c src/conflicts.c
src/derives.c
src/files.c 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/nullable.c
src/output.c src/output.c
src/print.c src/print.c
src/print_graph.c src/print_graph.c
BIN
View File
Binary file not shown.
+177 -176
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n" "PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
"Last-Translator: Ulrich Drepper <[email protected]>\n" "Last-Translator: Ulrich Drepper <[email protected]>\n"
"Language-Team: German <[email protected]>\n" "Language-Team: German <[email protected]>\n"
@@ -13,7 +13,7 @@ msgstr ""
"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"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
@@ -26,83 +26,83 @@ msgstr ""
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "fataler Fehler: %s\n" msgstr "fataler Fehler: %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 "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n" msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "durch Reduzierung gelöst" msgstr "durch Reduzierung gelöst"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "durch Schieben gelöst" msgstr "durch Schieben gelöst"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "als Fehler betrachtet" msgstr "als Fehler betrachtet"
#: src/conflicts.c:411 #: 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 Schiebe/Reduziere Konflikte" msgstr[0] " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " und" msgstr " und"
#: src/conflicts.c:424 #: 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 Reduziere/Reduziere Konflikte" msgstr[0] " %d Reduziere/Reduziere Konflikte"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, c-format #, fuzzy, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "Zustand %d enthält" msgstr "Zustand %d enthält"
#. 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "Konflikte: " msgstr "Konflikte: "
#: src/conflicts.c:483 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d Schiebe/Reduziere" msgstr " %d Schiebe/Reduziere"
#: src/conflicts.c:487 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d Reduziere/Reduziere" msgstr " %d Reduziere/Reduziere"
#: src/conflicts.c:492 src/reduce.c:497 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s enthält " msgstr "%s enthält "
#: src/conflicts.c:500 #: src/conflicts.c:405
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d Schiebe/Reduziere Konflikte" msgstr[0] " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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[reduziere mit Regel %d (%s)]\n" msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
#: src/conflicts.c:598 src/print.c:171 #: src/conflicts.c:461 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,31 +111,22 @@ msgstr ""
" $default\treduziere mit Regel %d (%s)\n" " $default\treduziere mit Regel %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduziere mit Tegel %d (%s)\n" msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
#: src/conflicts.c:727 #: src/conflicts.c:544
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
#: src/derives.c:43 #: src/files.c:144
msgid "DERIVES"
msgstr ""
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s leitet ab"
#: src/files.c:143
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:162 #: src/files.c:163
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -209,7 +200,7 @@ msgid ""
"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:693 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
@@ -229,7 +220,7 @@ msgstr "%s: keine Grammatik-Datei angegeben\n"
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n" msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
#: src/lalr.c:311 #: src/lalr.c:255
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
@@ -238,7 +229,7 @@ msgstr ""
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert" msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "unbeendeter Kommentar" msgstr "unbeendeter Kommentar"
@@ -279,69 +270,60 @@ msgstr "unerwarteter Typname"
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden" msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
#: src/lex.c:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:682 #: src/lex.c:683
#, fuzzy, c-format #, fuzzy, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "%s: die Option »%s« erfordert ein Argument\n" msgstr "%s: die Option »%s« erfordert ein Argument\n"
#: src/main.c:128 #: src/output.c:949
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interner Fehler, %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "Führe »set_nullable« aus"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale Tabellengröße (%s) überschritten" msgstr "maximale Tabellengröße (%s) überschritten"
#: src/print.c:37 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " Typ %d ist %s\n" msgstr " Typ %d ist %s\n"
#: src/print.c:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (Regel %d)" msgstr " (Regel %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\takzeptiere\n" msgstr " $default\takzeptiere\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " KEINE AKTIONEN\n" msgstr " KEINE AKTIONEN\n"
#: src/print.c:132 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tgehe zu Zustand %d über\n" msgstr " $ \tgehe zu Zustand %d über\n"
#: src/print.c:135 #: 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\tSchiebe und gehe zu Zustand %d über\n" msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
#: src/print.c:159 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tFehler (nicht assoziativ)\n" msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print.c:187 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgehe zu Zustand %d über\n" msgstr " %-4s\tgehe zu Zustand %d über\n"
#: src/print.c:199 #: src/print.c:180
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -351,24 +333,28 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:211
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Grammatik\n" "Grammatik\n"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr ""
#: src/print.c:217
#, fuzzy, c-format
msgid " %3d %3d %s ->"
msgstr "Regel %-4d %s ->" msgstr "Regel %-4d %s ->"
#: src/print.c:240 #: 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:245 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -376,7 +362,7 @@ msgstr ""
"Terminale und die Regeln un denen sie verwendet werden\n" "Terminale und die Regeln un denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:269 #: src/print.c:256
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -384,259 +370,268 @@ msgstr ""
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n" "Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " auf der linken Seite:" msgstr " auf der linken Seite:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " auf der rechten Seite:" msgstr " auf der rechten Seite:"
#: src/print_graph.c:174 #. 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
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tFehler (nicht assoziativ)\n" msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Überspringe Zeichen bis zum nächsten \\n" msgstr " Überspringe Zeichen bis zum nächsten \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Überspringe Zeichen bis zum nächten %c" msgstr " Überspringe Zeichen bis zum nächten %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "unzulässiger $ Wert" msgstr "unzulässiger $ Wert"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "unbeendete Zeichenkette am Ende der Datei" msgstr "unbeendete Zeichenkette am Ende der Datei"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "unbeendete Zeichenkette" msgstr "unbeendete Zeichenkette"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s ist unzulässig" msgstr "@%s ist unzulässig"
#: src/reader.c:365 #: src/reader.c:376
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ von »%s« hat keine deklarierten Wert" msgstr "$$ von »%s« hat keine deklarierten Wert"
#: src/reader.c:382 #: src/reader.c:393
#, fuzzy, c-format #, fuzzy, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "»%s« von »%s« hat keine deklarierten Wert" msgstr "»%s« von »%s« hat keine deklarierten Wert"
#: src/reader.c:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "unbeendete »%{« Definition" msgstr "unbeendete »%{« Definition"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr ""
#: src/reader.c:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "Symbol %s noch einmal definiert" msgstr "Symbol %s noch einmal definiert"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "erneute Deklaration des Typs für %s" msgstr "erneute Deklaration des Typs für %s"
#: src/reader.c:541 #: src/reader.c:552
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "»%s« ist in %s nicht erlaubt" msgstr "»%s« ist in %s nicht erlaubt"
#: src/reader.c:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "mehr als eine %start Deklaration" msgstr "mehr als eine %start Deklaration"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ungültige %start Deklaration" msgstr "ungültige %start Deklaration"
#: src/reader.c:580 #: src/reader.c:592
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type Deklaration hat keinen <Typ-Namen>" msgstr "%type Deklaration hat keinen <Typ-Namen>"
#: src/reader.c:615 #: src/reader.c:627
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "ungültige %%type Deklaration wegen »%s«" msgstr "ungültige %%type Deklaration wegen »%s«"
#: src/reader.c:660 #: src/reader.c:672
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "Stellenwertigkeit von %s wird erneut definiert" msgstr "Stellenwertigkeit von %s wird erneut definiert"
#: src/reader.c:683 #: src/reader.c:695
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen" msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen"
#: src/reader.c:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "unerwartetes Symbol: %s" msgstr "unerwartetes Symbol: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "»{« hat kein Gegenstück" msgstr "»{« hat kein Gegenstück"
#: src/reader.c:798 #: src/reader.c:810
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "Argument von %expect ist keine ganze Zahl" msgstr "Argument von %expect ist keine ganze Zahl"
#: src/reader.c:844 #: src/reader.c:856
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet" msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
#: src/reader.c:866 #: src/reader.c:878
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "hier wird eine Zeichenkette erwartet, nicht %s" msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
#: src/reader.c:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "unbekannt: %s" msgstr "unbekannt: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "keine Eingabe-Grammatik" msgstr "keine Eingabe-Grammatik"
#: src/reader.c:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "unbekanntes Zeichen: %s" msgstr "unbekanntes Zeichen: %s"
#: src/reader.c:1192 #: src/reader.c:1204
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "unbeendeter %%guard Fall" msgstr "unbeendeter %%guard Fall"
#: src/reader.c:1359 #: src/reader.c:1357
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "" msgstr ""
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon " "falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
"gefolgt" "gefolgt"
#: src/reader.c:1366 #: src/reader.c:1364
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an" msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
#: src/reader.c:1397 #: src/reader.c:1392
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "Regel für %s vorhanden, welches aber ein Token ist" msgstr "Regel für %s vorhanden, welches aber ein Token ist"
#: src/reader.c:1499 #: src/reader.c:1492
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "zwei @prec Anweisungen nacheinander" msgstr "zwei @prec Anweisungen nacheinander"
#: src/reader.c:1507 #: src/reader.c:1500
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "" msgstr ""
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben" "%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
#: src/reader.c:1516 #: src/reader.c:1509
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Zwei Aktionen am Ende einer Regel" msgstr "Zwei Aktionen am Ende einer Regel"
#: src/reader.c:1530 #: src/reader.c:1523
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion" msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
#: src/reader.c:1536 #: src/reader.c:1529
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion" msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
#: src/reader.c:1580 #: src/reader.c:1573
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ungültige Eingabe: %s" msgstr "ungültige Eingabe: %s"
#: src/reader.c:1588 #: src/reader.c:1581
#, 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 "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s" msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
#: src/reader.c:1591 #: src/reader.c:1584
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln" msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:1615 #: src/reader.c:1608
#, 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 ""
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine " "Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
"Regel" "Regel"
#: src/reader.c:1707 #: src/reader.c:1743
#, 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 "Token %s und %s haben die selbe nummer %s" msgstr "Token %s und %s haben die selbe nummer %s"
#: src/reader.c:1760 #: src/reader.c:1796
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich" msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
#: src/reader.c:1772 #: src/reader.c:1808
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "assoc Werte für %s nd %s widersprechen sich" msgstr "assoc Werte für %s nd %s widersprechen sich"
#: src/reader.c:1811 #: src/reader.c:1847
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "das Startsymbol %s ist undefiniert" msgstr "das Startsymbol %s ist undefiniert"
#: src/reader.c:1813 #: src/reader.c:1849
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "das Startsymbol %s ist ein Token" msgstr "das Startsymbol %s ist ein Token"
#: src/reduce.c:405 #: src/reduce.c:409
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Nutzlose Nicht-Terminale:\n" "Nutzlose Nicht-Terminale:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:422
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -645,7 +640,7 @@ msgstr ""
"Nicht genutzte Terminale:\n" "Nicht genutzte Terminale:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:433
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -654,72 +649,33 @@ msgstr ""
"Ungenutzte Regeln:\n" "Ungenutzte Regeln:\n"
"\n" "\n"
#: src/reduce.c:458 #: 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 wurde niemals reduziert\n"
msgstr ""
"Variablen\n"
"---------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Wert Sprec Sassoc Tag\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d ungenutzte Nicht-Terminal"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Regeln\n"
"------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"interpretierete Regeln\n"
"----------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d wurde niemals reduziert\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d ungenutzte Nicht-Terminal"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " und " msgstr " und "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d ungenutzte Regel" msgid_plural "%d useless rules"
msgstr[0] "%d ungenutzte Regel"
#: src/reduce.c:540 #: 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 "es lassen sich keine Sätze vom Startsymbol %s ableiten" msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
"Produktionen.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -800,11 +756,11 @@ msgstr "%s: Hauptspeicher ersch
#. 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 ""
@@ -817,6 +773,9 @@ msgstr ""
#~ msgid "%s contains" #~ msgid "%s contains"
#~ msgstr "%s enthält" #~ msgstr "%s enthält"
#~ msgid "%s derives"
#~ msgstr "%s leitet ab"
#~ msgid "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -848,6 +807,12 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "Grenze von %d erreicht, zu viele %s" #~ msgstr "Grenze von %d erreicht, zu viele %s"
#~ msgid "internal error, %s\n"
#~ msgstr "interner Fehler, %s\n"
#~ msgid "Entering set_nullable"
#~ msgstr "Führe »set_nullable« aus"
#~ msgid "\t\t/* empty */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* leer */" #~ msgstr "\t\t/* leer */"
@@ -874,3 +839,39 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "falsch geformte %type Deklaration" #~ msgstr "falsch geformte %type Deklaration"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
#~ "Produktionen.\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Variablen\n"
#~ "---------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "Wert Sprec Sassoc Tag\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Regeln\n"
#~ "------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "interpretierete Regeln\n"
#~ "----------------------\n"
#~ "\n"
BIN
View File
Binary file not shown.
+201 -193
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-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+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"
@@ -38,7 +38,7 @@ msgstr ""
"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"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
@@ -58,55 +58,55 @@ msgstr ""
# La verdad es que a mi lo de error fatal me suena fatal # La verdad es que a mi lo de error fatal me suena fatal
# ngp # ngp
# #
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
#, fuzzy #, fuzzy
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:411 #: 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:418 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " y" msgstr " y"
#: src/conflicts.c:424 #: 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:448 #: 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:481 #: 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:483 #: 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:487 #: 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:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" 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:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 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,36 +169,22 @@ msgstr ""
" $default\treduce usando la regla %d (%s)\n" " $default\treduce usando la regla %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
#, fuzzy
msgid "DERIVES"
msgstr ""
"\n"
"\n"
"\n"
"DERIVACIONES\n"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s deriva"
#: src/files.c:143
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:162 #: src/files.c:163
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -272,7 +258,7 @@ msgid ""
"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:693 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
@@ -295,7 +281,7 @@ msgstr "%s: no se ha especificado ning
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:311 #: src/lalr.c:255
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
@@ -305,7 +291,7 @@ msgstr ""
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta" msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "comentario sin terminar" msgstr "comentario sin terminar"
@@ -347,74 +333,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:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:682 #: src/lex.c:683
#, 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:128
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "Entrando set_nullable"
# Ú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:986 #: src/output.c:949
#, 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:37 #: 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:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regla %d)" msgstr " (regla %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taceptar\n" msgstr " $default\taceptar\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " SIN ACCIONES\n" msgstr " SIN ACCIONES\n"
#: src/print.c:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: src/print.c:180
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -424,24 +401,28 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:211
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Gramática\n" "Gramática\n"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr ""
#: src/print.c:217
#, fuzzy, c-format
msgid " %3d %3d %s ->"
msgstr "regla %-4d %s ->" msgstr "regla %-4d %s ->"
#: src/print.c:240 #: 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:245 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -449,121 +430,130 @@ msgstr ""
"Terminales con las reglas donde aparecen\n" "Terminales con las reglas donde aparecen\n"
"\n" "\n"
#: src/print.c:269 #: 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:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " en la izquierda:" msgstr " en la izquierda:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " en la derecha:" msgstr " en la derecha:"
#: src/print_graph.c:174 #. 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
#, 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"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Saltando al siguiente \\n" msgstr " Saltando al siguiente \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Saltando al siguiente %c" msgstr " Saltando al siguiente %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "valor $ no válido" msgstr "valor $ no válido"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "cadena sin terminar al final del fichero" msgstr "cadena sin terminar al final del fichero"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "cadena sin terminar" msgstr "cadena sin terminar"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, 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:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, 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:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "definición `%{' sin terminar" msgstr "definición `%{' sin terminar"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr ""
#: src/reader.c:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, 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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, 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:541 #: src/reader.c:552
#, 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:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, 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:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, 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:580 #: src/reader.c:592
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:615 #: src/reader.c:627
#, 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:660 #: src/reader.c:672
#, 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"
@@ -572,7 +562,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:683 #: src/reader.c:695
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "" msgstr ""
@@ -582,18 +572,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:693 #: src/reader.c:705
#, 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:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "`{' desemparejada" msgstr "`{' desemparejada"
#: src/reader.c:798 #: src/reader.c:810
#, 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"
@@ -604,26 +594,26 @@ msgstr "el argumento de %expect no es un entero"
# - cll # - cll
# ok - ngp # ok - ngp
# #
#: src/reader.c:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "no reconocido: %s" msgstr "no reconocido: %s"
#: src/reader.c:1019 #: src/reader.c:1031
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:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "carácter desconocido: %s" msgstr "carácter desconocido: %s"
@@ -632,105 +622,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:1192 #: src/reader.c:1204
#, 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:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
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:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
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:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
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:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
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:1580 #: src/reader.c:1573
#, 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:1588 #: src/reader.c:1581
#, 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:1591 #: src/reader.c:1584
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:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: 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:419 #: src/reduce.c:422
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -739,7 +729,7 @@ msgstr ""
"Terminales que no se usan:\n" "Terminales que no se usan:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:433
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -748,84 +738,33 @@ msgstr ""
"Reglas sin uso:\n" "Reglas sin uso:\n"
"\n" "\n"
#: src/reduce.c:458 #: 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:459 #: 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:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Reglas\n"
"------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Reglas interpretadas\n"
"--------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d reglas que nunca se han reducido\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d no terminales %s sin uso"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " y " msgstr " y "
#: src/reduce.c:510 #: 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:540 #: 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"
# ¡¡No sé cómo resolver el problema!!
#
# Como corrector, me veo obligado a hacer una corrección ¡¡a tu comentario!!:
#
# ¡¡No sé cómo resolver el problema!!
#
# Esto es: `cómo' va acentuado y, además, `problema' podría ser hebreo,
# pero no español - cll
#
# Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y
# usar participios - cll
# un error lo tiene cualquiera - ngp
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion%"
"s.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -930,11 +869,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 ""
@@ -998,6 +937,21 @@ msgstr ""
#~ msgid "%s contains" #~ msgid "%s contains"
#~ msgstr "%s contiene" #~ msgstr "%s contiene"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVACIONES\n"
#~ msgid "%s derives"
#~ msgstr "%s deriva"
#~ msgid "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -1040,6 +994,12 @@ 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"
#~ msgstr "Entrando set_nullable"
# Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por # Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por
# el contrario, pudiera cualquiera de los casos, debieras traducirlo # el contrario, pudiera cualquiera de los casos, debieras traducirlo
# como `vacía/o' - cll # como `vacía/o' - cll
@@ -1075,3 +1035,51 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "declaración %type incorrectamente formada" #~ msgstr "declaración %type incorrectamente formada"
# ¡¡No sé cómo resolver el problema!!
#
# Como corrector, me veo obligado a hacer una corrección ¡¡a tu comentario!!:
#
# ¡¡No sé cómo resolver el problema!!
#
# Esto es: `cómo' va acentuado y, además, `problema' podría ser hebreo,
# pero no español - cll
#
# Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y
# usar participios - cll
# un error lo tiene cualquiera - ngp
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion"
#~ "%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"
BIN
View File
Binary file not shown.
+177 -195
View File
@@ -4,16 +4,16 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.30a\n" "Project-Id-Version: bison 1.30e\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 2001-11-05 21:19+02:00\n" "PO-Revision-Date: 2001-11-26 22:45+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"
#: src/LR0.c:207 #: 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)"
@@ -26,82 +26,84 @@ msgstr "Tundmatu s
msgid "warning: " msgid "warning: "
msgstr "hoiatus: " msgstr "hoiatus: "
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
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:411 #: 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 nihutamine/redutseerimine konflikti" msgstr[0] "%d nihutamine/redutseerimine konflikt"
msgstr[1] "%d nihutamine/redutseerimine konflikti"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " ja" msgstr "ja"
#: src/conflicts.c:424 #: 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 redutseerimine/redutseerimine konflikti" msgstr[0] "%d redutseerimine/redutseerimine konflikt"
msgstr[1] "%d redutseerimine/redutseerimine konflikti"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "konfliktid: " msgstr "konfliktid: "
#: src/conflicts.c:483 #: 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:487 #: 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:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d nihutamine/redutseerimine konflikti" msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n"
msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 src/print.c:154
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -110,31 +112,22 @@ msgstr ""
" $default\tredutseerin kasutades reeglit %d (%s)\n" " $default\tredutseerin kasutades reeglit %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
msgid "DERIVES"
msgstr "DERIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s derives"
#: src/files.c:143
#, 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:163
msgid "cannot close file" msgid "cannot close file"
msgstr "faili ei õnnestu sulgeda" msgstr "faili ei õnnestu sulgeda"
@@ -232,7 +225,7 @@ 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:693 #: src/getargs.c:215 src/lex.c:694
#, 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"
@@ -252,7 +245,7 @@ msgstr "%s: puudub grammatikafail\n"
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:311 #: src/lalr.c:255
#, 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)"
@@ -261,7 +254,7 @@ msgstr "liiga palju gotosid (maks %d)"
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "leidsin ja ignoreerin ootamatu `/'" msgstr "leidsin ja ignoreerin ootamatu `/'"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "lõpetamata kommentaar" msgstr "lõpetamata kommentaar"
@@ -300,416 +293,381 @@ 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:666 #: src/lex.c:667
#, 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:682 #: src/lex.c:683
#, 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:128 #: src/output.c:949
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: sisemine viga: %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "Entering set_nullable"
#: src/output.c:986
#, 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:37 #: 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:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (reegel %d)" msgstr " (reegel %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taktsepteerin\n" msgstr " $default\taktsepteerin\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " TEGEVUSI POLE\n" msgstr " TEGEVUSI POLE\n"
#: src/print.c:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: 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:229 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Grammatika" msgstr "Grammatika"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr "Number, rida, reegel"
msgstr "reegel %-4d %s ->"
#: src/print.c:240 #: src/print.c:217
#, c-format
msgid " %3d %3d %s ->"
msgstr " %3d %3d %s ->"
#: 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:245 #: 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:269 #: 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:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " vasakul:" msgstr " vasakul:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " paremal:" msgstr " paremal:"
#: src/print_graph.c:174 #. 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 #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tviga (mitteassotsiatiivne)" msgstr "%-4s\tviga (mitteassotsiatiivne)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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)"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Liigun järgmisele \\n" msgstr " Liigun järgmisele \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Liigun järgmisele %c" msgstr " Liigun järgmisele %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "vigane $ väärtus" msgstr "vigane $ väärtus"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "lõpetamata sõne faili lõpus" msgstr "lõpetamata sõne faili lõpus"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "lõpetamata sõne" msgstr "lõpetamata sõne"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s on vigane" msgstr "%s on vigane"
#: src/reader.c:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, 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:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "lõpetamata `%{' definitsioon" msgstr "lõpetamata `%{' definitsioon"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, 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:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, 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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, 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:541 #: src/reader.c:552
#, 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:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "korduvad %s deklaratsioonid" msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "vigane %s deklaratsioon" msgstr "vigane %s deklaratsioon"
#: src/reader.c:580 #: src/reader.c:592
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:615 #: src/reader.c:627
#, 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:660 #: src/reader.c:672
#, 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:683 #: src/reader.c:695
#, 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:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ootamatu element: %s" msgstr "ootamatu element: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "puudub %s" msgstr "puudub %s"
#: src/reader.c:798 #: src/reader.c:810
#, 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:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tundmatu: %s" msgstr "tundmatu: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "sisendgrammatikat pole" msgstr "sisendgrammatikat pole"
#: src/reader.c:1024 #: src/reader.c:1036
#, 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:1192 #: src/reader.c:1204
#, 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:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
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:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
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:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
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:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
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:1580 #: src/reader.c:1573
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "vigane sisend: %s" msgstr "vigane sisend: %s"
#: src/reader.c:1588 #: src/reader.c:1581
#, 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:1591 #: src/reader.c:1584
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:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Kasutamata mitteterminalid:" msgstr "Kasutamata mitteterminalid:"
#: src/reduce.c:419 #: 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:430 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Kasutamata reeglid:" msgstr "Kasutamata reeglid:"
#: src/reduce.c:458 #: 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 reeglit ei redutseeritud\n"
msgstr ""
"Muutujad\n"
"--------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Value Sprec Sassoc Tag\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d kasutamata mitteterminali%s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Reeglid\n"
"-------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Interpreteeritud reeglid\n"
"------------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d reeglit ei redutseeritud\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d kasutamata mitteterminali%s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " ja " msgstr " ja "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, 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 reeglit%s"
#: src/reduce.c:540 #: 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"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"redutseeritud %s defineerib %d terminali%s, %d mitteterminali%s ja %d reeglit"
"%s.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -789,19 +747,43 @@ 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 " 1 shift/reduce conflict" #~ msgid "%s: internal error: %s\n"
#~ msgstr " 1 nihutamine/redutseerimine konflikt" #~ msgstr "%s: sisemine viga: %s\n"
#~ msgid " 1 reduce/reduce conflict" #~ msgid ""
#~ msgstr " 1 redutseerimine/redutseerimine konflikt" #~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Muutujad\n"
#~ "--------\n"
#~ "\n"
#~ msgid "%s contains" #~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "%s sisaldab" #~ msgstr "Value Sprec Sassoc Tag\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Reeglid\n"
#~ "-------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Interpreteeritud reeglid\n"
#~ "------------------------\n"
#~ "\n"
BIN
View File
Binary file not shown.
+205 -203
View File
@@ -5,16 +5,16 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.29f\n" "Project-Id-Version: GNU bison 1.30e\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 2001-10-19 15:00-0500\n" "PO-Revision-Date: 2001-11-27 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"
#: src/LR0.c:207 #: 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)"
@@ -27,83 +27,82 @@ msgstr "Erreur syst
msgid "warning: " msgid "warning: "
msgstr "AVERTISSEMENT: " msgstr "AVERTISSEMENT: "
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
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:411 #: 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 conflits décalage/réduction" msgstr[0] "%d conflits par décalage/réduction"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " et" msgstr "et"
#: src/conflicts.c:424 #: 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 conflits réduction/réduction" msgstr[0] "%d conflits par réduction/réduction"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "conflits: " msgstr "conflits: "
#: src/conflicts.c:483 #: 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:487 #: 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:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d conflits décalage/réduction" msgstr[0] "attendu %d conflits décalage/réduction\n"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 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,31 +111,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:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
msgid "DERIVES"
msgstr "DÉRIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s dérive"
#: src/files.c:143
#, 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:163
msgid "cannot close file" msgid "cannot close file"
msgstr "ne peut fermer le fichier" msgstr "ne peut fermer le fichier"
@@ -156,9 +146,9 @@ 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 ""
"Si une option de forme longue montre un paramètre comme étant obligatoire,\n" "Si une option de forme longue montre un arguement comme étant obligatoire,\n"
"il est alors obligatoire également pour une option de forme courte.\n" "il est alors obligatoire également pour une option de forme courte.\n"
"Il en est de même pour les paramètres optionnels.\n" "Il en est de même pour les arguments optionnels.\n"
#: src/getargs.c:98 #: src/getargs.c:98
msgid "" msgid ""
@@ -195,7 +185,6 @@ msgstr ""
" -k, --token-table inclure la table des noms de jetons\n" " -k, --token-table inclure la table des noms de jetons\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"
@@ -209,7 +198,7 @@ msgstr ""
" -d, --defines produire un fichier d'en-tête\n" " -d, --defines produire un fichier d'en-tête\n"
" -v, --verbose produire une explication de l'automate\n" " -v, --verbose produire une explication de l'automate\n"
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n" " -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
" -o, --output-file=FICHIER produire la sortie dans le FICHIER\n" " -o, --output=FICHIER produire la sortie dans le FICHIER\n"
" -g, --graph produire aussi la description du graphe VCG de " " -g, --graph produire aussi la description du graphe VCG de "
"l'automate\n" "l'automate\n"
@@ -239,7 +228,7 @@ 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:693 #: src/getargs.c:215 src/lex.c:694
#, 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é"
@@ -257,9 +246,9 @@ msgstr "%s: grammaire manquante\n"
#: src/getargs.c:250 #: src/getargs.c:250
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: paramètres supplémentaires ignorés après `%s'\n" msgstr "%s: arguments supplémentaires ignorés après `%s'\n"
#: src/lalr.c:311 #: src/lalr.c:255
#, 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)"
@@ -268,7 +257,7 @@ msgstr "nombre trop grand de \"goto\" (Max %d)"
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "`/' inattendu et ignoré" msgstr "`/' inattendu et ignoré"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "le commentaire ne se termine pas" msgstr "le commentaire ne se termine pas"
@@ -307,417 +296,382 @@ 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:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr "`%s' ne supporte aucun argument: %s"
#: src/lex.c:682 #: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: l'option %s requiert un paramètre\n"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "`%s' requires an argument"
msgstr "%s: erreur interne: %s\n" msgstr "`%s': requiert un argument"
#: src/nullable.c:51 #: src/output.c:949
msgid "Entering set_nullable"
msgstr "Entré dans set_nullable"
#: src/output.c:986
#, 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:37 #: 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:85 #: 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:111 #: 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:113 #: 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:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: 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:229 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Grammaire" msgstr "Grammaire"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr "Nombre, ligne, règle"
msgstr "règle %-4d %s ->"
#: src/print.c:240 #: src/print.c:217
#, c-format
msgid " %3d %3d %s ->"
msgstr " %3d %3d %s ->"
#: 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:245 #: 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:269 #: 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:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " à gauche:" msgstr " à gauche:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " à droite:" msgstr " à droite:"
#: src/print_graph.c:174 #. 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 #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\terreur (non-associatif)" msgstr "%-4s\terreur (non-associatif)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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)"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Saut jusqu'au prochain \\n" msgstr " Saut jusqu'au prochain \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Saut jusqu'au prochain %c" msgstr " Saut jusqu'au prochain %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "la valeur de symbole $ n'est pas valide" msgstr "la valeur de symbole $ n'est pas valide"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "chaîne de caractères non terminée en fin de fichier" msgstr "chaîne de caractères non terminée en fin de fichier"
#: src/reader.c:172 #: src/reader.c:183
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:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, 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:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, 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:436 #: src/reader.c:447
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:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, 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:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, 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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, 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:541 #: src/reader.c:552
#, 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:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, 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:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, 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:580 #: src/reader.c:592
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:615 #: src/reader.c:627
#, 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:660 #: src/reader.c:672
#, 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:683 #: src/reader.c:695
#, 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:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "item inattendu: %s" msgstr "item inattendu: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "non appariement de %s" msgstr "non appariement de %s"
#: src/reader.c:798 #: src/reader.c:810
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "le paramètre de %%expect n'est pas un entier" msgstr "l'argument de %%expect n'est pas un entier"
#: src/reader.c:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "non reconnu: %s" msgstr "non reconnu: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "aucune grammaire en entrée" msgstr "aucune grammaire en entrée"
#: src/reader.c:1024 #: src/reader.c:1036
#, 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:1192 #: src/reader.c:1204
#, 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:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
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:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
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:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
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:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
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:1580 #: src/reader.c:1573
#, 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:1588 #: src/reader.c:1581
#, 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:1591 #: src/reader.c:1584
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:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Non-terminaux inutiles:" msgstr "Non-terminaux inutiles:"
#: src/reduce.c:419 #: 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:430 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Règles inutiles:" msgstr "Règles inutiles:"
#: src/reduce.c:458 #: 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 règles jamais réduites\n"
msgstr ""
"Variables\n"
"---------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Valeur Spréc Sassoc Tag\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d catégories non productives%s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Règles\n"
"------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Règles interprétées\n"
"-------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d règles jamais réduites\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d catégories non productives%s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " et " msgstr " et "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, 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(s) non productive(s)%s"
#: src/reduce.c:540 #: 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"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
"s.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -726,17 +680,17 @@ msgstr "%s: l'option %s est ambig
#: lib/getopt.c:719 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: l'option --%s n'admet pas de paramètre\n" msgstr "%s: l'option --%s n'admet pas d'argument\n"
#: lib/getopt.c:724 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'option %c%s n'admet pas de paramètre\n" msgstr "%s: l'option %c%s n'admet pas d'argument\n"
#: lib/getopt.c:742 lib/getopt.c:915 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'option %s requiert un paramètre\n" msgstr "%s: l'option %s requiert un argument\n"
#. --option #. --option
#: lib/getopt.c:771 #: lib/getopt.c:771
@@ -765,7 +719,7 @@ msgstr "%s: option non valide -- %c\n"
#: lib/getopt.c:834 lib/getopt.c:964 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'option requiert un paramètre -- %c\n" msgstr "%s: l'option requiert un argument -- %c\n"
#: lib/getopt.c:881 #: lib/getopt.c:881
#, c-format #, c-format
@@ -775,7 +729,7 @@ msgstr "%s: l'option `-W %s' est ambigu
#: lib/getopt.c:899 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'option `-W %s' n'admet pas de paramètre\n" msgstr "%s: l'option `-W %s' n'admet pas d'argument\n"
#. 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.
@@ -797,14 +751,62 @@ 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"
#~ msgstr "DÉRIVES"
#~ msgid "%s derives"
#~ msgstr "%s dérive"
#~ msgid "Entering set_nullable"
#~ msgstr "Entré dans set_nullable"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
#~ "s.\n"
#~ msgid " 1 shift/reduce conflict" #~ msgid " 1 shift/reduce conflict"
#~ msgstr " 1 conflit décalage/réduction" #~ msgstr " 1 conflit décalage/réduction"
BIN
View File
Binary file not shown.
+190 -182
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28\n" "Project-Id-Version: GNU bison 1.28\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 1999-09-28 21:10+0900\n" "PO-Revision-Date: 1999-09-28 21:10+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"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Type: text/plain; charset=EUC-JP\n" "Content-Type: text/plain; charset=EUC-JP\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "%s の数が多すぎます (最大 %d)"
@@ -26,83 +26,83 @@ msgstr ""
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "%s: 致命的エラー: " msgstr "%s: 致命的エラー: "
#: 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:411 #: 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 シフト/還元衝突" msgstr[0] " %d シフト/還元衝突"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " および" msgstr " および"
#: src/conflicts.c:424 #: 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 還元/還元衝突" msgstr[0] " %d 還元/還元衝突"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, c-format #, fuzzy, 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "衝突: " msgstr "衝突: "
#: src/conflicts.c:483 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d シフト/還元" msgstr " %d シフト/還元"
#: src/conflicts.c:487 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d 還元/還元" msgstr " %d 還元/還元"
#: src/conflicts.c:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d シフト/還元衝突" msgstr[0] " %d シフト/還元衝突"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 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,37 +111,22 @@ msgstr ""
" $default\t規則 %d を利用して還元 (%s)\n" " $default\t規則 %d を利用して還元 (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
#, fuzzy
msgid "DERIVES"
msgstr ""
"\n"
"\n"
"\n"
"DERIVES\n"
"\n"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s は以下から派生"
#: src/files.c:143
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:162 #: src/files.c:163
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -215,7 +200,7 @@ msgid ""
"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:693 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
@@ -235,7 +220,7 @@ msgstr "%s: ʸˡ
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:311 #: src/lalr.c:255
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "%s の数が多すぎます (最大 %d)"
@@ -244,7 +229,7 @@ msgstr "%s
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "予期しない `/' が見つかり、無視されました" msgstr "予期しない `/' が見つかり、無視されました"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "閉じていないコメントです" msgstr "閉じていないコメントです"
@@ -284,69 +269,60 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう" msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
#: src/lex.c:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:682 #: src/lex.c:683
#, fuzzy, c-format #, fuzzy, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "%s: オプション `%s' は引数を要求します\n" msgstr "%s: オプション `%s' は引数を要求します\n"
#: src/main.c:128 #: src/output.c:949
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: 内部エラー: %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "set_nullable に入ります"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "最大テーブルサイズ (%s) を超えました" msgstr "最大テーブルサイズ (%s) を超えました"
#: src/print.c:37 #: 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:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (規則 %d)" msgstr " (規則 %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taccept\n" msgstr " $default\taccept\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " 動作無し\n" msgstr " 動作無し\n"
#: src/print.c:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: src/print.c:180
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -356,24 +332,28 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:211
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"文法\n" "文法\n"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr ""
#: src/print.c:217
#, fuzzy, c-format
msgid " %3d %3d %s ->"
msgstr "規則 %-4d %s ->" msgstr "規則 %-4d %s ->"
#: src/print.c:240 #: 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:245 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -381,7 +361,7 @@ msgstr ""
"終端トークン、およびそこに現れた規則\n" "終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:269 #: src/print.c:256
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -389,256 +369,265 @@ msgstr ""
"非終端トークン、およびそこに現れた規則\n" "非終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " 左辺:" msgstr " 左辺:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " 右辺:" msgstr " 右辺:"
#: src/print_graph.c:174 #. 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
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tエラー (非結合)\n" msgstr " %-4s\tエラー (非結合)\n"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " 次の \\n にスキップ" msgstr " 次の \\n にスキップ"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " 次の %c にスキップ" msgstr " 次の %c にスキップ"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "無効な $ の値" msgstr "無効な $ の値"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "閉じられていない文字列がファイル末尾にあります" msgstr "閉じられていない文字列がファイル末尾にあります"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "閉じられていない文字列" msgstr "閉じられていない文字列"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s は無効です" msgstr "@%s は無効です"
#: src/reader.c:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, fuzzy, c-format #, fuzzy, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "`%s' の $%s に宣言のない型があります" msgstr "`%s' の $%s に宣言のない型があります"
#: src/reader.c:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "`%{' 定義 が閉じられていません" msgstr "`%{' 定義 が閉じられていません"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr ""
#: src/reader.c:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "シンボル %s が再定義されました" msgstr "シンボル %s が再定義されました"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s の型が再定義されました" msgstr "%s の型が再定義されました"
#: src/reader.c:541 #: src/reader.c:552
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "%2$s 内の `%1$s' は無効です" msgstr "%2$s 内の `%1$s' は無効です"
#: src/reader.c:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "複数の %start が宣言されました" msgstr "複数の %start が宣言されました"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "無効な %start が宣言されました" msgstr "無効な %start が宣言されました"
#: src/reader.c:580 #: src/reader.c:592
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type 宣言に <タイプ名> がありません" msgstr "%type 宣言に <タイプ名> がありません"
#: src/reader.c:615 #: src/reader.c:627
#, fuzzy, c-format #, fuzzy, 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:660 #: src/reader.c:672
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "%s に先行した再定義です" msgstr "%s に先行した再定義です"
#: src/reader.c:683 #: src/reader.c:695
#, 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:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "予期せぬアイテム: %s" msgstr "予期せぬアイテム: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "対応のない `{' です" msgstr "対応のない `{' です"
#: src/reader.c:798 #: src/reader.c:810
#, fuzzy, c-format #, fuzzy, 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:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "認識できない: %s" msgstr "認識できない: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "文法の入力が無い" msgstr "文法の入力が無い"
#: src/reader.c:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "未知の文字: %s" msgstr "未知の文字: %s"
#: src/reader.c:1192 #: src/reader.c:1204
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "閉じられていない %%guard 節です" msgstr "閉じられていない %%guard 節です"
#: src/reader.c:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "文法は縦棒 (|) で始めます" msgstr "文法は縦棒 (|) で始めます"
#: src/reader.c:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています" msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "一つの規則の終りに二つの動作を指定しています" msgstr "一つの規則の終りに二つの動作を指定しています"
#: src/reader.c:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません" msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:1580 #: src/reader.c:1573
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "無効な入力: %s" msgstr "無効な入力: %s"
#: src/reader.c:1588 #: src/reader.c:1581
#, 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 "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s" msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
#: src/reader.c:1591 #: src/reader.c:1584
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません" msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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 "トークン %s と %s の双方が番号 %s に割り当てられました" msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
#: src/reader.c:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: src/reduce.c:409
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"不使用非終端子:\n" "不使用非終端子:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:422
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -647,7 +636,7 @@ msgstr ""
"利用されない終端子:\n" "利用されない終端子:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:433
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -656,72 +645,33 @@ msgstr ""
"不使用規則:\n" "不使用規則:\n"
"\n" "\n"
#: src/reduce.c:458 #: 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 個の規則は決して還元されません\n"
msgstr ""
"変数\n"
"---------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "値 前置 結合 タグ\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d 個の不使用非終端子%.0s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"規則\n"
"-----\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"解釈された規則\n"
"-----------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d 個の規則は決して還元されません\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d 個の不使用非終端子%.0s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr "および" msgstr "および"
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d 個の不使用規則%.0s" msgid_plural "%d useless rules"
msgstr[0] "%d 個の不使用規則%.0s"
#: src/reduce.c:540 #: 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 はどの文にも由来しません"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0sが"
"定義されました\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -802,11 +752,11 @@ 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 ""
@@ -865,6 +815,22 @@ msgstr ""
#~ msgid "%s contains" #~ msgid "%s contains"
#~ msgstr "%s には、" #~ msgstr "%s には、"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgid "%s derives"
#~ msgstr "%s は以下から派生"
#~ msgid "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -896,6 +862,12 @@ 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"
#~ msgstr "set_nullable に入ります"
#~ msgid "\t\t/* empty */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* 空 */" #~ msgstr "\t\t/* 空 */"
@@ -922,3 +894,39 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "邪悪な %type 宣言です" #~ msgstr "邪悪な %type 宣言です"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0s"
#~ "が定義されました\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"
BIN
View File
Binary file not shown.
+190 -182
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n" "PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
"Last-Translator: Erick Branderhorst <[email protected]>\n" "Last-Translator: Erick Branderhorst <[email protected]>\n"
"Language-Team: Dutch <[email protected]>\n" "Language-Team: Dutch <[email protected]>\n"
@@ -13,7 +13,7 @@ msgstr ""
"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"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
@@ -26,83 +26,83 @@ msgstr ""
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "fatale fout: %s\n" msgstr "fatale fout: %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 "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n" msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n"
#: src/conflicts.c:111 src/conflicts.c:134 #: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce" msgid "reduce"
msgstr "reduceer" msgstr "reduceer"
#: src/conflicts.c:117 src/conflicts.c:130 #: src/conflicts.c:101 src/conflicts.c:115
msgid "shift" msgid "shift"
msgstr "verschuif" msgstr "verschuif"
#: src/conflicts.c:138 #: src/conflicts.c:123
msgid "an error" msgid "an error"
msgstr "een fout" msgstr "een fout"
#: src/conflicts.c:411 #: 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 verschuif/reduceer conflicten" msgstr[0] " %d verschuif/reduceer conflicten"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " en" msgstr " en"
#: src/conflicts.c:424 #: 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 reduceer/reduceer conflicten" msgstr[0] " %d reduceer/reduceer conflicten"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, c-format #, fuzzy, c-format
msgid "State %d contains " msgid "State %d contains "
msgstr "Stadium %d bevat" msgstr "Stadium %d bevat"
#. 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictueerd: " msgstr "conflictueerd: "
#: src/conflicts.c:483 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d vershuif/reduceer" msgstr " %d vershuif/reduceer"
#: src/conflicts.c:487 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reduceer/reduceer" msgstr " %d reduceer/reduceer"
#: src/conflicts.c:492 src/reduce.c:497 #: src/conflicts.c:398 src/reduce.c:508
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s bevat" msgstr "%s bevat"
#: src/conflicts.c:500 #: src/conflicts.c:405
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d verschuif/reduceer conflicten" msgstr[0] " %d verschuif/reduceer conflicten"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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[reduceer gebruikt regel %d (%s)]\n" msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
#: src/conflicts.c:598 src/print.c:171 #: src/conflicts.c:461 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,37 +111,22 @@ msgstr ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/conflicts.c:727 #: src/conflicts.c:544
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/derives.c:43 #: src/files.c:144
#, fuzzy
msgid "DERIVES"
msgstr ""
"\n"
"\n"
"\n"
"AFGELEIDEN\n"
"\n"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s afgeleiden"
#: src/files.c:143
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:162 #: src/files.c:163
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -215,7 +200,7 @@ msgid ""
"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:693 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
@@ -235,7 +220,7 @@ msgstr "%s: geen grammatica bestand gegeven\n"
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argumenten genegeerd na '%s'\n" msgstr "%s: extra argumenten genegeerd na '%s'\n"
#: src/lalr.c:311 #: src/lalr.c:255
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
@@ -244,7 +229,7 @@ msgstr ""
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "onverwachte `/' gevonden en genegeerd" msgstr "onverwachte `/' gevonden en genegeerd"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ongetermineerd commentaar" msgstr "ongetermineerd commentaar"
@@ -284,69 +269,60 @@ msgstr "niet getermineerd type naam"
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "gebruik \"...\" voor meerdere karakters literal tekens" msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
#: src/lex.c:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:682 #: src/lex.c:683
#, fuzzy, c-format #, fuzzy, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "%s: optie `%s' vereist een argument\n" msgstr "%s: optie `%s' vereist een argument\n"
#: src/main.c:128 #: src/output.c:949
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interne fout, %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "Inkomende set nullable"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale tabel grootte (%s) overschreden" msgstr "maximale tabel grootte (%s) overschreden"
#: src/print.c:37 #: src/print.c:39
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr "" msgstr ""
#: src/print.c:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regel %d)" msgstr " (regel %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr "" msgstr ""
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " GEEN AKTIES\n" msgstr " GEEN AKTIES\n"
#: src/print.c:132 #: src/print.c:124
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr "" msgstr ""
#: src/print.c:135 #: 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 "" msgstr ""
#: src/print.c:159 #: src/print.c:142
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr "" msgstr ""
#: src/print.c:187 #: src/print.c:169
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr "" msgstr ""
#: src/print.c:199 #: src/print.c:180
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -356,24 +332,28 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:211
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Grammatica\n" "Grammatica\n"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr ""
#: src/print.c:217
#, fuzzy, c-format
msgid " %3d %3d %s ->"
msgstr "regel %-4d %s ->" msgstr "regel %-4d %s ->"
#: src/print.c:240 #: 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:245 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -381,7 +361,7 @@ msgstr ""
"Terminals, met regels waar ze voorkomen\n" "Terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:269 #: src/print.c:256
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -389,259 +369,268 @@ msgstr ""
"Geen terminals, met regels waar ze voorkomen\n" "Geen terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " links:" msgstr " links:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " rechts:" msgstr " rechts:"
#: src/print_graph.c:174 #. 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 #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "" msgstr ""
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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 "" msgstr ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
"\n" "\n"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Verder naar volgende \\n" msgstr " Verder naar volgende \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Verder naar volgende %c" msgstr " Verder naar volgende %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "onjuiste $ waarde" msgstr "onjuiste $ waarde"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "niet getermineerde string aan einde van bestand" msgstr "niet getermineerde string aan einde van bestand"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "niet getermineerde string" msgstr "niet getermineerde string"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s is onjuist" msgstr "@%s is onjuist"
#: src/reader.c:365 #: src/reader.c:376
#, c-format #, c-format
msgid "$$ of `%s' has no declared type" msgid "$$ of `%s' has no declared type"
msgstr "$$ van `%s' heeft geen gedeclareerd type" msgstr "$$ van `%s' heeft geen gedeclareerd type"
#: src/reader.c:382 #: src/reader.c:393
#, fuzzy, c-format #, fuzzy, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%s van `%s' heeft geen gedeclareerd type" msgstr "$%s van `%s' heeft geen gedeclareerd type"
#: src/reader.c:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "niet getermineerde `%{' definitie" msgstr "niet getermineerde `%{' definitie"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr ""
#: src/reader.c:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbool %s opnieuw gedefinieerd" msgstr "symbool %s opnieuw gedefinieerd"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "type herdeclaratie voor %s" msgstr "type herdeclaratie voor %s"
#: src/reader.c:541 #: src/reader.c:552
#, c-format #, c-format
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' is onjuist in %s" msgstr "`%s' is onjuist in %s"
#: src/reader.c:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "meerdere %start declaraties" msgstr "meerdere %start declaraties"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "onjuiste %start declaratie" msgstr "onjuiste %start declaratie"
#: src/reader.c:580 #: src/reader.c:592
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "%type declaratie heeft geen <typenaam>" msgstr "%type declaratie heeft geen <typenaam>"
#: src/reader.c:615 #: src/reader.c:627
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "onjuist %%type declaratie door item: `%s'" msgstr "onjuist %%type declaratie door item: `%s'"
#: src/reader.c:660 #: src/reader.c:672
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "herdefinieren voorganger van %s" msgstr "herdefinieren voorganger van %s"
#: src/reader.c:683 #: src/reader.c:695
#, c-format #, c-format
msgid "invalid text (%s) - number should be after identifier" msgid "invalid text (%s) - number should be after identifier"
msgstr "onjuiste tekst (%s) - nummer hoort na de identifier" msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
#: src/reader.c:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "onbekend item: %s" msgstr "onbekend item: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "niet overeenkomstige `{'" msgstr "niet overeenkomstige `{'"
#: src/reader.c:798 #: src/reader.c:810
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "argument van %expect is niet een integer" msgstr "argument van %expect is niet een integer"
#: src/reader.c:844 #: src/reader.c:856
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "onbekend item %s, verwacht een identifier" msgstr "onbekend item %s, verwacht een identifier"
#: src/reader.c:866 #: src/reader.c:878
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "verwacht string constante in plaats van %s" msgstr "verwacht string constante in plaats van %s"
#: src/reader.c:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "onbekend: %s" msgstr "onbekend: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "geen invoer grammatica" msgstr "geen invoer grammatica"
#: src/reader.c:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "onbekend karakter: %s" msgstr "onbekend karakter: %s"
#: src/reader.c:1192 #: src/reader.c:1204
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "niet getermineerde %%guard voorwaarde" msgstr "niet getermineerde %%guard voorwaarde"
#: src/reader.c:1359 #: src/reader.c:1357
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "" msgstr ""
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt" "slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
#: src/reader.c:1366 #: src/reader.c:1364
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "grammatica start met een verticale bar" msgstr "grammatica start met een verticale bar"
#: src/reader.c:1397 #: src/reader.c:1392
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "regel geven voor %s, welke een teken is" msgstr "regel geven voor %s, welke een teken is"
#: src/reader.c:1499 #: src/reader.c:1492
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "twee @prec's in een regel" msgstr "twee @prec's in een regel"
#: src/reader.c:1507 #: src/reader.c:1500
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd" msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
#: src/reader.c:1516 #: src/reader.c:1509
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "twee akties aan het einde van een regel" msgstr "twee akties aan het einde van een regel"
#: src/reader.c:1530 #: src/reader.c:1523
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "type clash (`%s' `%s') bij standaard aktie" msgstr "type clash (`%s' `%s') bij standaard aktie"
#: src/reader.c:1536 #: src/reader.c:1529
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "lege regel voor getypte niet terminal, en geen aktie" msgstr "lege regel voor getypte niet terminal, en geen aktie"
#: src/reader.c:1580 #: src/reader.c:1573
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ongeldige invoer: %s" msgstr "ongeldige invoer: %s"
#: src/reader.c:1588 #: src/reader.c:1581
#, 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 "te veel symbolen (tekens plus nietterminals); maximum %s" msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
#: src/reader.c:1591 #: src/reader.c:1584
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "geen regels voor invoer grammatica" msgstr "geen regels voor invoer grammatica"
#: src/reader.c:1615 #: src/reader.c:1608
#, 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 ""
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n" "symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
"heeft geen regels" "heeft geen regels"
#: src/reader.c:1707 #: src/reader.c:1743
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "" msgstr ""
#: src/reader.c:1760 #: src/reader.c:1796
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s" msgstr "conflictuerende precedentein voor %s en %s"
#: src/reader.c:1772 #: src/reader.c:1808
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "conflictuerende associatieve waarden voor %s en %s" msgstr "conflictuerende associatieve waarden voor %s en %s"
#: src/reader.c:1811 #: src/reader.c:1847
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "" msgstr ""
#: src/reader.c:1813 #: src/reader.c:1849
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "het start symbool %s is een token" msgstr "het start symbool %s is een token"
#: src/reduce.c:405 #: src/reduce.c:409
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Onbruikbare niet terminals:\n" "Onbruikbare niet terminals:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:422
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -650,7 +639,7 @@ msgstr ""
"Terminals welke niet worden gebruikt:\n" "Terminals welke niet worden gebruikt:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:433
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -659,72 +648,33 @@ msgstr ""
"Onbruikbare regels:\n" "Onbruikbare regels:\n"
"\n" "\n"
#: src/reduce.c:458 #: 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 regels nooit gereduceerd\n"
msgstr ""
"Variabelen\n"
"----------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Waarde Sprec Sassoc Tag\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d onbruikbare niet terminal%s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Regels\n"
"------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Geinterpreteerde regels\n"
"-----------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d regels nooit gereduceerd\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d onbruikbare niet terminal%s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " en " msgstr " en "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d onbruikbare regels%s" msgid_plural "%d useless rules"
msgstr[0] "%d onbruikbare regels%s"
#: src/reduce.c:540 #: 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 "Start symbool %s is niet afkomstig uit een zin" msgstr "Start symbool %s is niet afkomstig uit een zin"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d productie"
"%s.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -805,11 +755,11 @@ msgstr "%s: geen geheugen meer beschikbaar\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 ""
@@ -868,6 +818,22 @@ msgstr ""
#~ msgid "%s contains" #~ msgid "%s contains"
#~ msgstr "%s bevat" #~ msgstr "%s bevat"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "AFGELEIDEN\n"
#~ "\n"
#~ msgid "%s derives"
#~ msgstr "%s afgeleiden"
#~ msgid "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -898,6 +864,12 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "limiet van %d overschreden, te veel %s" #~ msgstr "limiet van %d overschreden, te veel %s"
#~ msgid "internal error, %s\n"
#~ msgstr "interne fout, %s\n"
#~ msgid "Entering set_nullable"
#~ msgstr "Inkomende set nullable"
#~ msgid "unterminated comment in `%{' definition" #~ msgid "unterminated comment in `%{' definition"
#~ msgstr "niet getermineerd commentaar in `%{' definitie" #~ msgstr "niet getermineerd commentaar in `%{' definitie"
@@ -921,3 +893,39 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "slecht geformuleerde %type declaratie" #~ msgstr "slecht geformuleerde %type declaratie"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d "
#~ "productie%s.\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Variabelen\n"
#~ "----------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "Waarde Sprec Sassoc Tag\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Regels\n"
#~ "------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Geinterpreteerde regels\n"
#~ "-----------------------\n"
#~ "\n"
BIN
View File
Binary file not shown.
+180 -176
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.29\n" "Project-Id-Version: bison 1.29\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 2001-09-09 13:49+04:00\n" "PO-Revision-Date: 2001-09-09 13:49+04:00\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"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Type: text/plain; charset=koi8-r\n" "Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
@@ -26,83 +26,83 @@ msgstr "
msgid "warning: " msgid "warning: "
msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: " msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
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:411 #: 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 ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:418 #: src/conflicts.c:309
#, fuzzy #, fuzzy
msgid "and" msgid "and"
msgstr " É" msgstr " É"
#: src/conflicts.c:424 #: 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 ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ" msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:448 #: src/conflicts.c:340
#, fuzzy, c-format #, fuzzy, 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "ËÏÎÆÌÉËÔÙ: " msgstr "ËÏÎÆÌÉËÔÙ: "
#: src/conflicts.c:483 #: src/conflicts.c:389
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ" msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
#: src/conflicts.c:487 #: src/conflicts.c:393
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ" msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
#: src/conflicts.c:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, fuzzy, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 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,31 +111,22 @@ msgstr ""
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
msgid "DERIVES"
msgstr "DERIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ"
#: src/files.c:143
#, 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:163
msgid "cannot close file" msgid "cannot close file"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
@@ -238,7 +229,7 @@ msgstr ""
"ðòéçïäîïóôé\n" "ðòéçïäîïóôé\n"
"äìñ ïðòåäåìåîîïê ãåìé.\n" "äìñ ïðòåäåìåîîïê ãåìé.\n"
#: src/getargs.c:215 src/lex.c:693 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
@@ -258,7 +249,7 @@ msgstr "%s:
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:311 #: src/lalr.c:255
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
@@ -267,7 +258,7 @@ msgstr "
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'" msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
@@ -306,415 +297,380 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ" msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
#: src/lex.c:666 #: src/lex.c:667
#, c-format #, c-format
msgid "`%s' supports no argument: %s" msgid "`%s' supports no argument: %s"
msgstr "" msgstr ""
#: src/lex.c:682 #: src/lex.c:683
#, fuzzy, c-format #, fuzzy, c-format
msgid "`%s' requires an argument" msgid "`%s' requires an argument"
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n" msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
#: src/main.c:128 #: src/output.c:949
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "÷ÈÏÄ × set_nullable"
#: src/output.c:986
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)" msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
#: src/print.c:37 #: 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:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (ÐÒÁ×ÉÌÏ %d)" msgstr " (ÐÒÁ×ÉÌÏ %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tÐÒÉÎÑÔÉÅ\n" msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " îåô äåêóô÷éê\n" msgstr " îåô äåêóô÷éê\n"
#: src/print.c:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: 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:229 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "çÒÁÍÍÁÔÉËÁ" msgstr "çÒÁÍÍÁÔÉËÁ"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr ""
#: src/print.c:217
#, fuzzy, c-format
msgid " %3d %3d %s ->"
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->" msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
#: src/print.c:240 #: 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:245 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:269 #: src/print.c:256
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " ÎÁÌÅ×Ï:" msgstr " ÎÁÌÅ×Ï:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:" msgstr " ÎÁÐÒÁ×Ï:"
#: src/print_graph.c:174 #. 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 #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)" msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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)"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n" msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c" msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ" msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s" msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
#: src/reader.c:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, 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:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s" msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s"
#: src/reader.c:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
#: src/reader.c:541 #: src/reader.c:552
#, 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:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:580 #: src/reader.c:592
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>" msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
#: src/reader.c:615 #: src/reader.c:627
#, 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:660 #: src/reader.c:672
#, c-format #, c-format
msgid "redefining precedence of %s" msgid "redefining precedence of %s"
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s" msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
#: src/reader.c:683 #: src/reader.c:695
#, 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:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "ÎÅÐÁÒÎÁÑ %s" msgstr "ÎÅÐÁÒÎÁÑ %s"
#: src/reader.c:798 #: src/reader.c:810
#, 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:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ" msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:1192 #: src/reader.c:1204
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
#: src/reader.c:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ" msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ" msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ" msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ" "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1580 #: src/reader.c:1573
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s" msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1588 #: src/reader.c:1581
#, 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:1591 #: src/reader.c:1584
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ" msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:419 #: src/reduce.c:422
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:" msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:430 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
#: src/reduce.c:458 #: 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 ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
msgstr ""
"ðÅÒÅÍÅÎÎÙÅ\n"
"----------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"ðÒÁ×ÉÌÁ\n"
"-------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"éÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÎÙÅ ÐÒÁ×ÉÌÁ\n"
"--------------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " É " msgstr " É "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, c-format
msgid "%d useless rule%s" msgid "%d useless rule"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s" msgid_plural "%d useless rules"
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
#: src/reduce.c:540 #: 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 ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
#: src/reduce.c:553
#, c-format
msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
msgstr ""
"×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
"×Ù×ÏÄÁ%s.\n"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -794,11 +750,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 "'"
@@ -811,6 +767,18 @@ msgstr "'"
#~ msgid "%s contains" #~ msgid "%s contains"
#~ msgstr "%s ÓÏÄÅÒÖÉÔ" #~ msgstr "%s ÓÏÄÅÒÖÉÔ"
#~ msgid "DERIVES"
#~ msgstr "DERIVES"
#~ msgid "%s derives"
#~ msgstr "%s ×Ù×ÏÄÉÔ"
#~ msgid "%s: internal error: %s\n"
#~ msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
#~ msgid "Entering set_nullable"
#~ msgstr "÷ÈÏÄ × set_nullable"
#~ msgid "\t\t/* empty */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* ÐÕÓÔÏ */" #~ msgstr "\t\t/* ÐÕÓÔÏ */"
@@ -820,5 +788,41 @@ 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 ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
#~ "×Ù×ÏÄÁ%s.\n"
#~ msgid "@%s is invalid" #~ msgid "@%s is invalid"
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s" #~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
+801
View File
@@ -0,0 +1,801 @@
# Swedish messages for bison.
# Copyright © 2001 Free Software Foundation, Inc.
# Göran Uddeborg <[email protected]>, 2001.
# $Revision$
#
msgid ""
msgstr ""
"Project-Id-Version: bison 1.30e\n"
"POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 2001-11-27 11:16+0100\n"
"Last-Translator: Göran Uddeborg <[email protected]>\n"
"Language-Team: Swedish <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/LR0.c:189
#, c-format
msgid "too many states (max %d)"
msgstr "för många tillstånd (max %d)"
#: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error"
msgstr "Okänt systemfel"
#: src/complain.c:150
msgid "warning: "
msgstr "varning: "
#: src/complain.c:238
msgid "fatal error: "
msgstr "ödesdigert fel: "
#: src/conflicts.c:44
#, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr ""
"Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n"
#: src/conflicts.c:94 src/conflicts.c:119
msgid "reduce"
msgstr "reducera"
#: src/conflicts.c:101 src/conflicts.c:115
msgid "shift"
msgstr "skifta"
#: src/conflicts.c:123
msgid "an error"
msgstr "ett fel"
#: src/conflicts.c:302
#, c-format
msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] "%d skifta/reducerakonflikt"
msgstr[1] "%d skifta/reducerakonflikter"
#: src/conflicts.c:309
msgid "and"
msgstr "och"
#: src/conflicts.c:315
#, c-format
msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] "%d reducera/reducerakonflikt"
msgstr[1] "%d reducera/reducerakonflikter"
#: src/conflicts.c:340
#, c-format
msgid "State %d contains "
msgstr "Tillstånd %d innehåller "
#. If invoked with `--yacc', use the output format specified by
#. POSIX.
#: src/conflicts.c:387
msgid "conflicts: "
msgstr "konflikter: "
#: src/conflicts.c:389
#, c-format
msgid " %d shift/reduce"
msgstr " %d skifta/reducera"
#: src/conflicts.c:393
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reducera/reducera"
#: src/conflicts.c:398 src/reduce.c:508
#, c-format
msgid "%s contains "
msgstr "%s innehåller "
#: src/conflicts.c:405
#, c-format
msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts\n"
msgstr[0] "förväntade %d skifta/reducerakonflikt\n"
msgstr[1] "förväntade %d skifta/reducerakonflikter\n"
#: src/conflicts.c:457 src/conflicts.c:534
#, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reducera med regel %d (%s)]\n"
#: src/conflicts.c:461 src/print.c:154
#, c-format
msgid ""
" $default\treduce using rule %d (%s)\n"
"\n"
msgstr ""
" $standard\treducera med regel %d (%s)\n"
"\n"
#: src/conflicts.c:515 src/conflicts.c:528
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treducera med regel %d (%s)\n"
#: src/conflicts.c:544
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $standard\treducera med regel %d (%s)\n"
#: src/files.c:144
#, c-format
msgid "cannot open file `%s'"
msgstr "kan inte öppna filen \"%s\""
#: src/files.c:163
msgid "cannot close file"
msgstr "kan inte stänga fil"
#. 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 genererar parsrar för LALR(1)-grammatiker.\n"
#: src/getargs.c:88
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Användning: %s [FLAGGA]... FIL\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 ""
"Om en lång flagga visar ett argument som obligatoriskt är det\n"
"obligatoriskt för den motsvarande korta flaggan också. Motsvarande\n"
"för valfria argument.\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 ""
"Arbetslägen:\n"
" -h, --help visa denna hjälptext och avsluta\n"
" -V, --version visa versionsinformation och avsluta\n"
" -y, --yacc emulera 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 ""
"Tolk:\n"
" -S, --skeleton=FIL ange skelettfilen som skall användas\n"
" -t, --debug instrumentera tolken för felsökning\n"
" --locations aktivera lägesberäkning\n"
" -p, --name-prefix=PREFIX lägg till PREFIX före externa symboler\n"
" -l, --no-lines generera inte \"#line\"-direktiv\n"
" -n, --no-parser generera endast tabellerna\n"
" -k, --token-table inkludera en tabell över elementnamn\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 ""
"Utdata:\n"
" -d, --defines skapa också en huvudfil\n"
" -v, --verbose skapa också en förklaring av automaten\n"
" -b, --file-prefix=PREFIX ange ett PREFIX för utdatafiler\n"
" -o, --output=FIL lägg utdata i FIL\n"
" -g, --graph skapa också en VCG-beskrivning av automaten\n"
#: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n"
msgstr ""
"Rapportera fel till <[email protected]>.\n"
"Rapportera anmärkningar på översättningen till <[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 Free Software Foundation, Inc.\n"
msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:150
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 ""
"Detta är fri programvara, se källkoden för kopieringsvillkor. Det\n"
"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
"SPECIELLT ÄNDAMÅL.\n"
#: src/getargs.c:215 src/lex.c:694
#, c-format
msgid "`%s' is no longer supported"
msgstr "\"%s\" stöds inte längre"
#: src/getargs.c:239
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Försök med \"%s --help\" för mer information.\n"
#: src/getargs.c:246
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: ingen grammatikfil angiven\n"
#: src/getargs.c:250
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argument ignorerade efter \"%s\"\n"
#: src/lalr.c:255
#, c-format
msgid "too many gotos (max %d)"
msgstr "för många goto (max %d)"
#: src/lex.c:76
msgid "unexpected `/' found and ignored"
msgstr "oväntat \"/\" hittat och ignorerat"
#: src/lex.c:105 src/reader.c:280
msgid "unterminated comment"
msgstr "oavslutad kommentar"
#: src/lex.c:137
msgid "unexpected end of file"
msgstr "oväntat filslut"
#: src/lex.c:166
msgid "unescaped newline in constant"
msgstr "oskyddat nyradstecken i konstant"
#: src/lex.c:208
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "oktalt värde utanför intervallet 0-255: \"\\%o\""
#: src/lex.c:233
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "hexadecimalt värde över 255: \"\\x%x\""
#: src/lex.c:245
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "okänd specialsekvens: \"\\\" följt av \"%s\""
#: src/lex.c:342
msgid "unterminated type name at end of file"
msgstr "oavslutat typnamn vid filslut"
#: src/lex.c:345
msgid "unterminated type name"
msgstr "oavslutat typnamn"
#: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens"
msgstr "använd \"...\" för bokstavliga element med mer än ett tecken"
#: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr "\"%s\" stödjer inga argument: %s"
#: src/lex.c:683
#, c-format
msgid "`%s' requires an argument"
msgstr "\"%s\" behöver ett argument"
#: src/output.c:949
#, c-format
msgid "maximum table size (%d) exceeded"
msgstr "maximal tabellstorlek (%d) överskriden"
#: src/print.c:39
#, c-format
msgid " type %d is %s\n"
msgstr " typ %d är %s\n"
#: src/print.c:88
#, c-format
msgid " (rule %d)"
msgstr " (regel %d)"
#: src/print.c:108
msgid " $default\taccept\n"
msgstr " $standard\tacceptera\n"
#: src/print.c:110
msgid " NO ACTIONS\n"
msgstr " INGA ÅTGÄRDER\n"
#: src/print.c:124
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tgå till tillstånd %d\n"
#: src/print.c:127
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tskifta, och gå till tillstånd %d\n"
#: src/print.c:142
#, c-format
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tfel (ickeassociativ)\n"
#: src/print.c:169
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgå till tillstånd %d\n"
#: src/print.c:180
#, c-format
msgid "state %d"
msgstr "tillstånd %d"
#. rule # : LHS -> RHS
#: src/print.c:211
msgid "Grammar"
msgstr "Grammatik"
#: src/print.c:212
msgid "Number, Line, Rule"
msgstr "Nummer, Rad, Regel"
#: src/print.c:217
#, c-format
msgid " %3d %3d %s ->"
msgstr " %3d %3d %s ->"
#: src/print.c:224
msgid "empty"
msgstr "tom"
#. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:231
msgid "Terminals, with rules where they appear"
msgstr "Terminaler, med regler där de förekommer"
#: src/print.c:256
msgid "Nonterminals, with rules where they appear"
msgstr "Icketerminaler, med regler där de förekommer"
#: src/print.c:282
msgid " on left:"
msgstr " till vänster:"
#: src/print.c:297
msgid " on right:"
msgstr " till höger:"
#. 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\tfel (ickeassociativ)"
#.
#. 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 "$standard\treducera med regel %d (%s)"
#: src/reader.c:89
msgid " Skipping to next \\n"
msgstr " Hoppar över till nästa \\n"
#: src/reader.c:91
#, c-format
msgid " Skipping to next %c"
msgstr " Hoppar över till nästa %c"
#: src/reader.c:142 src/reader.c:154
msgid "invalid $ value"
msgstr "felaktigt $-värde"
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "oavslutad sträng vid filslut"
#: src/reader.c:183
msgid "unterminated string"
msgstr "oavslutad sträng"
#: src/reader.c:336 src/reader.c:400
#, c-format
msgid "%s is invalid"
msgstr "%s är felaktigt"
#: src/reader.c:376
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ för \"%s\" har ingen deklarerad typ"
#: src/reader.c:393
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%d för \"%s\" har ingen deklarerad typ"
#: src/reader.c:447
msgid "unterminated `%{' definition"
msgstr "oavslutad \"%{\"-definition"
#: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, c-format
msgid "Premature EOF after %s"
msgstr "Förtida filslut efter %s"
#: src/reader.c:509
#, c-format
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"
#: src/reader.c:512
#, c-format
msgid "symbol `%s' given more than one literal string"
msgstr "symbolen \"%s\" har fått mer än en bokstavlig sträng"
#: src/reader.c:533 src/reader.c:676
#, c-format
msgid "symbol %s redefined"
msgstr "symbolen %s omdefinierad"
#: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, c-format
msgid "type redeclaration for %s"
msgstr "typen omdeklarerad för %s"
#: src/reader.c:552
#, c-format
msgid "`%s' is invalid in %s"
msgstr "\"%s\" är felaktig i %s"
#: src/reader.c:570 src/reader.c:735
#, c-format
msgid "multiple %s declarations"
msgstr "flera %s-deklarationer"
#: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, c-format
msgid "invalid %s declaration"
msgstr "felaktig %s-deklaration"
#: src/reader.c:592
msgid "%type declaration has no <typename>"
msgstr "%type-deklaration har inget <typnamn>"
#: src/reader.c:627
#, c-format
msgid "invalid %%type declaration due to item: %s"
msgstr "felaktig %%type-deklaration på grund av objekt: %s"
#: src/reader.c:672
#, c-format
msgid "redefining precedence of %s"
msgstr "omdefinition av precedens för %s"
#: src/reader.c:695
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "felaktig text (%s) - tal skulle följa efter identifierare"
#: src/reader.c:705
#, c-format
msgid "unexpected item: %s"
msgstr "oväntat objekt: %s"
#: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, c-format
msgid "unmatched %s"
msgstr "ensam %s"
#: src/reader.c:810
#, c-format
msgid "argument of %%expect is not an integer"
msgstr "argument till %%expect är inte ett heltal"
#: src/reader.c:856
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "oväntat objekt %s, förväntade en identifierare"
#: src/reader.c:878
#, c-format
msgid "expected string constant instead of %s"
msgstr "förväntade strängkonstant istället för %s"
#: src/reader.c:1026
#, c-format
msgid "unrecognized: %s"
msgstr "okänt: %s"
#: src/reader.c:1031
msgid "no input grammar"
msgstr "ingen ingrammatik"
#: src/reader.c:1036
#, c-format
msgid "unknown character: %s"
msgstr "okänt tecken: %s"
#: src/reader.c:1204
#, c-format
msgid "unterminated %guard clause"
msgstr "oavlutad %guard-sats"
#: src/reader.c:1357
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "felskriven regel: första symbolen följs inte av ett kolon"
#: src/reader.c:1364
msgid "grammar starts with vertical bar"
msgstr "grammatiken startar med ett vertikalt streck"
#: src/reader.c:1392
#, c-format
msgid "rule given for %s, which is a token"
msgstr "regel given för %s, som är ett element"
#: src/reader.c:1492
msgid "two @prec's in a row"
msgstr "två @prec i rad"
#: src/reader.c:1500
#, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard finns men %%semantic_parser är inte angiven"
#: src/reader.c:1509
msgid "two actions at end of one rule"
msgstr "två åtgärder vid slutet av en regel"
#: src/reader.c:1523
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
#: src/reader.c:1529
msgid "empty rule for typed nonterminal, and no action"
msgstr "tom regel för typad icketerminal, och ingen åtgärd"
#: src/reader.c:1573
#, c-format
msgid "invalid input: %s"
msgstr "felaktig indata: %s"
#: src/reader.c:1581
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "för många symboler (element plus icketerminaler); max %d"
#: src/reader.c:1584
msgid "no rules in the input grammar"
msgstr "inga regler i ingrammatiken"
#: src/reader.c:1608
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"symbolen %s används, men är inte definierad som ett element och har inga "
"regler"
#: src/reader.c:1743
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "elementen %s och %s har båda fått nummer %d"
#: src/reader.c:1796
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "motstridiga precedenser mellan %s och %s"
#: src/reader.c:1808
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "motstridiga assoc-värden mellan %s och %s"
#: src/reader.c:1847
#, c-format
msgid "the start symbol %s is undefined"
msgstr "startsymbolen %s är odefinierad"
#: src/reader.c:1849
#, c-format
msgid "the start symbol %s is a token"
msgstr "startsymbolen %s är ett element"
#: src/reduce.c:409
msgid "Useless nonterminals:"
msgstr "Oanvändbara icketerminaler:"
#: src/reduce.c:422
msgid "Terminals which are not used:"
msgstr "Terminaler som inte används:"
#: src/reduce.c:433
msgid "Useless rules:"
msgstr "Oanvändbara regler:"
#: src/reduce.c:503
#, fuzzy, c-format
msgid "%d rule never reduced\n"
msgid_plural "%d rules never reduced\n"
msgstr[0] "%d regler reduceras aldrig\n"
# Jag har anmält att det är fel att anta att "s" är en universell pluraländelse.
# Jag föreslog också att de använder ngettext istället.
# "Vad göras skall är redan gjort."
#: src/reduce.c:511
#, fuzzy, c-format
msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d oanvändbara icketerminaler%.0s"
#: src/reduce.c:517
msgid " and "
msgstr " och "
#: src/reduce.c:520
#, fuzzy, c-format
msgid "%d useless rule"
msgid_plural "%d useless rules"
msgstr[0] "%d oanvändbara regler%.0s"
#: src/reduce.c:551
#, c-format
msgid "Start symbol %s does not derive any sentence"
msgstr "Startsymbolen %s genererar inga meningar"
#: lib/getopt.c:694
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: flaggan \"%s\" är tvetydig\n"
#: lib/getopt.c:719
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"--%s\" tar inget argument\n"
#: lib/getopt.c:724
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
#: lib/getopt.c:742 lib/getopt.c:915
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: flaggan \"%s\" behöver ett argument\n"
#. --option
#: lib/getopt.c:771
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: okänd flagga \"--%s\"\n"
#. +option or -option
#: lib/getopt.c:775
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: okänd flagga \"%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: otillåten flagga -- %c\n"
#: lib/getopt.c:804
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ogiltig flagga --%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: flaggan behöver ett argument -- %c\n"
#: lib/getopt.c:881
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
#: lib/getopt.c:899
#, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan \"-W %s\" tar inget argument\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 "minnet slut"
# När vi går över till Unicode mer allmänt kanske vi bör översätta båda dessa
# med U+201D (RIGHT DOUBLE QUOTATION MARK) på svenska. Eller?
#
#. 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 "%s: internal error: %s\n"
#~ msgstr "%s: internt fel: %s\n"
#~ msgid ""
#~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Variabler\n"
#~ "---------\n"
#~ "\n"
#~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "Värde Sprec Sassoc Tagg\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Regler\n"
#~ "------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Tolkade regler\n"
#~ "--------------\n"
#~ "\n"
+202 -219
View File
@@ -4,17 +4,17 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.30\n" "Project-Id-Version: bison 1.30e\n"
"POT-Creation-Date: 2001-11-12 10:34+0100\n" "POT-Creation-Date: 2001-12-05 12:47+0100\n"
"PO-Revision-Date: 2001-11-02 14:49GMT\n" "PO-Revision-Date: 2001-11-27 11:37GMT+2\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"
"X-Generator: KBabel 0.9.5\n" "X-Generator: KBabel 0.9.5\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
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)"
@@ -27,84 +27,86 @@ msgstr "Bilinmeyen sistem hatas
msgid "warning: " msgid "warning: "
msgstr "uyarý: " msgstr "uyarý: "
#: src/complain.c:238 src/complain.c:279 #: src/complain.c:238
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:411 #: 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:418 #: src/conflicts.c:309
#, fuzzy
msgid "and" msgid "and"
msgstr " ve" msgstr "ve"
#: src/conflicts.c:424 #: 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:448 #: 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:481 #: src/conflicts.c:387
msgid "conflicts: " msgid "conflicts: "
msgstr "çeliþkiler: " msgstr "çeliþkiler: "
#: src/conflicts.c:483 #: 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:487 #: 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:492 src/reduce.c:497 #: 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:500 #: src/conflicts.c:405
#, fuzzy, c-format #, c-format
msgid "expected %d shift/reduce conflict" msgid "expected %d shift/reduce conflict\n"
msgid_plural "expected %d shift/reduce conflicts" 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:587 src/conflicts.c:707 #: src/conflicts.c:457 src/conflicts.c:534
#, 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:598 src/print.c:171 #: src/conflicts.c:461 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,31 +115,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:687 src/conflicts.c:701 #: src/conflicts.c:515 src/conflicts.c:528
#, 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:727 #: src/conflicts.c:544
#, 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/derives.c:43 #: src/files.c:144
msgid "DERIVES"
msgstr "TÜRETÝLENLER"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s türetildi"
#: src/files.c:143
#, 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:163
msgid "cannot close file" msgid "cannot close file"
msgstr "dosya kapatýlamýyor" msgstr "dosya kapatýlamýyor"
@@ -157,10 +150,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 ""
@@ -169,6 +162,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"
@@ -194,7 +188,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"
@@ -204,16 +197,18 @@ 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 ""
"Çýktý:\n" "Output:\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.
@@ -238,7 +233,7 @@ 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:693 #: src/getargs.c:215 src/lex.c:694
#, 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"
@@ -251,14 +246,14 @@ msgstr "Daha fazla bilgi i
#: src/getargs.c:246 #: src/getargs.c:246
#, 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:250
#, 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:311 #: src/lalr.c:255
#, 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)"
@@ -267,7 +262,7 @@ msgstr "gotos
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "beklenmeyen `/' bulundu ve yoksayýldý" msgstr "beklenmeyen `/' bulundu ve yoksayýldý"
#: src/lex.c:105 src/reader.c:269 #: src/lex.c:105 src/reader.c:280
msgid "unterminated comment" msgid "unterminated comment"
msgstr "sonlandýrýlmamýþ açýklama" msgstr "sonlandýrýlmamýþ açýklama"
@@ -296,7 +291,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"
@@ -304,419 +299,383 @@ 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:666 #: src/lex.c:667
#, 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:682 #: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
#: src/main.c:128
#, 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/nullable.c:51 #: src/output.c:949
msgid "Entering set_nullable"
msgstr "set_nullable'a girildi"
#: src/output.c:986
#, 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:37 #: 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:85 #: src/print.c:88
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (kural %d)" msgstr " (kural %d)"
#: src/print.c:111 #: src/print.c:108
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tonayla\n" msgstr " $default\tonayla\n"
#: src/print.c:113 #: src/print.c:110
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " EYLEMLER YOK\n" msgstr " EYLEM YOK\n"
#: src/print.c:132 #: 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:135 #: 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:159 #: 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:187 #: 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:199 #: 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:229 #: src/print.c:211
msgid "Grammar" msgid "Grammar"
msgstr "Gramer" msgstr "Gramer"
#: src/print.c:234 #: src/print.c:212
#, c-format msgid "Number, Line, Rule"
msgid "rule %-4d %s ->" msgstr "Sayý, Satýr, Kural"
msgstr "kural %-4d %s ->"
#: src/print.c:240 #: src/print.c:217
#, c-format
msgid " %3d %3d %s ->"
msgstr " %3d %3d %s ->"
#: 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:245 #: 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:269 #: 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:295 #: src/print.c:282
msgid " on left:" msgid " on left:"
msgstr " solda:" msgstr " solda:"
#: src/print.c:310 #: src/print.c:297
msgid " on right:" msgid " on right:"
msgstr " saðda:" msgstr " saðda:"
#: src/print_graph.c:174 #. 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 #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\thata (birleþmeli deðil)" msgstr "%-4s\thata (birleþmeli deðil)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: 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"
#: src/reader.c:78 #: src/reader.c:89
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
msgstr " Sonrakine atlanýyor \\n" msgstr " Sonrakine atlanýyor \\n"
#: src/reader.c:80 #: src/reader.c:91
#, c-format #, c-format
msgid " Skipping to next %c" msgid " Skipping to next %c"
msgstr " Sonraki %c'ye atlanýyor" msgstr " Sonraki %c'ye atlanýyor"
#: src/reader.c:131 src/reader.c:143 #: src/reader.c:142 src/reader.c:154
msgid "invalid $ value" msgid "invalid $ value"
msgstr "geçersiz $ deðeri" msgstr "geçersiz $ deðeri"
#: src/reader.c:169 src/reader.c:184 #: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file" msgid "unterminated string at end of file"
msgstr "dosyanýn sonunda sonlandýrýlmamýþ dizge" msgstr "dosyanýn sonunda sonlandýrýlmamýþ dizge"
#: src/reader.c:172 #: src/reader.c:183
msgid "unterminated string" msgid "unterminated string"
msgstr "sonlandýrýlmamýþ dizge" msgstr "sonlandýrýlmamýþ dizge"
#: src/reader.c:325 src/reader.c:389 #: src/reader.c:336 src/reader.c:400
#, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "%s geçersizdir" msgstr "%s geçersizdir"
#: src/reader.c:365 #: src/reader.c:376
#, 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:382 #: src/reader.c:393
#, 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 "`%d''in $%s'i bildirilmiþ tip deðil"
#: src/reader.c:436 #: src/reader.c:447
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ" msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ"
#: src/reader.c:481 src/reader.c:595 src/reader.c:645 #: src/reader.c:492 src/reader.c:607 src/reader.c:657
#, 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:498 #: src/reader.c:509
#, 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:501 #: src/reader.c:512
#, 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:522 src/reader.c:664 #: src/reader.c:533 src/reader.c:676
#, 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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294 #: src/reader.c:543 src/reader.c:622 src/reader.c:683 src/reader.c:1292
#, 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:541 #: src/reader.c:552
#, 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:558 src/reader.c:723 #: src/reader.c:570 src/reader.c:735
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri" msgstr "çoklu %s bildirimleri"
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272 #: src/reader.c:572 src/reader.c:914 src/reader.c:939 src/reader.c:1270
#, 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:580 #: src/reader.c:592
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:615 #: src/reader.c:627
#, 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:660 #: src/reader.c:672
#, 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:683 #: src/reader.c:695
#, 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:693 #: src/reader.c:705
#, c-format #, c-format
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "beklenmeyen öðe: %s" msgstr "beklenmeyen öðe: %s"
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169 #: src/reader.c:778 src/reader.c:1110 src/reader.c:1181
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "eþlenemeyen %s" msgstr "eþlenemeyen %s"
#: src/reader.c:798 #: src/reader.c:810
#, 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:844 #: src/reader.c:856
#, 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:866 #: src/reader.c:878
#, 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:1014 #: src/reader.c:1026
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tanýnmayan: %s" msgstr "tanýnmayan: %s"
#: src/reader.c:1019 #: src/reader.c:1031
msgid "no input grammar" msgid "no input grammar"
msgstr "girdi grameri yok" msgstr "girdi grameri yok"
#: src/reader.c:1024 #: src/reader.c:1036
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "bilinmeyen karakter: %s" msgstr "bilinmeyen karakter: %s"
#: src/reader.c:1192 #: src/reader.c:1204
#, 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:1359 #: src/reader.c:1357
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:1366 #: src/reader.c:1364
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:1397 #: src/reader.c:1392
#, 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:1499 #: src/reader.c:1492
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:1507 #: src/reader.c:1500
#, 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:1516 #: src/reader.c:1509
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:1530 #: src/reader.c:1523
#, 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:1536 #: src/reader.c:1529
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:1580 #: src/reader.c:1573
#, 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:1588 #: src/reader.c:1581
#, 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:1591 #: src/reader.c:1584
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:1615 #: src/reader.c:1608
#, 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:1707 #: src/reader.c:1743
#, 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:1760 #: src/reader.c:1796
#, 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:1772 #: src/reader.c:1808
#, 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:1811 #: src/reader.c:1847
#, 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:1813 #: src/reader.c:1849
#, 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:405 #: src/reduce.c:409
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz kurallar:"
#: src/reduce.c:419 #: 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:430 #: src/reduce.c:433
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz kurallar:"
#: src/reduce.c:458 #: 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 kural asla indirgenmedi\n"
msgstr ""
"Deðiþkenler\n"
"-----------\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:511
msgid "Value Sprec Sassoc Tag\n" #, fuzzy, c-format
msgstr "Deðer Söncel Sbirleþ Etiket\n" msgid "%d useless nonterminal"
msgid_plural "%d useless nonterminals"
msgstr[0] "%d yararsýz deðiþken simge%s"
#: src/reduce.c:463 #: src/reduce.c:517
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Kurallar\n"
"--------\n"
"\n"
#: src/reduce.c:473
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Kurallar yorumlandý\n"
"-------------------\n"
"\n"
#: src/reduce.c:495
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d kural asla indirgenmedi\n"
#: src/reduce.c:501
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d yararsýz deðiþken simge%s"
#: src/reduce.c:506
msgid " and " msgid " and "
msgstr " ve " msgstr " ve "
#: src/reduce.c:510 #: src/reduce.c:520
#, c-format #, fuzzy, 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%s"
#: src/reduce.c:540 #: 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"
#: src/reduce.c:553
#, c-format
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"
#: lib/getopt.c:694 #: lib/getopt.c:694
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -796,19 +755,43 @@ 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" #~ msgid "%s: internal error: %s\n"
#~ msgstr " 1 öteleme/indirgeme çeliþkisi" #~ msgstr "%s: iç hata: %s\n"
#~ msgid " 1 reduce/reduce conflict" #~ msgid ""
#~ msgstr " 1 indirgeme/indirgeme çeliþkisi" #~ "Variables\n"
#~ "---------\n"
#~ "\n"
#~ msgstr ""
#~ "Deðiþkenler\n"
#~ "-----------\n"
#~ "\n"
#~ msgid "%s contains" #~ msgid "Value Sprec Sassoc Tag\n"
#~ msgstr "%s içerir" #~ msgstr "Deðer Söncel Sbirleþ Etiket\n"
#~ msgid ""
#~ "Rules\n"
#~ "-----\n"
#~ "\n"
#~ msgstr ""
#~ "Kurallar\n"
#~ "--------\n"
#~ "\n"
#~ msgid ""
#~ "Rules interpreted\n"
#~ "-----------------\n"
#~ "\n"
#~ msgstr ""
#~ "Kurallar yorumlandý\n"
#~ "-------------------\n"
#~ "\n"
+200 -288
View File
@@ -1,5 +1,5 @@
/* Generate the nondeterministic finite state machine for bison, /* Generate the nondeterministic finite state machine for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 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.
@@ -23,12 +23,14 @@
The entry point is generate_states. */ The entry point is generate_states. */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "reader.h"
#include "gram.h" #include "gram.h"
#include "state.h" #include "state.h"
#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;
@@ -48,7 +50,7 @@ static short *redset = NULL;
static short *shiftset = NULL; static short *shiftset = NULL;
static short **kernel_base = NULL; static short **kernel_base = NULL;
static short **kernel_end = NULL; static int *kernel_size = NULL;
static short *kernel_items = NULL; static short *kernel_items = NULL;
/* hash table for states, to recognize equivalent ones. */ /* hash table for states, to recognize equivalent ones. */
@@ -60,26 +62,21 @@ static core **state_table = NULL;
static void static void
allocate_itemsets (void) allocate_itemsets (void)
{ {
short *itemp = NULL;
int symbol;
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);
itemp = ritem; for (i = 0; ritem[i]; ++i)
symbol = *itemp++; if (ritem[i] > 0)
while (symbol) {
{ count++;
if (symbol > 0) symbol_count[ritem[i]]++;
{ }
count++;
symbol_count[symbol]++;
}
symbol = *itemp++;
}
/* See comments before new_itemsets. All the vectors of items /* See comments before new_itemsets. All the vectors of items
live inside KERNEL_ITEMS. The number of active items after live inside KERNEL_ITEMS. The number of active items after
@@ -98,8 +95,8 @@ allocate_itemsets (void)
count += symbol_count[i]; count += symbol_count[i];
} }
shift_symbol = symbol_count; free (symbol_count);
kernel_end = XCALLOC (short *, nsyms); kernel_size = XCALLOC (int, nsyms);
} }
@@ -117,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_end); free (kernel_size);
XFREE (kernel_items); XFREE (kernel_items);
XFREE (state_table); free (state_table);
} }
@@ -137,50 +134,39 @@ free_storage (void)
| shift_symbol is set to a vector of the symbols that can be | | shift_symbol is set to a vector of the symbols that can be |
| shifted. For each symbol in the grammar, kernel_base[symbol] | | shifted. For each symbol in the grammar, kernel_base[symbol] |
| points to a vector of item numbers activated if that symbol is | | points to a vector of item numbers activated if that symbol is |
| shifted, and kernel_end[symbol] points after the end of that | | shifted, and kernel_size[symbol] is their numbers. |
| vector. |
`----------------------------------------------------------------*/ `----------------------------------------------------------------*/
static void static void
new_itemsets (void) new_itemsets (void)
{ {
int i; int i;
int shiftcount;
short *isp;
short *ksp;
int symbol;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering new_itemsets\n"); fprintf (stderr, "Entering new_itemsets, state = %d\n",
#endif this_state->number);
for (i = 0; i < nsyms; i++) for (i = 0; i < nsyms; i++)
kernel_end[i] = NULL; kernel_size[i] = 0;
shiftcount = 0; shift_symbol = XCALLOC (short, nsyms);
nshifts = 0;
isp = itemset; for (i = 0; i < nitemset; ++i)
while (isp < itemsetend)
{ {
i = *isp++; int symbol = ritem[itemset[i]];
symbol = ritem[i];
if (symbol > 0) if (symbol > 0)
{ {
ksp = kernel_end[symbol]; if (!kernel_size[symbol])
if (!ksp)
{ {
shift_symbol[shiftcount++] = symbol; shift_symbol[nshifts] = symbol;
ksp = kernel_base[symbol]; nshifts++;
} }
*ksp++ = i + 1; kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1;
kernel_end[symbol] = ksp; kernel_size[symbol]++;
} }
} }
nshifts = shiftcount;
} }
@@ -193,36 +179,24 @@ new_itemsets (void)
static core * static core *
new_state (int symbol) new_state (int symbol)
{ {
int n;
core *p; core *p;
short *isp1;
short *isp2;
short *iend;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering new_state, symbol = %d\n", symbol); fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
#endif this_state->number, symbol, tags[symbol]);
if (nstates >= MAXSHORT) if (nstates >= MAXSHORT)
fatal (_("too many states (max %d)"), MAXSHORT); fatal (_("too many states (max %d)"), MAXSHORT);
isp1 = kernel_base[symbol]; p = CORE_ALLOC (kernel_size[symbol]);
iend = kernel_end[symbol];
n = iend - isp1;
p =
(core *) xcalloc ((unsigned) (sizeof (core) + (n - 1) * sizeof (short)), 1);
p->accessing_symbol = symbol; p->accessing_symbol = symbol;
p->number = nstates; p->number = nstates;
p->nitems = n; p->nitems = kernel_size[symbol];
isp2 = p->items; shortcpy (p->items, kernel_base[symbol], kernel_size[symbol]);
while (isp1 < iend)
*isp2++ = *isp1++;
last_state->next = p; last_state->next = p;
last_state = p; last_state = p;
nstates++; nstates++;
return p; return p;
@@ -232,54 +206,39 @@ new_state (int symbol)
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| Find the state number for the state we would get to (from the | | Find the state number for the state we would get to (from the |
| current state) by shifting symbol. Create a new state if no | | current state) by shifting symbol. Create a new state if no |
| equivalent one exists already. Used by append_states. | | equivalent one exists already. Used by append_states. |
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
static int static int
get_state (int symbol) get_state (int symbol)
{ {
int key; int key;
short *isp1; int i;
short *isp2;
short *iend;
core *sp; core *sp;
int found;
int n; if (trace_flag)
fprintf (stderr, "Entering get_state, state = %d, symbol = %d (%s)\n",
this_state->number, symbol, tags[symbol]);
#if TRACE /* Add up the target state's active item numbers to get a hash key.
fprintf (stderr, "Entering get_state, symbol = %d\n", symbol); */
#endif
isp1 = kernel_base[symbol];
iend = kernel_end[symbol];
n = iend - isp1;
/* add up the target state's active item numbers to get a hash key */
key = 0; key = 0;
while (isp1 < iend) for (i = 0; i < kernel_size[symbol]; ++i)
key += *isp1++; key += kernel_base[symbol][i];
key = key % STATE_TABLE_SIZE; key = key % STATE_TABLE_SIZE;
sp = state_table[key]; sp = state_table[key];
if (sp) if (sp)
{ {
found = 0; int found = 0;
while (!found) while (!found)
{ {
if (sp->nitems == n) if (sp->nitems == kernel_size[symbol])
{ {
found = 1; found = 1;
isp1 = kernel_base[symbol]; for (i = 0; i < kernel_size[symbol]; ++i)
isp2 = sp->items; if (kernel_base[symbol][i] != sp->items[i])
found = 0;
while (found && isp1 < iend)
{
if (*isp1++ != *isp2++)
found = 0;
}
} }
if (!found) if (!found)
@@ -301,6 +260,9 @@ get_state (int symbol)
state_table[key] = sp = new_state (symbol); state_table[key] = sp = new_state (symbol);
} }
if (trace_flag)
fprintf (stderr, "Exiting get_state => %d\n", sp->number);
return sp->number; return sp->number;
} }
@@ -318,9 +280,9 @@ append_states (void)
int j; int j;
int symbol; int symbol;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering append_states\n"); fprintf (stderr, "Entering append_states, state = %d\n",
#endif this_state->number);
/* first sort shift_symbol into increasing order */ /* first sort shift_symbol into increasing order */
@@ -337,55 +299,36 @@ append_states (void)
} }
for (i = 0; i < nshifts; i++) for (i = 0; i < nshifts; i++)
{ shiftset[i] = get_state (shift_symbol[i]);
symbol = shift_symbol[i];
shiftset[i] = get_state (symbol);
}
} }
static void static void
new_states (void) new_states (void)
{ {
core *p; first_state = last_state = this_state = CORE_ALLOC (0);
p = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1);
first_state = last_state = this_state = p;
nstates = 1; nstates = 1;
} }
/*------------------------------------------------------------.
| Save the NSHIFTS of SHIFTSET into the current linked list. |
`------------------------------------------------------------*/
static void static void
save_shifts (void) save_shifts (void)
{ {
shifts *p; shifts *p = shifts_new (nshifts);
short *sp1;
short *sp2;
short *send;
p = (shifts *) xcalloc ((unsigned) (sizeof (shifts) +
(nshifts - 1) * sizeof (short)), 1);
p->number = this_state->number; p->number = this_state->number;
p->nshifts = nshifts;
sp1 = shiftset; shortcpy (p->shifts, shiftset, nshifts);
sp2 = p->shifts;
send = shiftset + nshifts;
while (sp1 < send)
*sp2++ = *sp1++;
if (last_shift) if (last_shift)
{ last_shift->next = p;
last_shift->next = p;
last_shift = p;
}
else else
{ first_shift = p;
first_shift = p; last_shift = p;
last_shift = p;
}
} }
@@ -400,7 +343,7 @@ insert_start_shift (void)
core *statep; core *statep;
shifts *sp; shifts *sp;
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates; statep->number = nstates;
statep->accessing_symbol = start_symbol; statep->accessing_symbol = start_symbol;
@@ -408,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 = XCALLOC (shifts, 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;
@@ -429,135 +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 *) xcalloc ((unsigned) (sizeof (shifts)
+
sp->nshifts *
sizeof (short)), 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 = XCALLOC (shifts, 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 *) xcalloc (sizeof (shifts)
+ sp->nshifts * sizeof (short), 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 = XCALLOC (shifts, 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 = XCALLOC (shifts, 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. */
@@ -568,19 +393,121 @@ 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.
The symbol for that shift is 0 (end-of-file). */ The symbol for that shift is 0 (end-of-file). */
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates; statep->number = nstates;
last_state->next = statep; last_state->next = statep;
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 = XCALLOC (shifts, 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;
@@ -590,7 +517,7 @@ augment_automaton (void)
final_state = nstates; final_state = nstates;
/* Make the termination state. */ /* Make the termination state. */
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates++; statep->number = nstates++;
last_state->next = statep; last_state->next = statep;
last_state = statep; last_state = statep;
@@ -606,21 +533,15 @@ augment_automaton (void)
static void static void
save_reductions (void) save_reductions (void)
{ {
short *isp;
short *rp1;
short *rp2;
int item;
int count; int count;
reductions *p; int i;
short *rend;
/* 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 (isp = itemset; isp < itemsetend; isp++) for (i = 0; i < nitemset; ++i)
{ {
item = ritem[*isp]; int item = ritem[itemset[i]];
if (item < 0) if (item < 0)
redset[count++] = -item; redset[count++] = -item;
} }
@@ -629,29 +550,18 @@ save_reductions (void)
if (count) if (count)
{ {
p = (reductions *) xcalloc ((unsigned) (sizeof (reductions) + reductions *p = REDUCTIONS_ALLOC (count);
(count - 1) * sizeof (short)), 1);
p->number = this_state->number; p->number = this_state->number;
p->nreds = count; p->nreds = count;
rp1 = redset; shortcpy (p->rules, redset, count);
rp2 = p->rules;
rend = rp1 + count;
for (/* nothing */; rp1 < rend; ++rp1, ++rp2)
*rp2 = *rp1;
if (last_reduction) if (last_reduction)
{ last_reduction->next = p;
last_reduction->next = p;
last_reduction = p;
}
else else
{ first_reduction = p;
first_reduction = p; last_reduction = p;
last_reduction = p;
}
} }
} }
@@ -670,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
@@ -684,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 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)
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)/lib \
-I$(top_srcdir)
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
+26 -13
View File
@@ -101,22 +101,33 @@ 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)
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)/lib \
-I$(top_srcdir)
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 +136,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 +154,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
@@ -164,14 +175,13 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
@AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/nullable$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/nullable$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/output$U.Po $(DEPDIR)/print$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/output$U.Po $(DEPDIR)/print$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/print_graph$U.Po $(DEPDIR)/reader$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/print_graph$U.Po $(DEPDIR)/reader$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/symtab$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/state$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/vcg$U.Po $(DEPDIR)/vmsgetargs$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/symtab$U.Po $(DEPDIR)/vcg$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/warshall$U.Po @AMDEP_TRUE@ $(DEPDIR)/vmsgetargs$U.Po $(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)
@@ -246,6 +256,7 @@ mostlyclean-kr:
@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)/state$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/symtab$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/symtab$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vcg$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vcg$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vmsgetargs$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vmsgetargs$U.Po@am__quote@
@@ -300,6 +311,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,7 +326,7 @@ 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:
install-pkgdataDATA: $(pkgdata_DATA) install-pkgdataDATA: $(pkgdata_DATA)
+288 -198
View File
@@ -28,75 +28,112 @@
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 C 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 (yyoverflow) || defined (YYERROR_VERBOSE)
# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
# define YYSTACK_USE_ALLOCA 1 /* The parser invokes alloca or malloc; define the necessary symbols. */
# include <alloca.h>
# else /* not sparc */ # if YYSTACK_USE_ALLOCA
/* We think this test detects Watcom and Microsoft C. */ # define YYSTACK_ALLOC alloca
/* This used to test MSDOS, but that is a bad idea since that # define YYSIZE_T size_t
symbol is in the user namespace. */ # else
# if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) # ifndef YYSTACK_USE_ALLOCA
# if 0 # if defined (alloca) || defined (_ALLOCA_H)
/* No need for malloc.h, which pollutes the namespace; instead, # define YYSTACK_ALLOC alloca
just don't use alloca. */ # define YYSIZE_T size_t
# include <malloc.h> # else
# if defined (__GNUC__) || defined (_AIX) || defined (__hpux)
# define YYSTACK_ALLOC __builtin_alloca
# endif
# ifndef __GNUC__
# ifdef _AIX
# pragma alloca
# endif # endif
# else /* not MSDOS, or __TURBOC__ */ # if defined (__sgi) || defined (__sparc__) || defined (__sparc) || defined (__sun)
# if defined(_AIX) # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
/* I don't know what this was needed for, but it pollutes the # define YYSTACK_ALLOC alloca
namespace. So I turned it off. rms, 2 May 1997. */ # define YYSIZE_T size_t
/* #include <malloc.h> */ # endif
#pragma alloca # endif
# define YYSTACK_USE_ALLOCA 1 # endif
# else /* not MSDOS, or __TURBOC__, or _AIX */ # endif
# if 0 # endif
/* [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 # ifdef YYSTACK_ALLOC
# define YYSTACK_USE_ALLOCA 0 /* Pacify GCC's `empty if-body' warning. */
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# else
# define YYSTACK_ALLOC malloc
# define YYSTACK_FREE(Ptr) free (Ptr)
# if defined (__STDC__) || defined (__cplusplus)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# endif
# 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) && (defined (__STDC__) || defined (__cplusplus))
# define YYSTACK_REALLOC(Type, What, Array) \ # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
do { \ # define YYSIZE_T size_t
Type *old = What; \ #endif
What = (Type *) malloc (yystacksize * sizeof (Type)); \ #if ! defined (YYSIZE_T)
__yy_memcpy ((char *) What, (char *) old, \ # define YYSIZE_T unsigned int
(size) * (unsigned int) sizeof (Type)); \
yyfree_stacks = 1; \
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,6 +206,7 @@ while (0)
/* Enable debugging if requested. */ /* Enable debugging if requested. */
#if YYDEBUG #if YYDEBUG
# include <stdio.h>
# define YYDPRINTF(Args) \ # define YYDPRINTF(Args) \
do { \ do { \
if (yydebug) \ if (yydebug) \
@@ -189,7 +227,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 +241,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
@@ -262,7 +353,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 +365,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 +392,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 +429,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. */
@@ -385,73 +476,71 @@ yyparse (YYPARSE_PARAM_ARG)
if (yyssp >= yyss + yystacksize - 1) if (yyssp >= yyss + yystacksize - 1)
{ {
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into memory.
*/
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
#if YYLSP_NEEDED
YYLTYPE *yyls1 = yyls;
#endif
/* 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
/* Each stack pointer address is followed by the size of the {
data in use in that stack, in bytes. */ /* Give user a chance to reallocate the stack. Use copies of
# if YYLSP_NEEDED these so that the &'s don't force the real ones into
/* This used to be a conditional around just the two extra args, memory. */
but that might be undefined if yyoverflow is a macro. */ YYSTYPE *yyvs1 = yyvs;
yyoverflow ("parser stack overflow", short *yyss1 = yyss;
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yyls1, size * sizeof (*yylsp),
&yystacksize);
# else
yyoverflow ("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yystacksize);
# endif
yyss = yyss1; yyvs = yyvs1; /* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. */
# if YYLSP_NEEDED # if YYLSP_NEEDED
yyls = yyls1; YYLTYPE *yyls1 = yyls;
/* This used to be a conditional around just the two extra args,
but that might be undefined if yyoverflow is a macro. */
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
&yyls1, yysize * sizeof (*yylsp),
&yystacksize);
yyls = yyls1;
# else
yyoverflow ("parser stack overflow",
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
&yystacksize);
# endif # endif
yyss = yyss1;
yyvs = yyvs1;
}
#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;
@@ -603,14 +692,14 @@ 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), ", fprintf (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]]); fprintf (stderr, "%s ", yytname[yyrhs[yyi]]);
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
} }
#endif #endif
@@ -626,10 +715,10 @@ yyreduce:
#if YYDEBUG #if YYDEBUG
if (yydebug) if (yydebug)
{ {
short *ssp1 = yyss - 1; short *yyssp1 = yyss - 1;
fprintf (stderr, "state stack now"); fprintf (stderr, "state stack now");
while (ssp1 != yyssp) while (yyssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1); fprintf (stderr, " %d", *++yyssp1);
fprintf (stderr, "\n"); fprintf (stderr, "\n");
} }
#endif #endif
@@ -668,46 +757,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 nec to avoid negative indexes in yycheck. */ /* Start YYX at -YYN if negative to avoid negative indexes in
for (x = (yyn < 0 ? -yyn : 0); YYCHECK. */
x < (int) (sizeof (yytname) / sizeof (char *)); x++) for (yyx = yyn < 0 ? -yyn : 0;
if (yycheck[x + yyn] == x) yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
size += strlen (yytname[x]) + 15, count++; if (yycheck[yyx + yyn] == yyx)
size += strlen ("parse error, unexpected `") + 1; yysize += yystrlen (yytname[yyx]) + 15, yycount++;
size += strlen (yytname[YYTRANSLATE (yychar)]); yysize += yystrlen ("parse error, unexpected ") + 1;
msg = (char *) malloc (size); yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
if (msg != 0) yymsg = (char *) YYSTACK_ALLOC (yysize);
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)]);
strcat (msg, "'");
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);
strcat (msg, "'"); yyp = yystpcpy (yyp, yytname[yyx]);
count++; yycount++;
} }
} }
yyerror (msg); yyerror (yymsg);
free (msg); YYSTACK_FREE (yymsg);
} }
else else
yyerror ("parse error; also virtual memory exceeded"); 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;
@@ -770,10 +860,10 @@ yyerrpop:
#if YYDEBUG #if YYDEBUG
if (yydebug) if (yydebug)
{ {
short *ssp1 = yyss - 1; short *yyssp1 = yyss - 1;
fprintf (stderr, "Error: state stack now"); fprintf (stderr, "Error: state stack now");
while (ssp1 != yyssp) while (yyssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1); fprintf (stderr, " %d", *++yyssp1);
fprintf (stderr, "\n"); fprintf (stderr, "\n");
} }
#endif #endif
@@ -819,28 +909,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;
} }
+99 -160
View File
@@ -1,5 +1,5 @@
/* Subroutines for bison /* Subroutines 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.
@@ -19,61 +19,69 @@
02111-1307, USA. */ 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "gram.h" #include "gram.h"
#include "reader.h"
#include "closure.h" #include "closure.h"
#include "derives.h" #include "derives.h"
#include "warshall.h" #include "warshall.h"
/* NITEMSET is the size of the array ITEMSET. */
short *itemset; short *itemset;
short *itemsetend; int nitemset;
static unsigned *ruleset; static unsigned *ruleset;
/* internal data. See comments before set_fderives and set_firsts. */ /* internal data. See comments before set_fderives and set_firsts. */
static unsigned *fderives; static unsigned *fderives;
static unsigned *firsts; static unsigned *firsts;
/* Retrieve the FDERIVES/FIRSTS sets of the nonterminals numbered Var. */
#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;
/* number of words required to hold a bit for each variable */ /* number of words required to hold a bit for each variable */
static int varsetsize; static int varsetsize;
#if DEBUG
/*-----------------. /*-----------------.
| Debugging code. | | Debugging code. |
`-----------------*/ `-----------------*/
static void static void
print_closure (int n) print_closure (const char *title, short *array, size_t size)
{ {
short *isp; size_t i;
fprintf (stderr, "Closure: %s\n", title);
printf ("\n\nn = %d\n\n", n); for (i = 0; i < size; ++i)
for (isp = itemset; isp < itemsetend; isp++) {
printf (" %d\n", *isp); 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;
printf ("\n\n\nFIRSTS\n\n");
fprintf (stderr, "FIRSTS\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf ("\n\n%s firsts\n\n", tags[i]); fprintf (stderr, "\t%s firsts\n", tags[i]);
rowp = firsts + ((i - ntokens) * varsetsize);
for (j = 0; j < nvars; j++) for (j = 0; j < nvars; j++)
if (BITISSET (rowp, j)) if (BITISSET (FIRSTS (i), j))
printf (" %s\n", tags[j + ntokens]); fprintf (stderr, "\t\t%d (%s)\n", j + ntokens, tags[j + ntokens]);
} }
fprintf (stderr, "\n\n");
} }
@@ -82,23 +90,24 @@ print_fderives (void)
{ {
int i; int i;
int j; int j;
unsigned *rp;
printf ("\n\n\nFDERIVES\n"); fprintf (stderr, "FDERIVES\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf ("\n\n%s derives\n\n", tags[i]); fprintf (stderr, "\t%s derives\n", tags[i]);
rp = fderives + i * rulesetsize;
for (j = 0; j <= nrules; j++) for (j = 0; j <= nrules; j++)
if (BITISSET (rp, j)) if (BITISSET (FDERIVES (i), j))
printf (" %d\n", j); {
short *rhsp;
fprintf (stderr, "\t\t%d:", j);
for (rhsp = ritem + rule_table[j].rhs; *rhsp > 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]);
fputc ('\n', stderr);
}
} }
fprintf (stderr, "\n\n");
fflush (stdout);
} }
#endif
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
| Set FIRSTS to be an NVARS by NVARS bit matrix indicating which | | Set FIRSTS to be an NVARS by NVARS bit matrix indicating which |
@@ -113,39 +122,24 @@ 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[rrhs[*sp++]]; SETBIT (FIRSTS (i), symbol - ntokens);
if (ISVAR (symbol)) }
{
symbol -= ntokens;
SETBIT (row, symbol);
}
}
row += rowsize;
}
RTC (firsts, nvars); RTC (firsts, nvars);
#ifdef DEBUG if (trace_flag)
print_firsts (); print_firsts ();
#endif
} }
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
@@ -161,52 +155,20 @@ 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 * rulesetsize; for (i = ntokens; i < nsyms; ++i)
for (j = ntokens; j < nsyms; ++j)
if (BITISSET (FIRSTS (i), j - ntokens))
for (k = 0; derives[j][k] > 0; ++k)
SETBIT (FDERIVES (i), derives[j][k]);
for (i = ntokens; i < nsyms; i++) if (trace_flag)
{ print_fderives ();
vrow = firsts + ((i - ntokens) * varsetsize);
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;
}
#ifdef DEBUG
print_fderives ();
#endif
XFREE (firsts); XFREE (firsts);
} }
@@ -228,82 +190,59 @@ new_closure (int n)
void void
closure (short *core, int n) closure (short *core, int n)
{ {
/* Index over CORE. */
int c;
/* Index over RULESET. */
int r;
/* A bit index over RULESET. */
int ruleno; int ruleno;
unsigned word;
short *csp;
unsigned *dsp;
unsigned *rsp;
short *csend; if (trace_flag)
unsigned *rsend; print_closure ("input", core, n);
int symbol;
int itemno;
rsp = ruleset;
rsend = ruleset + rulesetsize;
csend = core + n;
if (n == 0) if (n == 0)
{ {
dsp = fderives + start_symbol * rulesetsize; for (r = 0; r < rulesetsize; ++r)
while (rsp < rsend) ruleset[r] = FDERIVES (start_symbol)[r];
*rsp++ = *dsp++;
} }
else else
{ {
while (rsp < rsend) for (r = 0; r < rulesetsize; ++r)
*rsp++ = 0; ruleset[r] = 0;
csp = core; for (c = 0; c < n; ++c)
while (csp < csend) if (ISVAR (ritem[core[c]]))
{ for (r = 0; r < rulesetsize; ++r)
symbol = ritem[*csp++]; ruleset[r] |= FDERIVES (ritem[core[c]])[r];
if (ISVAR (symbol))
{
dsp = fderives + symbol * rulesetsize;
rsp = ruleset;
while (rsp < rsend)
*rsp++ |= *dsp++;
}
}
} }
ruleno = 0; nitemset = 0;
itemsetend = itemset; c = 0;
csp = core; for (ruleno = 0; ruleno < rulesetsize * BITS_PER_WORD; ++ruleno)
rsp = ruleset; if (BITISSET (ruleset, ruleno))
while (rsp < rsend) {
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)
{ {
word = *rsp++; 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 = rrhs[ruleno];
while (csp < csend && *csp < itemno)
*itemsetend++ = *csp++;
*itemsetend++ = itemno;
}
ruleno++;
}
}
} }
while (csp < csend) if (trace_flag)
*itemsetend++ = *csp++; print_closure ("output", itemset, nitemset);
#if DEBUG
print_closure (n);
#endif
} }
@@ -312,5 +251,5 @@ free_closure (void)
{ {
XFREE (itemset); XFREE (itemset);
XFREE (ruleset); XFREE (ruleset);
XFREE (fderives + ntokens * rulesetsize); XFREE (fderives);
} }
+10 -9
View File
@@ -1,5 +1,5 @@
/* Subroutines for bison /* Subroutines 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.
@@ -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 short *itemsetend; extern int nitemset;
#endif /* !CLOSURE_H_ */ #endif /* !CLOSURE_H_ */
+1 -60
View File
@@ -1,5 +1,5 @@
/* Declaration for error-reporting function for Bison. /* Declaration for error-reporting function for Bison.
Copyright 2000 Free Software Foundation, Inc. Copyright 2000, 2001 Free Software Foundation, Inc.
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
@@ -248,62 +248,3 @@ fatal (message, va_alist)
fflush (stderr); fflush (stderr);
exit (1); exit (1);
} }
/*------------------------------------------------------------------.
| A severe error has occurred, we cannot proceed. Exit with STATUS, |
| and report the error message of the errno ERRNUM. |
`------------------------------------------------------------------*/
void
#if defined VA_START && defined __STDC__
error (int status, int errnum,
const char *message, ...)
#else
error (status, errnum, message, va_alist)
int status;
int errnum;
char *message;
va_dcl
#endif
{
#ifdef VA_START
va_list args;
#endif
fflush (stdout);
if (infile != NULL)
fprintf (stderr, "%s:%d: ", infile, lineno);
else
fprintf (stderr, "%s:", program_name);
fputs (_("fatal error: "), stderr);
#ifdef VA_START
VA_START (args, message);
vfprintf (stderr, message, args);
va_end (args);
#else
fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
#endif
if (errnum)
{
#if defined HAVE_STRERROR_R || _LIBC
char errbuf[1024];
# if HAVE_WORKING_STRERROR_R || _LIBC
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
# else
/* Don't use __strerror_r's return value because on some systems
(at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
# endif
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
}
putc ('\n', stderr);
fflush (stderr);
if (status)
exit (status);
}
+2 -10
View File
@@ -1,5 +1,5 @@
/* Declaration for error-reporting function for Bison. /* Declaration for error-reporting function for Bison.
Copyright 2000 Free Software Foundation, Inc. Copyright 2000, 2001 Free Software Foundation, Inc.
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
@@ -40,18 +40,10 @@ extern void complain (const char *format, ...)
extern void fatal (const char *format, ...) extern void fatal (const char *format, ...)
__attribute__ ((__format__ (__printf__, 1, 2))); __attribute__ ((__format__ (__printf__, 1, 2)));
/* Print a message with `fprintf (stderr, FORMAT, ...)';
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
extern void error (int status, int errnum,
const char *format, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
#else #else
void warn (); void warn ();
void complain (); void complain ();
void error (); void fatal ();
#endif #endif
/* Position in the current input file. */ /* Position in the current input file. */
+203 -386
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 = shift_table[state]; 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 == accessing_symbol[shiftp->shifts[i]])
(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; errs *errp = ERRS_ALLOC (ntokens + 1);
int redprec;
errs *errp = (errs *) xcalloc (sizeof (errs) + ntokens * sizeof (short), 1);
short *errtokens = errp->errs; short *errtokens = errp->errs;
/* find the rule to reduce by to get precedence of reduction */
redprec = rprec[LAruleno[lookaheadnum]];
mask = 1;
fp1 = LA + lookaheadnum * tokensetsize;
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 *) xcalloc ((unsigned int) i, 1);
bcopy (errp, err_table[state], i);
}
else
err_table[state] = 0;
free (errp); free (errp);
} }
@@ -182,75 +156,47 @@ resolve_sr_conflict (int state, int lookaheadnum)
static void static void
set_conflicts (int state) set_conflicts (int state)
{ {
int i; int i, j;
int k;
shifts *shiftp; shifts *shiftp;
unsigned *fp2;
unsigned *fp3;
unsigned *fp4;
unsigned *fp1;
int symbol;
if (consistent[state]) if (state_table[state].consistent)
return; return;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
lookaheadset[i] = 0; lookaheadset[i] = 0;
shiftp = shift_table[state]; 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; SETBIT (lookaheadset, SHIFT_SYMBOL (shiftp, i));
for (i = 0; i < k; i++)
{
symbol = accessing_symbol[shiftp->shifts[i]];
if (ISVAR (symbol))
break;
SETBIT (lookaheadset, symbol);
}
}
k = lookaheads[state + 1];
fp4 = lookaheadset + tokensetsize;
/* 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
precedence */ precedence */
for (i = lookaheads[state]; i < k; i++) for (i = state_table[state].lookaheads;
if (rprec[LAruleno[i]]) i < state_table[state + 1].lookaheads;
{ ++i)
fp1 = LA + i * tokensetsize; if (rule_table[LAruleno[i]].prec)
fp2 = fp1; for (j = 0; j < tokensetsize; ++j)
fp3 = lookaheadset; if (LA (i)[j] & lookaheadset[j])
while (fp3 < fp4)
{ {
if (*fp2++ & *fp3++) resolve_sr_conflict (state, i);
{ break;
resolve_sr_conflict (state, i);
break;
}
} }
}
/* Loop over all rules which require lookahead in this state. Check /* Loop over all rules which require lookahead in this state. Check
for conflicts not resolved above. */ for conflicts not resolved above. */
for (i = lookaheads[state]; i < k; i++) for (i = state_table[state].lookaheads;
i < state_table[state + 1].lookaheads;
++i)
{ {
fp1 = LA + i * tokensetsize; for (j = 0; j < tokensetsize; ++j)
fp2 = fp1; if (LA (i)[j] & lookaheadset[j])
fp3 = lookaheadset;
while (fp3 < fp4)
if (*fp2++ & *fp3++)
conflicts[state] = 1; conflicts[state] = 1;
fp2 = fp1; for (j = 0; j < tokensetsize; ++j)
fp3 = lookaheadset; lookaheadset[j] |= LA (i)[j];
while (fp3 < fp4)
*fp3++ |= *fp2++;
} }
} }
@@ -263,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);
} }
@@ -277,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 = shift_table[state];
if (!shiftp) if (!shiftp)
return 0; return 0;
@@ -298,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 = accessing_symbol[shiftp->shifts[i]];
if (ISVAR (symbol))
break;
SETBIT (shiftset, symbol);
}
k = lookaheads[state + 1]; 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 = lookaheads[state]; i < k; i++) for (k = 0; k < tokensetsize; ++k)
{ lookaheadset[k] &= shiftset[k];
fp1 = LA + i * tokensetsize;
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;
} }
@@ -354,42 +263,24 @@ 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 = lookaheads[state]; int m = state_table[state].lookaheads;
int n = lookaheads[state + 1]; int n = state_table[state + 1].lookaheads;
if (n - m < 2) if (n - m < 2)
return 0; return 0;
mask = 1;
baseword = LA + m * tokensetsize;
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 (m), j))
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;
@@ -441,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])
@@ -448,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);
} }
@@ -461,6 +356,11 @@ conflicts_print (void)
{ {
int i; int i;
/* Is the number of SR conflicts OK? Either EXPECTED_CONFLICTS is
not set, and then we want 0 SR, or else it is specified, in which
case we want equality. */
int src_ok = 0;
int src_total = 0; int src_total = 0;
int rrc_total = 0; int rrc_total = 0;
@@ -472,33 +372,38 @@ conflicts_print (void)
rrc_total += count_rr_conflicts (i); rrc_total += count_rr_conflicts (i);
} }
/* Report the total number of conflicts on STDERR. */ src_ok = src_total == (expected_conflicts == -1 ? 0 : expected_conflicts);
if (src_total || rrc_total)
if (yacc_flag)
{
/* If invoked with `--yacc', use the output format specified by
POSIX. */
fprintf (stderr, _("conflicts: "));
if (src_total > 0)
fprintf (stderr, _(" %d shift/reduce"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf (stderr, ",");
if (rrc_total > 0)
fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
putc ('\n', stderr);
}
else
{
fprintf (stderr, _("%s contains "), infile);
fputs (conflict_report (src_total, rrc_total), stderr);
}
if (expected_conflicts != -1 /* If there are no RR conflicts, and as many SR conflicts as
&& src_total != expected_conflicts) expected, then there is nothing to report. */
if (!rrc_total && src_ok)
return;
/* Report the total number of conflicts on STDERR. */
if (yacc_flag)
{
/* If invoked with `--yacc', use the output format specified by
POSIX. */
fprintf (stderr, _("conflicts: "));
if (src_total > 0)
fprintf (stderr, _(" %d shift/reduce"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf (stderr, ",");
if (rrc_total > 0)
fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
putc ('\n', stderr);
}
else
{
fprintf (stderr, _("%s contains "), infile);
fputs (conflict_report (src_total, rrc_total), stderr);
}
if (expected_conflicts != -1 && !src_ok)
{ {
complain_message_count++; complain_message_count++;
fprintf (stderr, ngettext ("expected %d shift/reduce conflict", fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
"expected %d shift/reduce conflicts", "expected %d shift/reduce conflicts\n",
expected_conflicts), expected_conflicts),
expected_conflicts); expected_conflicts);
} }
@@ -510,20 +415,8 @@ print_reductions (FILE *out, int state)
{ {
int i; int i;
int j; 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;
@@ -531,104 +424,62 @@ 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 = shift_table[state]; 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 = accessing_symbol[shiftp->shifts[i]]; 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 = lookaheads[state]; m = state_table[state].lookaheads;
n = lookaheads[state + 1]; 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 * tokensetsize; 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[rlhs[default_rule]]); 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[rlhs[default_rule]]); default_rule, tags[rule_table[default_rule].lhs]);
} }
else if (n - m >= 1) else if (n - m >= 1)
{ {
cmax = 0; int k;
default_LA = -1;
fp4 = lookaheadset + tokensetsize; int cmax = 0;
int default_LA = -1;
int default_rule = 0;
if (!nodefault) if (!nodefault)
for (i = m; i < n; i++) for (i = m; i < n; i++)
{ {
fp1 = LA + i * tokensetsize; int count = 0;
fp2 = shiftset;
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)
{ {
@@ -637,56 +488,34 @@ 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 = accessing_symbol[shiftp->shifts[i]];
if (ISVAR (symbol))
break;
SETBIT (shiftset, symbol);
}
}
mask = 1;
fp1 = LA + m * tokensetsize;
fp2 = shiftset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
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 (m), j))
{ {
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[rlhs[rule]]); tags[rule_table[LAruleno[j]].lhs]);
}
else else
defaulted = 1; defaulted = 1;
@@ -695,37 +524,25 @@ 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[rlhs[rule]]); 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[rlhs[rule]]); 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++;
} }
} }
if (default_LA >= 0) if (default_LA >= 0)
fprintf (out, _(" $default\treduce using rule %d (%s)\n"), fprintf (out, _(" $default\treduce using rule %d (%s)\n"),
default_rule, tags[rlhs[default_rule]]); default_rule, tags[rule_table[default_rule].lhs]);
} }
} }
+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_ */
+23 -32
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.
@@ -19,50 +19,44 @@
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 "types.h" #include "types.h"
#include "reader.h"
#include "gram.h" #include "gram.h"
#include "derives.h" #include "derives.h"
short **derives; short **derives = NULL;
#if DEBUG
static void static void
print_derives (void) print_derives (void)
{ {
int i; int i;
short *sp;
fputs ("\n\n\n", stdout); fputs ("DERIVES\n", stderr);
printf (_("DERIVES"));
fputs ("\n\n", stdout);
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf (_("%s derives"), tags[i]); short *sp;
fprintf (stderr, "\t%s derives\n", tags[i]);
for (sp = derives[i]; *sp > 0; sp++) for (sp = derives[i]; *sp > 0; sp++)
{ {
printf (" %d", *sp); short *rhsp;
fprintf (stderr, "\t\t%d:", *sp);
for (rhsp = ritem + rule_table[*sp].rhs; *rhsp > 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]);
fprintf (stderr, " (rule %d)\n", -*rhsp);
} }
putchar ('\n');
} }
putchar ('\n'); fputs ("\n\n", stderr);
} }
#endif
void 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;
@@ -73,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 = rlhs[i]; {
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);
@@ -99,9 +91,8 @@ set_derives (void)
*q++ = -1; *q++ = -1;
} }
#if DEBUG if (trace_flag)
print_derives (); print_derives ();
#endif
XFREE (dset + ntokens); XFREE (dset + ntokens);
XFREE (delts); XFREE (delts);
+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));
+3 -2
View File
@@ -23,6 +23,7 @@
#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"
FILE *finput = NULL; FILE *finput = NULL;
@@ -211,9 +212,9 @@ skeleton_find (const char *envvar, const char *skeleton_name)
if (!res) if (!res)
{ {
/* Skeleton file name without path */ /* Skeleton file name without path */
const char *skel_name = strrchr(skeleton_name, '/'); const char *skel_name = strrchr (skeleton_name, '/');
if (!skel_name) if (!skel_name)
skel_name = strrchr(skeleton_name, '\\'); skel_name = strrchr (skeleton_name, '\\');
if (!skel_name) if (!skel_name)
skel_name = skeleton_name; skel_name = skeleton_name;
else else
+2 -2
View File
@@ -32,9 +32,9 @@ int no_lines_flag = 0;
int no_parser_flag = 0; int no_parser_flag = 0;
int token_table_flag = 0; int token_table_flag = 0;
int verbose_flag = 0; int verbose_flag = 0;
int statistics_flag = 0;
int yacc_flag = 0; /* for -y */ int yacc_flag = 0; /* for -y */
int graph_flag = 0; int graph_flag = 0;
int trace_flag = 0;
const char *skeleton = NULL; const char *skeleton = NULL;
@@ -68,7 +68,7 @@ static struct option longopts[] =
{"graph", optional_argument, 0, 'g'}, {"graph", optional_argument, 0, 'g'},
/* Hidden. */ /* Hidden. */
{"statistics", no_argument, &statistics_flag, 1}, {"trace", no_argument, &trace_flag, 1},
{0, 0, 0, 0} {0, 0, 0, 0}
}; };
+1 -1
View File
@@ -31,11 +31,11 @@ extern int defines_flag; /* for -d */
extern int locations_flag; extern int locations_flag;
extern int no_lines_flag; /* for -l */ extern int no_lines_flag; /* for -l */
extern int no_parser_flag; /* for -n */ extern int no_parser_flag; /* for -n */
extern int statistics_flag;
extern int token_table_flag; /* for -k */ extern int token_table_flag; /* for -k */
extern int verbose_flag; /* for -v */ extern int verbose_flag; /* for -v */
extern int graph_flag; /* for -g */ extern int graph_flag; /* for -g */
extern int yacc_flag; /* for -y */ extern int yacc_flag; /* for -y */
extern int trace_flag;
void getargs PARAMS ((int argc, char *argv[])); void getargs PARAMS ((int argc, char *argv[]));
+59 -22
View File
@@ -1,27 +1,27 @@
/* Allocate input grammar variables for bison, /* Allocate input grammar variables for bison,
Copyright 1984, 1986, 1989 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"
void dummy PARAMS((void)); #include "reader.h"
/* comments for these variables are in gram.h */ /* comments for these variables are in gram.h */
@@ -32,15 +32,13 @@ int ntokens;
int nvars; int nvars;
short *ritem = NULL; short *ritem = NULL;
short *rlhs = NULL; rule_t *rule_table = NULL;
short *rrhs = NULL;
short *rprec = NULL; short *rprec = NULL;
short *rprecsym = NULL; short *rprecsym = NULL;
short *sprec = NULL; 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;
} }
+48 -19
View File
@@ -1,5 +1,5 @@
/* Data definitions for internal representation of bison's input, /* Data definitions for internal representation of bison's input,
Copyright 1984, 1986, 1989, 1992 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 1992, 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.
@@ -38,21 +38,38 @@
The rules receive rule numbers 1 to nrules in the order they are The rules receive rule numbers 1 to nrules in the order they are
written. Actions and guards are accessed via the rule number. written. Actions and guards are accessed via the rule number.
The rules themselves are described by three arrays: rrhs, rlhs and The rules themselves are described by several arrays: amongst which
ritem. rlhs[R] is the symbol number of the left hand side of rule RITEM, and RULE_TABLE.
R. The right hand side is stored as symbol numbers in a portion of
ritem. rrhs[R] contains the index in ritem of the beginning of the RULE_TABLE is an array of struct rule_s, which members are:
RULE_TABLE[R].lhs -- the symbol number of the left hand side of
rule R. If -1, the rule has been thrown out by reduce.c and should
be ignored.
RULE_TABLE[R].rhs -- the index in RITEM of the beginning of the
portion for rule R. portion for rule R.
If rlhs[R] is -1, the rule has been thrown out by reduce.c and RULE_TABLE[R].prec -- the precedence level of R.
should be ignored.
RULE_TABLE[R].precsym -- the symbol-number of the symbol in %prec
for R (if any).
RULE_TABLE[R].assoc -- the associativity of R.
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
RITEM.
The length of the portion is one greater than the number of symbols The length of the portion is one greater than the number of symbols
in the rule's right hand side. The last element in the portion in the rule's right hand side. The last element in the portion
contains minus R, which identifies it as the end of a portion and contains minus R, which identifies it as the end of a portion and
says which rule it is for. says which rule it is for.
The portions of ritem come in order of increasing rule number and The portions of RITEM come in order of increasing rule number and
are followed by an element which is zero to mark the end. nitems are followed by an element which is zero to mark the end. nitems
is the total length of ritem, not counting the final zero. Each is the total length of ritem, not counting the final zero. Each
element of ritem is called an "item" and its index in ritem is an element of ritem is called an "item" and its index in ritem is an
@@ -61,10 +78,7 @@
Item numbers are used in the finite state machine to represent Item numbers are used in the finite state machine to represent
places that parsing can get to. places that parsing can get to.
Precedence levels are recorded in the vectors sprec and rprec. SPREC records the precedence level of each symbol.
sprec records the precedence level of each symbol, rprec the
precedence level of each rule. rprecsym is the symbol-number of
the symbol in %prec for this rule (if any).
Precedence levels are assigned in increasing order starting with 1 Precedence levels are assigned in increasing order starting with 1
so that numerically higher precedence values mean tighter binding so that numerically higher precedence values mean tighter binding
@@ -84,18 +98,12 @@ extern int ntokens;
extern int nvars; extern int nvars;
extern short *ritem; extern short *ritem;
extern short *rlhs;
extern short *rrhs;
extern short *rprec;
extern short *rprecsym;
extern short *sprec; extern short *sprec;
extern short *rassoc;
extern short *sassoc; extern short *sassoc;
extern short *rline; /* Source line number of each rule */
extern int start_symbol; extern int start_symbol;
/* associativity values in elements of rassoc, sassoc. */ /* associativity values in elements of rassoc, sassoc. */
typedef enum typedef enum
{ {
@@ -105,6 +113,19 @@ typedef enum
} associativity; } associativity;
typedef struct rule_s
{
short lhs;
short rhs;
short prec;
short precsym;
short assoc;
short line;
bool useful;
} rule_t;
extern struct rule_s *rule_table;
/* token translation table: indexed by a token number as returned by /* token translation table: indexed by a token number as returned by
the user's yylex routine, it yields the internal token number used the user's yylex routine, it yields the internal token number used
by the parser and throughout bison. */ by the parser and throughout bison. */
@@ -126,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_ */
+260 -364
View File
@@ -1,5 +1,5 @@
/* Compute look-ahead criteria for bison, /* Compute look-ahead criteria for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 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.
@@ -31,88 +31,80 @@
#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:
there is a state_TABLE in LR0.c, but it is different and static.
*/
state_t *state_table = NULL;
int tokensetsize; int tokensetsize;
short *lookaheads;
short *LAruleno; short *LAruleno;
unsigned *LA; unsigned *LA;
short *accessing_symbol;
char *consistent; static int ngotos;
core **state_table;
shifts **shift_table;
reductions **reduction_table;
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
comment is hardly needed. <grin>. */
static unsigned *F = NULL;
#define F(Rule) (F + (Rule) * tokensetsize)
static int infinity;
static int maxrhs;
static int ngotos;
static unsigned *F;
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 * tokensetsize; if (R[i])
fp3 = base + tokensetsize; 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 * tokensetsize;
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 * tokensetsize; F (i)[k] = F (j)[k];
}
while (fp1 < fp3)
*fp2++ = *fp1++;
}
}
} }
@@ -132,87 +124,85 @@ digraph (short **relation)
INDEX[i] = 0; INDEX[i] = 0;
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ if (INDEX[i] == 0 && R[i])
if (INDEX[i] == 0 && R[i]) traverse (i);
traverse (i);
}
XFREE (INDEX); XFREE (INDEX);
XFREE (VERTICES); XFREE (VERTICES);
} }
/*--------------------.
| Build STATE_TABLE. |
`--------------------*/
static void static void
set_state_table (void) set_state_table (void)
{ {
core *sp; /* NSTATES + 1 because lookahead for the pseudo state number NSTATES
might be used (see conflicts.c). It is too opaque for me to
provide a probably less hacky implementation. --akim */
state_table = XCALLOC (state_t, nstates + 1);
state_table = XCALLOC (core *, nstates); {
core *sp;
for (sp = first_state; sp; sp = sp->next)
{
state_table[sp->number].state = sp;
state_table[sp->number].accessing_symbol = sp->accessing_symbol;
}
}
for (sp = first_state; sp; sp = sp->next) {
state_table[sp->number] = sp; shifts *sp;
} for (sp = first_shift; sp; sp = sp->next)
state_table[sp->number].shifts = sp;
}
{
reductions *rp;
for (rp = first_reduction; rp; rp = rp->next)
state_table[rp->number].reductions = rp;
}
static void /* Pessimization, but simplification of the code: make sense all the
set_accessing_symbol (void) states have a shifts, even if reduced to 0 shifts. */
{ {
core *sp; int i;
for (i = 0; i < nstates; i++)
if (!state_table[i].shifts)
state_table[i].shifts = shifts_new (0);
}
accessing_symbol = XCALLOC (short, nstates); /* Initializing the lookaheads members. Please note that it must be
performed after having set some of the other members which are
used below. Change with extreme caution. */
{
int i;
int count = 0;
for (i = 0; i < nstates; i++)
{
int k;
reductions *rp = state_table[i].reductions;
shifts *sp = state_table[i].shifts;
for (sp = first_state; sp; sp = sp->next) state_table[i].lookaheads = count;
accessing_symbol[sp->number] = sp->accessing_symbol;
}
if (rp
&& (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
count += rp->nreds;
else
state_table[i].consistent = 1;
static void for (k = 0; k < sp->nshifts; k++)
set_shift_table (void) if (SHIFT_IS_ERROR (sp, k))
{ {
shifts *sp; state_table[i].consistent = 0;
break;
shift_table = XCALLOC (shifts *, nstates); }
}
for (sp = first_shift; sp; sp = sp->next) state_table[nstates].lookaheads = count;
shift_table[sp->number] = sp; }
}
static void
set_reduction_table (void)
{
reductions *rp;
reduction_table = XCALLOC (reductions *, nstates);
for (rp = first_reduction; rp; rp = rp->next)
reduction_table[rp->number] = rp;
}
static void
set_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;
}
}
maxrhs = max;
} }
@@ -221,65 +211,23 @@ initialize_LA (void)
{ {
int i; int i;
int j; int j;
int count;
reductions *rp;
shifts *sp;
short *np; short *np;
reductions *rp;
consistent = XCALLOC (char, nstates); size_t nLA = state_table[nstates].lookaheads;
lookaheads = XCALLOC (short, nstates + 1); if (!nLA)
nLA = 1;
count = 0; LA = XCALLOC (unsigned, nLA * tokensetsize);
for (i = 0; i < nstates; i++) LAruleno = XCALLOC (short, nLA);
{ lookback = XCALLOC (shorts *, nLA);
int k;
lookaheads[i] = count;
rp = reduction_table[i];
sp = shift_table[i];
if (rp && (rp->nreds > 1
|| (sp && !ISVAR (accessing_symbol[sp->shifts[0]]))))
count += rp->nreds;
else
consistent[i] = 1;
if (sp)
for (k = 0; k < sp->nshifts; k++)
{
if (accessing_symbol[sp->shifts[k]] == error_token_number)
{
consistent[i] = 0;
break;
}
}
}
lookaheads[nstates] = count;
if (count == 0)
{
LA = XCALLOC (unsigned, 1 * tokensetsize);
LAruleno = XCALLOC (short, 1);
lookback = XCALLOC (shorts *, 1);
}
else
{
LA = XCALLOC (unsigned, count * tokensetsize);
LAruleno = XCALLOC (short, count);
lookback = XCALLOC (shorts *, count);
}
np = LAruleno; np = LAruleno;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ if (!state_table[i].consistent)
if (!consistent[i]) if ((rp = state_table[i].reductions))
{ for (j = 0; j < rp->nreds; j++)
if ((rp = reduction_table[i])) *np++ = rp->rules[j];
for (j = 0; j < rp->nreds; j++)
*np++ = rp->rules[j];
}
}
} }
@@ -299,21 +247,16 @@ set_goto_map (void)
ngotos = 0; ngotos = 0;
for (sp = first_shift; sp; sp = sp->next) for (sp = first_shift; sp; sp = sp->next)
{ for (i = sp->nshifts - 1; i >= 0 && SHIFT_IS_GOTO (sp, i); --i)
for (i = sp->nshifts - 1; i >= 0; i--) {
{ symbol = state_table[sp->shifts[i]].accessing_symbol;
symbol = accessing_symbol[sp->shifts[i]];
if (ISTOKEN (symbol)) if (ngotos == MAXSHORT)
break; fatal (_("too many gotos (max %d)"), MAXSHORT);
if (ngotos == MAXSHORT) ngotos++;
fatal (_("too many gotos (max %d)"), MAXSHORT); goto_map[symbol]++;
}
ngotos++;
goto_map[symbol]++;
}
}
k = 0; k = 0;
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
@@ -334,13 +277,10 @@ 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--) for (i = sp->nshifts - 1; i >= 0 && SHIFT_IS_GOTO (sp, i); --i)
{ {
state2 = sp->shifts[i]; state2 = sp->shifts[i];
symbol = accessing_symbol[state2]; symbol = state_table[state2].accessing_symbol;
if (ISTOKEN (symbol))
break;
k = temp_map[symbol]++; k = temp_map[symbol]++;
from_state[k] = state1; from_state[k] = state1;
@@ -389,73 +329,46 @@ 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 = shift_table[stateno]; 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 = accessing_symbol[sp->shifts[j]];
if (ISVAR (symbol))
break;
SETBIT (rowp, symbol);
}
for (; j < k; j++)
{
symbol = accessing_symbol[sp->shifts[j]];
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);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ XFREE (reads[i]);
if (reads[i])
XFREE (reads[i]);
}
XFREE (reads); XFREE (reads);
XFREE (edge); XFREE (edge);
@@ -470,8 +383,8 @@ add_lookback_edge (int stateno, int ruleno, int gotono)
int found; int found;
shorts *sp; shorts *sp;
i = lookaheads[stateno]; i = state_table[stateno].lookaheads;
k = lookaheads[stateno + 1]; k = state_table[stateno + 1].lookaheads;
found = 0; found = 0;
while (!found && i < k) while (!found && i < k)
{ {
@@ -490,56 +403,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;
} }
@@ -548,57 +492,42 @@ 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 = accessing_symbol[to_state[i]]; 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 + rrhs[*rulep]; *rp > 0; rp++) for (rp = ritem + rule_table[*rulep].rhs; *rp > 0; rp++)
{ {
symbol2 = *rp; shifts *sp = state_table[stateno].shifts;
sp = shift_table[stateno]; 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 (accessing_symbol[stateno] == symbol2) if (state_table[stateno].accessing_symbol == *rp)
break; break;
} }
states[length++] = stateno; states[length++] = stateno;
} }
if (!consistent[stateno]) if (!state_table[stateno].consistent)
add_lookback_edge (stateno, *rulep, i); add_lookback_edge (stateno, *rulep, i);
length--; length--;
@@ -620,25 +549,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);
} }
@@ -651,10 +573,7 @@ compute_FOLLOWS (void)
digraph (includes); digraph (includes);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ XFREE (includes[i]);
if (includes[i])
XFREE (includes[i]);
}
XFREE (includes); XFREE (includes);
} }
@@ -664,39 +583,20 @@ static void
compute_lookaheads (void) compute_lookaheads (void)
{ {
int i; int i;
int n;
unsigned *fp1;
unsigned *fp2;
unsigned *fp3;
shorts *sp; shorts *sp;
unsigned *rowp;
shorts *sptmp; /* JF */
rowp = LA; for (i = 0; i < state_table[nstates].lookaheads; i++)
n = lookaheads[nstates]; for (sp = lookback[i]; sp; sp = sp->next)
for (i = 0; i < n; i++) {
{ int size = LA (i + 1) - LA (i);
fp3 = rowp + tokensetsize; int j;
for (sp = lookback[i]; sp; sp = sp->next) for (j = 0; j < size; ++j)
{ LA (i)[j] |= F (sp->value)[j];
fp1 = rowp; }
fp2 = F + tokensetsize * sp->value;
while (fp1 < fp3)
*fp1++ |= *fp2++;
}
rowp = fp3; /* Free LOOKBACK. */
} for (i = 0; i < state_table[nstates].lookaheads; i++)
LIST_FREE (shorts, lookback[i]);
for (i = 0; i < n; i++)
{
/* JF removed ref to freed storage */
for (sp = lookback[i]; sp; sp = sptmp)
{
sptmp = sp->next;
XFREE (sp);
}
}
XFREE (lookback); XFREE (lookback);
XFREE (F); XFREE (F);
@@ -709,10 +609,6 @@ lalr (void)
tokensetsize = WORDSIZE (ntokens); tokensetsize = WORDSIZE (ntokens);
set_state_table (); set_state_table ();
set_accessing_symbol ();
set_shift_table ();
set_reduction_table ();
set_maxrhs ();
initialize_LA (); initialize_LA ();
set_goto_map (); set_goto_map ();
initialize_F (); initialize_F ();
+28 -13
View File
@@ -49,12 +49,6 @@ extern short *goto_map;
extern short *from_state; extern short *from_state;
extern short *to_state; extern short *to_state;
/* CONSISTENT[S] is nonzero if no lookahead is needed to decide what
to do in state S. */
extern char *consistent;
/* LARULENO is a vector which records the rules that need lookahead in /* LARULENO is a vector which records the rules that need lookahead in
various states. The elements of LARULENO that apply to state S are various states. The elements of LARULENO that apply to state S are
those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1. Each element those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1. Each element
@@ -72,15 +66,36 @@ extern short *LAruleno;
it is a conflict. */ it is a conflict. */
extern unsigned *LA; extern unsigned *LA;
#define LA(Rule) (LA + (Rule) * tokensetsize)
/* A structure decorating a state, with additional information. */
typedef struct state_s
{
/* A state. */
core *state;
/* Its accessing symbol. */
short accessing_symbol;
shifts *shifts;
reductions *reductions;
errs *errs;
/* Nonzero if no lookahead is needed to decide what to do in state
S. */
char consistent;
short lookaheads;
} state_t;
/* All the decorated states, indexed by the state number. Warning:
there is a state_TABLE in LR0.c, but it is different and static.
*/
extern state_t *state_table;
extern int tokensetsize; extern int tokensetsize;
extern short *lookaheads;
extern short *accessing_symbol;
extern core **state_table;
extern shifts **shift_table;
extern reductions **reduction_table;
/* The number of lookaheads. */
extern size_t nlookaheads;
#endif /* !LALR_H_ */ #endif /* !LALR_H_ */
+24 -23
View File
@@ -29,15 +29,15 @@
/* Buffer for storing the current token. */ /* Buffer for storing the current token. */
struct obstack token_obstack; struct obstack token_obstack;
char *token_buffer = NULL; const char *token_buffer = NULL;
bucket *symval; bucket *symval = NULL;
int numval; int numval;
/* A token to be reread, see unlex and lex. */ /* A token to be reread, see unlex and lex. */
static token_t unlexed = tok_undef; static token_t unlexed = tok_undef;
static bucket *unlexed_symval = NULL; static bucket *unlexed_symval = NULL;
static char *unlexed_token_buffer = NULL; static const char *unlexed_token_buffer = NULL;
void void
lex_init (void) lex_init (void)
@@ -585,9 +585,9 @@ token_t
parse_percent_token (void) parse_percent_token (void)
{ {
struct percent_table_struct *tx = NULL; struct percent_table_struct *tx = NULL;
/* Where `=' was found in token_buffer. */ const char *arg = NULL;
size_t equal_offset = 0; /* Where the ARG was found in token_buffer. */
char *arg = NULL; size_t arg_offset = 0;
int c = getc (finput); int c = getc (finput);
@@ -629,33 +629,34 @@ parse_percent_token (void)
c = getc (finput); c = getc (finput);
} }
/* %DIRECTIVE="ARG". Separate into
TOKEN_BUFFER = `%DIRECTIVE\0ARG\0'.
This is a bit hackish, but once we move to a Bison parser,
things will be cleaned up. */
if (c == '=') if (c == '=')
{ {
equal_offset = obstack_object_size (&token_obstack); /* End of the directive. We skip the `='. */
obstack_1grow (&token_obstack, c); obstack_1grow (&token_obstack, '\0');
/* Fetch the ARG if present. */
c = getc (finput); c = getc (finput);
if (c = '"') if (c == '"')
{ {
int code; /* ignored here */ int code;
arg_offset = obstack_object_size (&token_obstack);
obstack_1grow (&token_obstack, '"'); /* Read up to and including `"'. Do not append the closing
/* Read up to and including ". */ `"' in the output: it's not part of the ARG. */
while (literalchar (&token_obstack, &code, '"')) while (literalchar (NULL, &code, '"'))
/* nothing */; obstack_1grow (&token_obstack, code);
} }
/* else: should be an error. */
} }
else else
ungetc (c, finput); ungetc (c, finput);
obstack_1grow (&token_obstack, '\0'); obstack_1grow (&token_obstack, '\0');
token_buffer = obstack_finish (&token_obstack); token_buffer = obstack_finish (&token_obstack);
if (equal_offset) if (arg_offset)
{ arg = token_buffer + arg_offset;
/* %token_buffer="arg" */
arg = token_buffer + equal_offset + 2;
arg[strlen (arg) - 1] = '\0';
token_buffer[equal_offset] = '\0';
}
/* table lookup % directive */ /* table lookup % directive */
for (tx = percent_table; tx->name; tx++) for (tx = percent_table; tx->name; tx++)
@@ -676,7 +677,7 @@ parse_percent_token (void)
precedence. Side effect: if this %-option is used precedence. Side effect: if this %-option is used
several times, only the first is honored. Bah. */ several times, only the first is honored. Bah. */
if (!*((char **) (tx->set_flag))) if (!*((char **) (tx->set_flag)))
*((char **) (tx->set_flag)) = arg; *((char **) (tx->set_flag)) = xstrdup (arg);
} }
else else
fatal (_("`%s' requires an argument"), token_buffer); fatal (_("`%s' requires an argument"), token_buffer);
+1 -1
View File
@@ -55,7 +55,7 @@ typedef enum token_e
tok_obsolete tok_obsolete
} token_t; } token_t;
extern char *token_buffer; extern const char *token_buffer;
extern bucket *symval; extern bucket *symval;
extern int numval; extern int numval;
+8 -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
@@ -117,14 +115,11 @@ main (int argc, char *argv[])
output_files (); output_files ();
exit (complain_message_count ? 1 : 0); /* If using alloca.c, flush the alloca'ed memory for the benefit of
} people running Bison as a library in IDEs. */
#if C_ALLOCA
/* Abort for an internal error denoted by string S. */ alloca (0);
#endif
void return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS;
berror (const char *s)
{
fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
abort ();
} }
+59 -59
View File
@@ -1,5 +1,5 @@
/* Part of the bison parser generator, /* Part of the bison parser generator,
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.
@@ -24,32 +24,40 @@
do so. */ do so. */
#include "system.h" #include "system.h"
#include "getargs.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;
static void
nullable_print (FILE *out)
{
int i;
fputs ("NULLABLE\n", out);
for (i = ntokens; i < nsyms; i++)
fprintf (out, "\t%s: %s\n", tags[i], nullable[i] ? "yes" : "no");
fputs ("\n\n", out);
}
void void
set_nullable (void) set_nullable (void)
{ {
short *r; short *r;
short *s1; short *s1;
short *s2; short *s2;
int ruleno;
int symbol;
shorts *p; shorts *p;
short *squeue; short *squeue;
short *rcount; short *rcount;
shorts **rsets; shorts **rsets;
shorts *relts; shorts *relts;
char any_tokens;
short *r1;
#ifdef TRACE if (trace_flag)
fprintf (stderr, _("Entering set_nullable")); fprintf (stderr, "Entering set_nullable\n");
#endif
nullable = XCALLOC (char, nvars) - ntokens; nullable = XCALLOC (char, nvars) - ntokens;
@@ -57,74 +65,66 @@ set_nullable (void)
s1 = s2 = squeue; s1 = s2 = squeue;
rcount = XCALLOC (short, nrules + 1); rcount = XCALLOC (short, nrules + 1);
rsets = XCALLOC (shorts *, nvars) - ntokens;
/* RITEM contains all the rules, including useless productions.
Hence we must allocate room for useless nonterminals too. */
rsets = XCALLOC (shorts *, nvars + nuseless_nonterminals) - ntokens;
/* This is said to be more elements than we actually use. /* This is said to be more elements than we actually use.
Supposedly nitems - nrules is enough. Supposedly nitems - nrules is enough.
But why take the risk? */ But why take the risk? */
relts = XCALLOC (shorts, nitems + nvars + 1); relts = XCALLOC (shorts, nitems + nvars + nuseless_nonterminals + 1);
p = relts; p = relts;
r = ritem; for (r = ritem; *r; ++r)
while (*r)
{ {
if (*r < 0) /* Walk RITEM to find (i), if there are any tokens in the
{ RHS, and (ii), to find RULENO. */
symbol = rlhs[-(*r++)]; int ruleno;
if (symbol >= 0 && !nullable[symbol]) int any_tokens = 0;
{ short *r1;
nullable[symbol] = 1; for (r1 = r; *r1 > 0; ++r1)
*s2++ = symbol; if (ISTOKEN (*r1))
} any_tokens = 1;
} ruleno = -*r1;
else
{
r1 = r;
any_tokens = 0;
for (symbol = *r++; symbol > 0; symbol = *r++)
{
if (ISTOKEN (symbol))
any_tokens = 1;
}
if (!any_tokens) /* Examine the RHS of the rule. */
{ if (!any_tokens)
ruleno = -symbol; for (/* Nothing. */; *r > 0; ++r)
r = r1; {
for (symbol = *r++; symbol > 0; symbol = *r++) rcount[ruleno]++;
{ p->next = rsets[*r];
rcount[ruleno]++; p->value = ruleno;
p->next = rsets[symbol]; rsets[*r] = p;
p->value = ruleno; p++;
rsets[symbol] = p; }
p++;
} /* Examine its LHS. */
} 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) int ruleno = p->value;
{ if (--rcount[ruleno] == 0)
ruleno = p->value; if (rule_table[ruleno].useful && !nullable[rule_table[ruleno].lhs])
p = p->next;
if (--rcount[ruleno] == 0)
{ {
symbol = rlhs[ruleno]; 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);
XFREE (rsets + ntokens); XFREE (rsets + ntokens);
XFREE (relts); XFREE (relts);
if (trace_flag)
nullable_print (stderr);
} }
+72 -124
View File
@@ -103,9 +103,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;
@@ -319,8 +316,15 @@ output_gram (void)
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 != 0\n");
output_short_table (&table_obstack, NULL, "yyprhs", rrhs, {
0, 1, nrules + 1); int i;
short *values = XCALLOC (short, nrules + 1);
for (i = 0; i < nrules + 1; ++i)
values[i] = rule_table[i].rhs;
output_short_table (&table_obstack, NULL, "yyprhs", values,
0, 1, nrules + 1);
XFREE (values);
}
{ {
size_t yyrhs_size = 1; size_t yyrhs_size = 1;
@@ -347,7 +351,13 @@ output_gram (void)
static void static void
output_stos (void) output_stos (void)
{ {
output_short_table (&table_obstack, NULL, "yystos", accessing_symbol, int i;
short *values = (short *) alloca (sizeof (short) * nstates);
for (i = 0; i < nstates; ++i)
values[i] = state_table[i].accessing_symbol;
output_short_table (&table_obstack,
"YYSTOS[STATE] -- Accessing symbol to the STATE",
"yystos", values,
0, 1, nstates); 0, 1, nstates);
} }
@@ -362,10 +372,16 @@ output_rule_data (void)
obstack_sgrow (&table_obstack, "\n\ obstack_sgrow (&table_obstack, "\n\
#if YYDEBUG != 0\n"); #if YYDEBUG != 0\n");
output_short_table (&table_obstack, {
"YYRLINE[YYN] -- source line where rule number YYN was defined", short *values = XCALLOC (short, nrules + 1);
"yyrline", rline, for (i = 0; i < nrules + 1; ++i)
0, 1, nrules + 1); values[i] = rule_table[i].line;
output_short_table (&table_obstack,
"YYRLINE[YYN] -- source line where rule number YYN was defined",
"yyrline", values,
0, 1, nrules + 1);
XFREE (values);
}
obstack_sgrow (&table_obstack, "#endif\n\n"); obstack_sgrow (&table_obstack, "#endif\n\n");
@@ -449,19 +465,24 @@ output_rule_data (void)
} }
/* Output YYR1. */ /* Output YYR1. */
output_short_table (&table_obstack, {
short *values = XCALLOC (short, nrules + 1);
for (i = 0; i < nrules + 1; ++i)
values[i] = rule_table[i].lhs;
output_short_table (&table_obstack,
"YYR1[YYN] -- Symbol number of symbol that rule YYN derives", "YYR1[YYN] -- Symbol number of symbol that rule YYN derives",
"yyr1", rlhs, "yyr1", values,
0, 1, nrules + 1); 0, 1, nrules + 1);
XFREE (rlhs + 1); XFREE (values);
}
obstack_1grow (&table_obstack, '\n'); obstack_1grow (&table_obstack, '\n');
/* Output YYR2. */ /* Output YYR2. */
short_tab = XMALLOC (short, nrules + 1); short_tab = XMALLOC (short, nrules + 1);
for (i = 1; i < nrules; i++) for (i = 1; i < nrules; i++)
short_tab[i] = rrhs[i + 1] - rrhs[i] - 1; short_tab[i] = rule_table[i + 1].rhs - rule_table[i].rhs - 1;
short_tab[nrules] = nitems - rrhs[nrules] - 1; short_tab[nrules] = nitems - rule_table[nrules].rhs - 1;
output_short_table (&table_obstack, output_short_table (&table_obstack,
"YYR2[YYN] -- Number of symbols composing right hand side of rule YYN", "YYR2[YYN] -- Number of symbols composing right hand side of rule YYN",
"yyr2", short_tab, "yyr2", short_tab,
@@ -470,7 +491,7 @@ output_rule_data (void)
XFREE (short_tab); XFREE (short_tab);
XFREE (rrhs + 1); XFREE (rule_table + 1);
} }
@@ -505,15 +526,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;
@@ -524,7 +541,7 @@ action_row (int state)
default_rule = 0; default_rule = 0;
nreds = 0; nreds = 0;
redp = reduction_table[state]; redp = state_table[state].reductions;
if (redp) if (redp)
{ {
@@ -534,69 +551,46 @@ action_row (int state)
{ {
/* loop over all the rules available here which require /* loop over all the rules available here which require
lookahead */ lookahead */
m = lookaheads[state]; m = state_table[state].lookaheads;
n = lookaheads[state + 1]; 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 * tokensetsize; 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 = shift_table[state];
/* 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 = accessing_symbol[shift_state]; 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)
{ {
@@ -614,14 +608,14 @@ action_row (int state)
if (nreds >= 1 && !nodefault) if (nreds >= 1 && !nodefault)
{ {
if (consistent[state]) if (state_table[state].consistent)
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++)
@@ -736,37 +730,6 @@ token_actions (void)
} }
static void
free_shifts (void)
{
shifts *sp, *sptmp; /* JF derefrenced freed ptr */
XFREE (shift_table);
for (sp = first_shift; sp; sp = sptmp)
{
sptmp = sp->next;
XFREE (sp);
}
}
static void
free_reductions (void)
{
reductions *rp, *rptmp; /* JF fixed freed ptr */
XFREE (reduction_table);
for (rp = first_reduction; rp; rp = rptmp)
{
rptmp = rp->next;
XFREE (rp);
}
}
static void static void
save_column (int symbol, int default_state) save_column (int symbol, int default_state)
{ {
@@ -1014,8 +977,8 @@ pack_vector (int vector)
} }
} }
berror ("pack_vector"); assert (!"pack_vector");
return 0; /* JF keep lint happy */ return 0;
} }
@@ -1116,12 +1079,10 @@ output_actions (void)
width = XCALLOC (short, nvectors); width = XCALLOC (short, nvectors);
token_actions (); token_actions ();
free_shifts (); LIST_FREE (shifts, first_shift);
free_reductions (); LIST_FREE (reductions, first_reduction);
XFREE (lookaheads);
XFREE (LA); XFREE (LA);
XFREE (LAruleno); XFREE (LAruleno);
XFREE (accessing_symbol);
goto_actions (); goto_actions ();
XFREE (goto_map + ntokens); XFREE (goto_map + ntokens);
@@ -1288,21 +1249,6 @@ output_program (void)
} }
static void
free_itemsets (void)
{
core *cp, *cptmp;
XFREE (state_table);
for (cp = first_state; cp; cp = cptmp)
{
cptmp = cp->next;
XFREE (cp);
}
}
/*----------------------------------------------------------. /*----------------------------------------------------------.
| Output the parsing tables and the parser code to ftable. | | Output the parsing tables and the parser code to ftable. |
`----------------------------------------------------------*/ `----------------------------------------------------------*/
@@ -1334,7 +1280,7 @@ output (void)
if (!no_parser_flag) if (!no_parser_flag)
obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n"); obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n");
free_itemsets (); LIST_FREE (core, first_state);
output_defines (); output_defines ();
output_token_translations (); output_token_translations ();
/* if (semantic_parser) */ /* if (semantic_parser) */
@@ -1345,6 +1291,8 @@ output (void)
output_stos (); output_stos ();
output_rule_data (); output_rule_data ();
output_actions (); output_actions ();
XFREE (state_table);
if (!no_parser_flag) if (!no_parser_flag)
output_parser (); output_parser ();
output_program (); output_program ();
+108 -111
View File
@@ -1,5 +1,5 @@
/* Print information on generated parser, for bison, /* Print information on generated parser, for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 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.
@@ -29,6 +29,8 @@
#include "state.h" #include "state.h"
#include "reader.h" #include "reader.h"
#include "print.h" #include "print.h"
#include "reduce.h"
#include "closure.h"
#if 0 #if 0
static void static void
@@ -47,65 +49,60 @@ static void
print_core (FILE *out, int state) print_core (FILE *out, int state)
{ {
int i; int i;
int k; short *sitems = state_table[state].state->items;
int rule; int snitems = state_table[state].state->nitems;
core *statep;
short *sp;
short *sp1;
statep = state_table[state]; /* New experimental feature: if TRACE_FLAGS output all the items of
k = statep->nitems; a state, not only its kernel. */
if (trace_flag)
if (k == 0)
return;
for (i = 0; i < k; i++)
{ {
sp1 = sp = ritem + statep->items[i]; closure (sitems, snitems);
sitems = itemset;
while (*sp > 0) snitems = nitemset;
sp++;
rule = -(*sp);
fprintf (out, " %s -> ", tags[rlhs[rule]]);
for (sp = ritem + rrhs[rule]; sp < sp1; sp++)
{
fprintf (out, "%s ", tags[*sp]);
}
fputc ('.', out);
while (*sp > 0)
{
fprintf (out, " %s", tags[*sp]);
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;
int state1;
int symbol;
shifts *shiftp;
errs *errp;
reductions *redp;
int rule;
shiftp = shift_table[state]; shifts *shiftp = state_table[state].shifts;
redp = reduction_table[state]; reductions *redp = state_table[state].reductions;
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"));
@@ -114,48 +111,34 @@ 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);
if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1];
/* 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)
{ {
int j, nerrs; int j;
for (j = 0; j < errp->nerrs; j++)
nerrs = errp->nerrs;
for (j = 0; j < nerrs; j++)
{ {
if (!errp->errs[j]) int symbol = errp->errs[j];
if (!symbol)
continue; continue;
symbol = errp->errs[j];
fprintf (out, _(" %-4s\terror (nonassociative)\n"), fprintf (out, _(" %-4s\terror (nonassociative)\n"),
tags[symbol]); tags[symbol]);
} }
@@ -164,10 +147,10 @@ print_actions (FILE *out, int state)
fputc ('\n', out); fputc ('\n', out);
} }
if (consistent[state] && redp) if (state_table[state].consistent && redp)
{ {
rule = redp->rules[0]; int rule = redp->rules[0];
symbol = rlhs[rule]; int symbol = rule_table[rule].lhs;
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"), fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
rule, tags[symbol]); rule, tags[symbol]);
} }
@@ -176,17 +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))
if (!shiftp->shifts[i]) {
continue; int state1 = shiftp->shifts[i];
state1 = shiftp->shifts[i]; int symbol = state_table[state1].accessing_symbol;
symbol = accessing_symbol[state1]; fprintf (out, _(" %-4s\tgo to state %d\n"),
fprintf (out, _(" %-4s\tgo to state %d\n"), tags[symbol], state1);
tags[symbol], state1); }
}
fputc ('\n', out); fputc ('\n', out);
} }
@@ -195,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);
} }
/*-----------------------------------------. /*-----------------------------------------.
@@ -226,23 +208,27 @@ 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"));
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 (rlhs[i] >= 0) if (rule_table[i].useful)
{ {
fprintf (out, _("rule %-4d %s ->"), i, tags[rlhs[i]]); fprintf (out, _(" %3d %3d %s ->"),
rule = &ritem[rrhs[i]]; i, rule_table[i].line, tags[rule_table[i].lhs]);
rule = &ritem[rule_table[i].rhs];
if (*rule > 0) if (*rule > 0)
while (*rule > 0) while (*rule > 0)
fprintf (out, " %s", tags[*rule++]); fprintf (out, " %s", tags[*rule++]);
else else
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++)
@@ -255,7 +241,7 @@ print_grammar (FILE *out)
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == token_translations[i]) if (*rule == token_translations[i])
{ {
END_TEST (65); END_TEST (65);
@@ -264,18 +250,19 @@ 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;
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
if (rlhs[j] == i) if (rule_table[j].lhs == i)
left_count++; left_count++;
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == i) if (*rule == i)
{ {
right_count++; right_count++;
@@ -297,7 +284,7 @@ print_grammar (FILE *out)
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
END_TEST (65); END_TEST (65);
if (rlhs[j] == i) if (rule_table[j].lhs == i)
sprintf (buffer + strlen (buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
} }
} }
@@ -310,7 +297,7 @@ print_grammar (FILE *out)
sprintf (buffer + strlen (buffer), _(" on right:")); sprintf (buffer + strlen (buffer), _(" on right:"));
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == i) if (*rule == i)
{ {
END_TEST (65); END_TEST (65);
@@ -321,6 +308,7 @@ print_grammar (FILE *out)
} }
fprintf (out, "%s\n", buffer); fprintf (out, "%s\n", buffer);
} }
fputs ("\n\n", out);
} }
void void
@@ -336,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);
} }
+84 -121
View File
@@ -31,42 +31,25 @@
#include "obstack.h" #include "obstack.h"
#include "print_graph.h" #include "print_graph.h"
#include "vcg.h" #include "vcg.h"
#include "quotearg.h"
static graph_t graph; static graph_t graph;
static FILE *fgraph = NULL; static FILE *fgraph = NULL;
static size_t node_output_size = 0;
/* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */
static char const *
quote (char const *name)
{
return quotearg_n_style (0, escape_quoting_style, name);
}
/* This part will construct the label of nodes. */ /* This part will construct the label of nodes. */
static void static void
print_core (int state, struct obstack *node_obstack) print_core (int state, struct obstack *node_obstack)
{ {
int i; int i;
int k; core *statep = state_table[state].state;
int rule;
core *statep;
short *sp;
short *sp1;
statep = state_table[state]; if (!statep->nitems)
k = statep->nitems;
if (k == 0)
return; return;
for (i = 0; i < k; i++) for (i = 0; i < statep->nitems; i++)
{ {
if (i) short *sp;
obstack_sgrow (node_obstack, "\\n"); short *sp1;
int rule;
sp1 = sp = ritem + statep->items[i]; sp1 = sp = ritem + statep->items[i];
@@ -75,87 +58,75 @@ print_core (int state, struct obstack *node_obstack)
rule = -(*sp); rule = -(*sp);
if (i)
obstack_1grow (node_obstack, '\n');
obstack_fgrow1 (node_obstack, "%d: ", rule); obstack_fgrow1 (node_obstack, "%d: ", rule);
obstack_fgrow1 (node_obstack, " %s -> ", quote (tags[rlhs[rule]])); obstack_fgrow1 (node_obstack, " %s -> ",
tags[rule_table[rule].lhs]);
for (sp = ritem + rrhs[rule]; sp < sp1; sp++) for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
obstack_fgrow1 (node_obstack, "%s ", quote (tags[*sp])); obstack_fgrow1 (node_obstack, "%s ", tags[*sp]);
obstack_1grow (node_obstack, '.'); obstack_1grow (node_obstack, '.');
while (*sp > 0) for (/* Nothing */; *sp > 0; ++sp)
obstack_fgrow1 (node_obstack, " %s", quote (tags[*sp++])); obstack_fgrow1 (node_obstack, " %s", tags[*sp]);
} }
} }
/* Output in graph_obstack edges specifications in incidence with current
node. */ /*---------------------------------------------------------------.
| Output in graph_obstack edges specifications in incidence with |
| current node. |
`---------------------------------------------------------------*/
static void static void
print_actions (int state, const char *node_name, struct obstack *node_obstack) 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
int rule;
static char buff[10]; static char buff[10];
edge_t edge; edge_t edge;
shiftp = shift_table[state]; if (!shiftp->nshifts && !redp)
redp = reduction_table[state];
errp = err_table[state];
if (!shiftp && !redp)
{ {
#if 0
if (final_state == state) if (final_state == state)
obstack_sgrow (node_obstack, "$default: accept"); obstack_sgrow (node_obstack, "$default: accept");
else else
obstack_sgrow (node_obstack, "NO ACTIONS"); obstack_sgrow (node_obstack, "NO ACTIONS");
#endif
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 = accessing_symbol[state1];
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;
/* FIXME: Be aware that quote uses static memory. The string
must be output immediately (which is the case here). */
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
output_edge (&edge, fgraph);
close_edge (fgraph);
}
}
}
else
{
i = 0;
k = 0;
}
#if 0
if (errp) if (errp)
{ {
int j, nerrs; int j, nerrs;
@@ -168,34 +139,36 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
continue; continue;
symbol = errp->errs[j]; symbol = errp->errs[j];
/* If something has been added in the NODE_OBSTACK after /* If something has been added in the NODE_OBSTACK after
the declaration of the label, then we need a `\n'. */ the declaration of the label, then we need a `\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");
*/
obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"), obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"),
tags[symbol]); tags[symbol]);
} }
if (j > 0) if (j > 0)
obstack_sgrow (node_obstack, "\\n"); obstack_1grow (node_obstack, '\n');
} }
if (consistent[state] && redp) if (state_table[state].consistent && redp)
{ {
rule = redp->rules[0]; rule = redp->rules[0];
symbol = rlhs[rule]; symbol = rule_table[rule].lhs;
/*
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");
*/
obstack_fgrow2 (node_obstack, _("$default\treduce using rule %d (%s)"), obstack_fgrow2 (node_obstack, _("$default\treduce using rule %d (%s)"),
rule, tags[symbol]); rule, tags[symbol]);
} }
#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 = accessing_symbol[state1];
new_edge (&edge); new_edge (&edge);
open_edge (&edge, fgraph); open_edge (&edge, fgraph);
@@ -203,15 +176,18 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
sprintf (buff, "%d", state1); sprintf (buff, "%d", state1);
edge.targetname = buff; edge.targetname = buff;
edge.color = red; edge.color = red;
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL; edge.label = tags[symbol];
output_edge (&edge, fgraph); output_edge (&edge, fgraph);
close_edge (fgraph); close_edge (fgraph);
} }
}
} }
/* Output in GRAPH_OBSTACK the current node specifications and edges
which go out from that node. */ /*-------------------------------------------------------------.
| Output in FGRAPH the current node specifications and exiting |
| edges. |
`-------------------------------------------------------------*/
static void static void
print_state (int state) print_state (int state)
{ {
@@ -219,35 +195,22 @@ print_state (int state)
struct obstack node_obstack; struct obstack node_obstack;
node_t node; node_t node;
/* The labels of the nodes are their the items. */
obstack_init (&node_obstack); obstack_init (&node_obstack);
new_node (&node); /* Set node attributs default value. */ new_node (&node);
sprintf (name, "%d", state); sprintf (name, "%d", state);
node.title = name; /* Give a name to the node. */ node.title = name;
print_core (state, &node_obstack);
{ obstack_1grow (&node_obstack, '\0');
/* Here we begin to compute the node label. */ node.label = obstack_finish (&node_obstack);
obstack_sgrow (&node_obstack, "\t\tlabel:\t\""); /* Open Label */
/* Keep the size of NODE_OBSTACK before computing the label. It is
useful to format the label. */
node_output_size = obstack_object_size (&node_obstack);
/* Compute the labels of nodes on the fly. */
print_core (state, &node_obstack);
/* Compute edges and additionnal parts of node label. */
print_actions (state, node.title, &node_obstack);
obstack_sgrow (&node_obstack, "\"\n"); /* Close Label. */
}
open_node (fgraph); open_node (fgraph);
/* Output a VCG formatted attributs list. */
output_node (&node, fgraph); output_node (&node, fgraph);
/* Save the node label. */
fwrite (obstack_base (&node_obstack),
obstack_object_size (&node_obstack), 1, fgraph);
close_node (fgraph); close_node (fgraph);
/* Output the edges. */
print_actions (state, name);
obstack_free (&node_obstack, 0); obstack_free (&node_obstack, 0);
} }
@@ -256,7 +219,7 @@ void
print_graph (void) print_graph (void)
{ {
int i; int i;
if (!graph_flag) if (!graph_flag)
return; return;
@@ -267,7 +230,7 @@ print_graph (void)
#if 0 #if 0
graph.smanhattan_edges = yes; graph.smanhattan_edges = yes;
graph.manhattan_edges = yes; graph.manhattan_edges = yes;
#endif #endif
graph.display_edge_labels = yes; graph.display_edge_labels = yes;
@@ -285,8 +248,8 @@ print_graph (void)
open_graph (fgraph); open_graph (fgraph);
output_graph (&graph, fgraph); output_graph (&graph, fgraph);
/* Output nodes and edges. */
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
/* Output nodes & edges. */
print_state (i); print_state (i);
/* Close graph. */ /* Close graph. */
+92 -91
View File
@@ -34,13 +34,11 @@
#include "reader.h" #include "reader.h"
#include "conflicts.h" #include "conflicts.h"
/* Number of slots allocated (but not necessarily used yet) in `rline' */
static int rline_allocated;
typedef struct symbol_list typedef struct symbol_list
{ {
struct symbol_list *next; struct symbol_list *next;
bucket *sym; bucket *sym;
int line;
bucket *ruleprec; bucket *ruleprec;
} }
symbol_list; symbol_list;
@@ -64,6 +62,19 @@ static int lastprec;
static bucket *errtoken; static bucket *errtoken;
static bucket *undeftoken; static bucket *undeftoken;
static symbol_list *
symbol_list_new (bucket *sym)
{
symbol_list *res = XMALLOC (symbol_list, 1);
res->next = NULL;
res->sym = sym;
res->line = lineno;
res->ruleprec = NULL;
return res;
}
/*===================\ /*===================\
@@ -121,7 +132,7 @@ read_signed_integer (FILE *stream)
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
static char * static char *
get_type_name (int n, symbol_list * rule) get_type_name (int n, symbol_list *rule)
{ {
int i; int i;
symbol_list *rp; symbol_list *rp;
@@ -539,7 +550,8 @@ parse_token_decl (symbol_class what_is, symbol_class what_is_not)
else else
{ {
complain (_("`%s' is invalid in %s"), complain (_("`%s' is invalid in %s"),
token_buffer, (what_is == token_sym) ? "%token" : "%nterm"); token_buffer,
(what_is == token_sym) ? "%token" : "%nterm");
skip_to_char ('%'); skip_to_char ('%');
} }
} }
@@ -1006,10 +1018,10 @@ read_declarations (void)
case tok_stropt: case tok_stropt:
case tok_intopt: case tok_intopt:
case tok_obsolete: case tok_obsolete:
case tok_illegal:
abort (); abort ();
break; break;
case tok_illegal:
default: default:
complain (_("unrecognized: %s"), token_buffer); complain (_("unrecognized: %s"), token_buffer);
skip_to_char ('%'); skip_to_char ('%');
@@ -1215,20 +1227,6 @@ copy_guard (symbol_list *rule, int stack_offset)
} }
static void
record_rule_line (void)
{
/* Record each rule's source line number in rline table. */
if (nrules >= rline_allocated)
{
rline_allocated = nrules * 2;
rline = XREALLOC (rline, short, rline_allocated);
}
rline[nrules] = lineno;
}
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
| Generate a dummy symbol, a nonterminal, whose name cannot conflict | | Generate a dummy symbol, a nonterminal, whose name cannot conflict |
| with the user's names. | | with the user's names. |
@@ -1371,10 +1369,7 @@ readgram (void)
nrules++; nrules++;
nitems++; nitems++;
record_rule_line (); p = symbol_list_new (lhs);
p = XCALLOC (symbol_list, 1);
p->sym = lhs;
crule1 = p1; crule1 = p1;
if (p1) if (p1)
@@ -1436,36 +1431,35 @@ readgram (void)
non-terminal. */ non-terminal. */
if (action_flag) if (action_flag)
{ {
bucket *sdummy;
/* Since the action was written out with this rule's /* Since the action was written out with this rule's
number, we must give the new rule this number by number, we must give the new rule this number by
inserting the new rule before it. */ inserting the new rule before it. */
/* Make a dummy nonterminal, a gensym. */ /* Make a dummy nonterminal, a gensym. */
sdummy = gensym (); bucket *sdummy = gensym ();
/* Make a new rule, whose body is empty, /* Make a new rule, whose body is empty, before the
before the current one, so that the action current one, so that the action just read can
just read can belong to it. */ belong to it. */
nrules++; nrules++;
nitems++; nitems++;
record_rule_line (); p = symbol_list_new (sdummy);
p = XCALLOC (symbol_list, 1); /* Attach its lineno to that of the host rule. */
p->line = crule->line;
if (crule1) if (crule1)
crule1->next = p; crule1->next = p;
else else
grammar = p; grammar = p;
p->sym = sdummy; /* End of the rule. */
crule1 = XCALLOC (symbol_list, 1); crule1 = symbol_list_new (NULL);
p->next = crule1;
crule1->next = crule; crule1->next = crule;
p->next = crule1;
/* Insert the dummy generated by that rule into this /* Insert the dummy generated by that rule into this
rule. */ rule. */
nitems++; nitems++;
p = XCALLOC (symbol_list, 1); p = symbol_list_new (sdummy);
p->sym = sdummy;
p1->next = p; p1->next = p;
p1 = p; p1 = p;
@@ -1475,8 +1469,7 @@ readgram (void)
if (t == tok_identifier) if (t == tok_identifier)
{ {
nitems++; nitems++;
p = XCALLOC (symbol_list, 1); p = symbol_list_new (symval);
p->sym = symval;
p1->next = p; p1->next = p;
p1 = p; p1 = p;
} }
@@ -1490,7 +1483,7 @@ readgram (void)
} /* end of read rhs of rule */ } /* end of read rhs of rule */
/* Put an empty link in the list to mark the end of this rule */ /* Put an empty link in the list to mark the end of this rule */
p = XCALLOC (symbol_list, 1); p = symbol_list_new (NULL);
p1->next = p; p1->next = p;
p1 = p; p1 = p;
@@ -1672,6 +1665,49 @@ output_token_defines (struct obstack *oout)
} }
/*--------------------.
| Output the header. |
`--------------------*/
static void
symbols_output (void)
{
if (defines_flag)
{
output_token_defines (&defines_obstack);
if (!pure_parser)
{
if (spec_name_prefix)
obstack_fgrow1 (&defines_obstack, "\nextern YYSTYPE %slval;\n",
spec_name_prefix);
else
obstack_sgrow (&defines_obstack,
"\nextern YYSTYPE yylval;\n");
}
if (semantic_parser)
{
int i;
for (i = ntokens; i < nsyms; i++)
{
/* don't make these for dummy nonterminals made by gensym. */
if (*tags[i] != '@')
obstack_fgrow2 (&defines_obstack,
"# define\tNT%s\t%d\n", tags[i], i);
}
#if 0
/* `fdefines' is now a temporary file, so we need to copy its
contents in `done', so we can't close it here. */
fclose (fdefines);
fdefines = NULL;
#endif
}
}
}
/*------------------------------------------------------------------. /*------------------------------------------------------------------.
| Set TOKEN_TRANSLATIONS. Check that no two symbols share the same | | Set TOKEN_TRANSLATIONS. Check that no two symbols share the same |
| number. | | number. |
@@ -1813,40 +1849,6 @@ packsymbols (void)
fatal (_("the start symbol %s is a token"), startval->tag); fatal (_("the start symbol %s is a token"), startval->tag);
start_symbol = startval->value; start_symbol = startval->value;
if (defines_flag)
{
output_token_defines (&defines_obstack);
if (!pure_parser)
{
if (spec_name_prefix)
obstack_fgrow1 (&defines_obstack, "\nextern YYSTYPE %slval;\n",
spec_name_prefix);
else
obstack_sgrow (&defines_obstack,
"\nextern YYSTYPE yylval;\n");
}
if (semantic_parser)
{
int i;
for (i = ntokens; i < nsyms; i++)
{
/* don't make these for dummy nonterminals made by gensym. */
if (*tags[i] != '@')
obstack_fgrow2 (&defines_obstack,
"# define\tNT%s\t%d\n", tags[i], i);
}
#if 0
/* `fdefines' is now a temporary file, so we need to copy its
contents in `done', so we can't close it here. */
fclose (fdefines);
fdefines = NULL;
#endif
}
}
} }
@@ -1862,14 +1864,8 @@ packgram (void)
int ruleno; int ruleno;
symbol_list *p; symbol_list *p;
bucket *ruleprec;
ritem = XCALLOC (short, nitems + 1); ritem = XCALLOC (short, nitems + 1);
rlhs = XCALLOC (short, nrules) - 1; rule_table = XCALLOC (rule_t, nrules) - 1;
rrhs = XCALLOC (short, nrules) - 1;
rprec = XCALLOC (short, nrules) - 1;
rprecsym = XCALLOC (short, nrules) - 1;
rassoc = XCALLOC (short, nrules) - 1;
itemno = 0; itemno = 0;
ruleno = 1; ruleno = 1;
@@ -1877,9 +1873,11 @@ packgram (void)
p = grammar; p = grammar;
while (p) while (p)
{ {
rlhs[ruleno] = p->sym->value; bucket *ruleprec = p->ruleprec;
rrhs[ruleno] = itemno; rule_table[ruleno].lhs = p->sym->value;
ruleprec = p->ruleprec; rule_table[ruleno].rhs = itemno;
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)
@@ -1889,8 +1887,8 @@ packgram (void)
of the last token in it. */ of the last token in it. */
if (p->sym->class == token_sym) if (p->sym->class == token_sym)
{ {
rprec[ruleno] = p->sym->prec; rule_table[ruleno].prec = p->sym->prec;
rassoc[ruleno] = p->sym->assoc; rule_table[ruleno].assoc = p->sym->assoc;
} }
if (p) if (p)
p = p->next; p = p->next;
@@ -1900,9 +1898,9 @@ packgram (void)
the specified symbol's precedence replaces the default. */ the specified symbol's precedence replaces the default. */
if (ruleprec) if (ruleprec)
{ {
rprec[ruleno] = ruleprec->prec; rule_table[ruleno].prec = ruleprec->prec;
rassoc[ruleno] = ruleprec->assoc; rule_table[ruleno].assoc = ruleprec->assoc;
rprecsym[ruleno] = ruleprec->value; rule_table[ruleno].precsym = ruleprec->value;
} }
ritem[itemno++] = -ruleno; ritem[itemno++] = -ruleno;
@@ -1913,6 +1911,9 @@ packgram (void)
} }
ritem[itemno] = 0; ritem[itemno] = 0;
if (trace_flag)
ritem_print (stderr);
} }
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
@@ -1933,8 +1934,6 @@ reader (void)
nvars = 0; nvars = 0;
nrules = 0; nrules = 0;
nitems = 0; nitems = 0;
rline_allocated = 10;
rline = XCALLOC (short, rline_allocated);
typed = 0; typed = 0;
lastprec = 0; lastprec = 0;
@@ -1990,6 +1989,8 @@ reader (void)
packsymbols (); packsymbols ();
/* Convert the grammar into the format described in gram.h. */ /* Convert the grammar into the format described in gram.h. */
packgram (); packgram ();
/* Output the headers. */
symbols_output ();
} }
+216 -212
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)
@@ -100,7 +107,7 @@ useful_production (int i, BSet N0)
/* A production is useful if all of the nonterminals in its appear /* A production is useful if all of the nonterminals in its appear
in the set of useful nonterminals. */ in the set of useful nonterminals. */
for (r = &ritem[rrhs[i]]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
if (ISVAR (n = *r)) if (ISVAR (n = *r))
if (!BITISSET (N0, n - ntokens)) if (!BITISSET (N0, n - ntokens))
return FALSE; return FALSE;
@@ -149,7 +156,7 @@ useless_nonterminals (void)
{ {
if (useful_production (i, N)) if (useful_production (i, N))
{ {
SETBIT (Np, rlhs[i] - ntokens); SETBIT (Np, rule_table[i].lhs - ntokens);
SETBIT (P, i); SETBIT (P, i);
} }
} }
@@ -200,38 +207,33 @@ inaccessable_symbols (void)
Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1)); Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1));
/* If the start symbol isn't useful, then nothing will be useful. */ /* If the start symbol isn't useful, then nothing will be useful. */
if (!BITISSET (N, start_symbol - ntokens)) if (BITISSET (N, start_symbol - ntokens))
goto end_iteration;
SETBIT (V, start_symbol);
while (1)
{ {
for (i = WORDSIZE (nsyms) - 1; i >= 0; i--) SETBIT (V, start_symbol);
Vp[i] = V[i];
for (i = 1; i <= nrules; i++) while (1)
{ {
if (!BITISSET (Pp, i) && BITISSET (P, i) && BITISSET (V, rlhs[i])) for (i = WORDSIZE (nsyms) - 1; i >= 0; i--)
Vp[i] = V[i];
for (i = 1; i <= nrules; i++)
{ {
for (r = &ritem[rrhs[i]]; *r >= 0; r++) if (!BITISSET (Pp, i)
&& BITISSET (P, i)
&& BITISSET (V, rule_table[i].lhs))
{ {
if (ISTOKEN (t = *r) || BITISSET (N, t - ntokens)) for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
{ if (ISTOKEN (t = *r) || BITISSET (N, t - ntokens))
SETBIT (Vp, t); SETBIT (Vp, t);
} SETBIT (Pp, i);
} }
SETBIT (Pp, i);
} }
if (bits_equal (V, Vp, WORDSIZE (nsyms)))
break;
Vs = Vp;
Vp = V;
V = Vs;
} }
if (bits_equal (V, Vp, WORDSIZE (nsyms)))
{
break;
}
Vs = Vp;
Vp = V;
V = Vs;
} }
end_iteration:
XFREE (V); XFREE (V);
V = Vp; V = Vp;
@@ -255,39 +257,46 @@ end_iteration:
/* A token that was used in %prec should not be warned about. */ /* A token that was used in %prec should not be warned about. */
for (i = 1; i < nrules; i++) for (i = 1; i < nrules; i++)
if (rprecsym[i] != 0) if (rule_table[i].precsym != 0)
SETBIT (V1, rprecsym[i]); SETBIT (V1, rule_table[i].precsym);
} }
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)
{ {
rlhs[np] = rlhs[pn]; rule_table[np].lhs = rule_table[pn].lhs;
rline[np] = rline[pn]; rule_table[np].line = rule_table[pn].line;
rprec[np] = rprec[pn]; rule_table[np].prec = rule_table[pn].prec;
rassoc[np] = rassoc[pn]; rule_table[np].assoc = rule_table[pn].assoc;
rrhs[np] = rrhs[pn]; rule_table[np].rhs = rule_table[pn].rhs;
if (rrhs[np] != ni) if (rule_table[np].rhs != ni)
{ {
pi = rrhs[np]; pi = rule_table[np].rhs;
rrhs[np] = ni; rule_table[np].rhs = ni;
while (ritem[pi] >= 0) while (ritem[pi] >= 0)
ritem[ni++] = ritem[pi++]; ritem[ni++] = ritem[pi++];
ritem[ni++] = -np; ritem[ni++] = -np;
@@ -298,189 +307,188 @@ 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))
{
rlhs[pn] = -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 (rlhs[i] >= 0)
rlhs[i] = nontermmap[rlhs[i]];
if (ISVAR (rprecsym[i]))
/* Can this happen? */
rprecsym[i] = nontermmap[rprecsym[i]];
}
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 (!rule_table[i].useful)
if (!BITISSET (P, i)) {
{ rule r;
fprintf (out, "#%-4d ", i); fprintf (out, "#%-4d ", i);
fprintf (out, "%s :\t", tags[rlhs[i]]); fprintf (out, "%s:", tags[rule_table[i].lhs]);
for (r = &ritem[rrhs[i]]; *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");
} }
#if 0 /* XXX currently unused. */
static void static void
dump_grammar (FILE *out) dump_grammar (FILE *out)
{ {
int i; int i;
rule r; rule r;
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;
i, rprec[i], rassoc[i], rlhs[i], rrhs[i]); /* Find the last RHS index in ritems. */
for (r = &ritem[rrhs[i]]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; ++r)
fprintf (out, "%5d", *r); ++rhs_count;
fprintf (out, " [%d]\n", -(*r)); fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d) %2d ->",
i,
rule_table[i].prec, rule_table[i].assoc, rule_table[i].useful,
rule_table[i].rhs, rule_table[i].rhs + rhs_count - 1,
rule_table[i].lhs);
/* Dumped the RHS. */
for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
fprintf (out, "%3d", *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[rlhs[i]]); fprintf (out, "%-5d %s :", i, tags[rule_table[i].lhs]);
for (r = &ritem[rrhs[i]]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
fprintf (out, " %s", tags[*r]); fprintf (out, " %s", tags[*r]);
fputc ('\n', out); fputc ('\n', out);
} }
fprintf (out, "\n\n"); fprintf (out, "\n\n");
} }
#endif
@@ -492,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);
} }
@@ -541,24 +552,17 @@ reduce_grammar (void)
tags[start_symbol]); tags[start_symbol]);
reduce_grammar_tables (); reduce_grammar_tables ();
#if 0 if (nuseless_nonterminals > 0)
if (verbose_flag) nonterminals_reduce ();
{
fprintf (out, "REDUCED GRAMMAR\n\n");
dump_grammar ();
}
#endif
if (statistics_flag) if (trace_flag)
fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\ {
, and %d production%s.\n"), dump_grammar (stderr);
infile,
ntokens, fprintf (stderr, "reduced %s defines %d terminals, %d nonterminals\
(ntokens == 1 ? "" : "s"), , and %d productions.\n",
nvars, infile, ntokens, nvars, nrules);
(nvars == 1 ? "" : "s"), }
nrules,
(nrules == 1 ? "" : "s"));
} }
+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;
}
+69 -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,10 +101,15 @@ 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) \
(core *) xcalloc ((unsigned) (sizeof (core) \
+ (Nitems - 1) * sizeof (short)), 1)
/*---------.
| Shifts. |
`---------*/
typedef struct shifts typedef struct shifts
{ {
@@ -107,19 +117,66 @@ typedef struct shifts
short number; short number;
short nshifts; short nshifts;
short shifts[1]; short shifts[1];
} } shifts;
shifts;
#define SHIFTS_ALLOC(Nshifts) \
(shifts *) xcalloc ((unsigned) (sizeof (shifts) \
+ (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) \
(errs *) xcalloc ((unsigned) (sizeof (errs) \
+ (Nerrs - 1) * sizeof (short)), 1)
/*-------------.
| Reductions. |
`-------------*/
typedef struct reductions typedef struct reductions
{ {
@@ -127,7 +184,10 @@ typedef struct reductions
short number; short number;
short nreds; short nreds;
short rules[1]; short rules[1];
} } reductions;
reductions;
#define REDUCTIONS_ALLOC(Nreductions) \
(reductions *) xcalloc ((unsigned) (sizeof (reductions) \
+ (Nreductions - 1) * sizeof (short)), 1)
#endif /* !STATE_H_ */ #endif /* !STATE_H_ */
+45 -14
View File
@@ -40,6 +40,18 @@
# include <stdlib.h> # include <stdlib.h>
#endif #endif
/* The following test is to work around the gross typo in
systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
is defined to 0, not 1. */
#if !EXIT_FAILURE
# undef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
#ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
#endif
#if HAVE_UNISTD_H #if HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif
@@ -67,6 +79,21 @@
extern int errno; extern int errno;
#endif #endif
/* AIX requires this to be the first thing in the file. */
#ifndef __GNUC__
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifdef _AIX
#pragma alloca
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
char *alloca ();
# endif
# endif
# endif
#endif
#if PROTOTYPES #if PROTOTYPES
# define PARAMS(p) p # define PARAMS(p) p
#else #else
@@ -122,20 +149,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 "intl/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
/*-------------------------------. /*-------------------------------.
@@ -267,6 +283,21 @@ do { \
#endif #endif
/* As memcpy, but for shorts. */
#define shortcpy(Dest, Src, Num) \
memcpy (Dest, Src, Num * sizeof (short))
/* Free a linked list. */
#define LIST_FREE(Type, List) \
do { \
Type *_node, *_next; \
for (_node = List; _node; _node = _next) \
{ \
_next = _node->next; \
XFREE (_node); \
} \
} while (0)
/*---------------------------------. /*---------------------------------.
| Debugging the memory allocator. | | Debugging the memory allocator. |
`---------------------------------*/ `---------------------------------*/
+46 -35
View File
@@ -21,6 +21,16 @@
#include "system.h" #include "system.h"
#include "vcg.h" #include "vcg.h"
#include "vcg_defaults.h" #include "vcg_defaults.h"
#include "quotearg.h"
/* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */
static char const *
quote (char const *name)
{
return quotearg_n_style (0, c_quoting_style, name);
}
/* Initialize a graph with the default values. */ /* Initialize a graph with the default values. */
void void
@@ -429,7 +439,7 @@ void
add_classname (graph_t *g, int val, const char *name) add_classname (graph_t *g, int val, const char *name)
{ {
struct classname_s *classname; struct classname_s *classname;
classname = XMALLOC (struct classname_s, 1); classname = XMALLOC (struct classname_s, 1);
classname->no = val; classname->no = val;
classname->name = name; classname->name = name;
@@ -441,7 +451,7 @@ void
add_infoname (graph_t *g, int integer, const char *string) add_infoname (graph_t *g, int integer, const char *string)
{ {
struct infoname_s *infoname; struct infoname_s *infoname;
infoname = XMALLOC (struct infoname_s, 1); infoname = XMALLOC (struct infoname_s, 1);
infoname->integer = integer; infoname->integer = integer;
infoname->string = string; infoname->string = string;
@@ -451,11 +461,11 @@ add_infoname (graph_t *g, int integer, const char *string)
/* Build a colorentry struct and add it to the list. */ /* Build a colorentry struct and add it to the list. */
void void
add_colorentry (graph_t *g, int color_idx, int red_cp, add_colorentry (graph_t *g, int color_idx, int red_cp,
int green_cp, int blue_cp) int green_cp, int blue_cp)
{ {
struct colorentry_s *ce; struct colorentry_s *ce;
ce = XMALLOC (struct colorentry_s, 1); ce = XMALLOC (struct colorentry_s, 1);
ce->color_index = color_idx; ce->color_index = color_idx;
ce->red_cp = red_cp; ce->red_cp = red_cp;
@@ -556,9 +566,9 @@ void
output_node (node_t *node, FILE *fout) output_node (node_t *node, FILE *fout)
{ {
if (node->title != N_TITLE) if (node->title != N_TITLE)
fprintf (fout, "\t\ttitle:\t\"%s\"\n", node->title); fprintf (fout, "\t\ttitle:\t%s\n", quote (node->title));
if (node->label != N_LABEL) if (node->label != N_LABEL)
fprintf (fout, "\t\tlabel:\t\"%s\"\n", node->label); fprintf (fout, "\t\tlabel:\t%s\n", quote (node->label));
if ((node->locx != N_LOCX) && (node->locy != N_LOCY)) if ((node->locx != N_LOCX) && (node->locy != N_LOCY))
fprintf (fout, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy); fprintf (fout, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy);
@@ -600,12 +610,13 @@ output_node (node_t *node, FILE *fout)
fprintf (fout, "\t\tbordercolor:\t%s\n", fprintf (fout, "\t\tbordercolor:\t%s\n",
get_color_str (node->bordercolor)); get_color_str (node->bordercolor));
if (node->infos[0]) {
fprintf (fout, "\t\tinfo1:\t\"%s\"\n", node->infos[0]); int i;
if (node->infos[1]) for (i = 0; i < 3; ++i)
fprintf (fout, "\t\tinfo2:\t\"%s\"\n", node->infos[1]); if (node->infos[i])
if (node->infos[2]) fprintf (fout, "\t\tinfo%d:\t%s\n",
fprintf (fout, "\t\tinfo3:\t\"%s\"\n", node->infos[2]); i, quote (node->infos[i]));
}
} }
void void
@@ -614,16 +625,16 @@ output_edge (edge_t *edge, FILE *fout)
/* FIXME: SOURCENAME and TARGETNAME are mandatory /* FIXME: SOURCENAME and TARGETNAME are mandatory
so it has to be fatal not to give these informations. */ so it has to be fatal not to give these informations. */
if (edge->sourcename != E_SOURCENAME) if (edge->sourcename != E_SOURCENAME)
fprintf (fout, "\t\tsourcename:\t\"%s\"\n", edge->sourcename); fprintf (fout, "\t\tsourcename:\t%s\n", quote (edge->sourcename));
if (edge->targetname != E_TARGETNAME) if (edge->targetname != E_TARGETNAME)
fprintf (fout, "\t\ttargetname:\t\"%s\"\n", edge->targetname); fprintf (fout, "\t\ttargetname:\t%s\n", quote (edge->targetname));
if (edge->label != E_LABEL) if (edge->label != E_LABEL)
fprintf (fout, "\t\tlabel:\t\"%s\"\n", edge->label); fprintf (fout, "\t\tlabel:\t%s\n", quote (edge->label));
if (edge->linestyle != E_LINESTYLE) if (edge->linestyle != E_LINESTYLE)
fprintf (fout, "\t\tlinestyle:\t\"%s\"\n", fprintf (fout, "\t\tlinestyle:\t%s\n",
get_linestyle_str(edge->linestyle)); quote (get_linestyle_str(edge->linestyle)));
if (edge->thickness != E_THICKNESS) if (edge->thickness != E_THICKNESS)
fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness); fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness);
@@ -666,16 +677,16 @@ void
output_graph (graph_t *graph, FILE *fout) output_graph (graph_t *graph, FILE *fout)
{ {
if (graph->title) if (graph->title)
fprintf (fout, "\ttitle:\t\"%s\"\n", graph->title); fprintf (fout, "\ttitle:\t%s\n", quote (graph->title));
if (graph->label) if (graph->label)
fprintf (fout, "\tlabel:\t\"%s\"\n", graph->label); fprintf (fout, "\tlabel:\t%s\n", quote (graph->label));
if (graph->infos[0]) {
fprintf (fout, "\tinfo1:\t\"%s\"\n", graph->infos[0]); int i;
if (graph->infos[1]) for (i = 0; i < 3; ++i)
fprintf (fout, "\tinfo2:\t\"%s\"\n", graph->infos[1]); if (graph->infos[i])
if (graph->infos[2]) fprintf (fout, "\tinfo%d:\t%s\n", i, quote (graph->infos[i]));
fprintf (fout, "\tinfo3:\t\"%s\"\n", graph->infos[2]); }
if (graph->color != G_COLOR) if (graph->color != G_COLOR)
fprintf (fout, "\tcolor:\t%s\n", get_color_str (graph->color)); fprintf (fout, "\tcolor:\t%s\n", get_color_str (graph->color));
@@ -711,11 +722,11 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->shape != G_SHAPE) if (graph->shape != G_SHAPE)
fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape)); fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape));
if (graph->vertical_order != G_VERTICAL_ORDER) if (graph->vertical_order != G_VERTICAL_ORDER)
fprintf (fout, "\tvertical_order:\t%d\n", graph->vertical_order); fprintf (fout, "\tvertical_order:\t%d\n", graph->vertical_order);
if (graph->horizontal_order != G_HORIZONTAL_ORDER) if (graph->horizontal_order != G_HORIZONTAL_ORDER)
fprintf (fout, "\thorizontal_order:\t%d\n", graph->horizontal_order); fprintf (fout, "\thorizontal_order:\t%d\n", graph->horizontal_order);
if (graph->xmax != G_XMAX) if (graph->xmax != G_XMAX)
fprintf (fout, "\txmax:\t%d\n", graph->xmax); fprintf (fout, "\txmax:\t%d\n", graph->xmax);
@@ -743,8 +754,8 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->hidden != G_HIDDEN) if (graph->hidden != G_HIDDEN)
fprintf (fout, "\thidden:\t%d\n", graph->hidden); fprintf (fout, "\thidden:\t%d\n", graph->hidden);
/* FIXME: Unallocate struct list if required. /* FIXME: Unallocate struct list if required.
Maybe with a little function. */ Maybe with a little function. */
if (graph->classname != G_CLASSNAME) if (graph->classname != G_CLASSNAME)
{ {
@@ -765,15 +776,15 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->colorentry != G_COLORENTRY) if (graph->colorentry != G_COLORENTRY)
{ {
struct colorentry_s *ite; struct colorentry_s *ite;
for (ite = graph->colorentry; ite; ite = ite->next) for (ite = graph->colorentry; ite; ite = ite->next)
{ {
fprintf (fout, "\tcolorentry %d :\t%d %d %d\n", fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
ite->color_index, ite->color_index,
ite->red_cp, ite->red_cp,
ite->green_cp, ite->green_cp,
ite->blue_cp); ite->blue_cp);
} }
} }
if (graph->layoutalgorithm != G_LAYOUTALGORITHM) if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
+24 -77
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.
@@ -22,93 +22,40 @@
#include "system.h" #include "system.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. |
`-------------------------------------------------------------*/
#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; for (i = 0; i < n; ++i)
unsigned *cword; for (j = 0; j < n; ++j)
unsigned *rowi; if (BITISSET (R (i), j))
for (k = 0; k < rowsize; ++k)
rowsize = WORDSIZE(n) * sizeof(unsigned); if (BITISSET (R (i), k))
relend = (unsigned *) ((char *) R + (n * rowsize)); SETBIT (R (j), k);
cword = R;
mask = 1;
rowi = R;
while (rowi < relend)
{
ccol = cword;
rowj = R;
while (rowj < relend)
{
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 -1
View File
@@ -25,7 +25,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at torture.at regression.at output.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
AUTOTEST = $(AUTOM4TE) --language=autotest AUTOTEST = $(AUTOM4TE) --language=autotest
+1 -1
View File
@@ -108,7 +108,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at torture.at regression.at output.at reduce.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
+2 -2
View File
@@ -4,10 +4,10 @@
# We need a C compiler. # We need a C compiler.
CC='@CC@' CC='@CC@'
CFLAGS='@CFLAGS@' CFLAGS='@CFLAGS@ @WARNING_CFLAGS@'
# We need to know if the compiler is GCC. # We need to know if the compiler is GCC.
GCC='@GCC@' GCC='@GCC@'
# We need `config.h'. # We need `config.h'.
CPPFLAGS="-I $top_builddir @CPPFLAGS@" CPPFLAGS="-I$top_buildpath @CPPFLAGS@"
+14 -8
View File
@@ -338,8 +338,14 @@ AT_CHECK([bison calc.y -o calc.c m4_bpatsubst([$1], [--yyerror-verbose])],
# Maybe some day we will have proper Autoconf macros to disable these # Maybe some day we will have proper Autoconf macros to disable these
# warnings, but this place is not the right one for that. # warnings, but this place is not the right one for that.
# So let's keep only GCC warnings, which we know are sane. # So let's keep only GCC warnings, which we know are sane.
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [stderr]) # Well, that's only part of the story: some assemblers issue warnings
AT_CHECK([if test "$GCC" = yes; then cat stderr; else true; fi]) # 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])
# Test the priorities. # Test the priorities.
_AT_CHECK_CALC([$1], _AT_CHECK_CALC([$1],
@@ -360,24 +366,24 @@ _AT_CHECK_CALC([$1],
# Some parse errors. # Some parse errors.
_AT_CHECK_CALC_ERROR([$1], [+1], [8], _AT_CHECK_CALC_ERROR([$1], [+1], [8],
[1.0:1.1], [1.0:1.1],
[unexpected `'+'']) [unexpected '+'])
_AT_CHECK_CALC_ERROR([$1], [1//2], [17], _AT_CHECK_CALC_ERROR([$1], [1//2], [17],
[1.2:1.3], [1.2:1.3],
[unexpected `'/'', expecting `NUM' or `'-'' or `'('']) [unexpected '/', expecting NUM or '-' or '('])
_AT_CHECK_CALC_ERROR([$1], [error], [8], _AT_CHECK_CALC_ERROR([$1], [error], [8],
[1.0:1.1], [1.0:1.1],
[unexpected `$undefined.']) [unexpected $undefined.])
_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [23], _AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [23],
[1.6:1.7], [1.6:1.7],
[unexpected `'='']) [unexpected '='])
_AT_CHECK_CALC_ERROR([$1], _AT_CHECK_CALC_ERROR([$1],
[ [
+1], +1],
[16], [16],
[2.0:2.1], [2.0:2.1],
[unexpected `'+'']) [unexpected '+'])
AT_CLEANUP(calc calc.c calc.h calc.output) AT_CLEANUP
])# AT_CHECK_CALC ])# AT_CHECK_CALC
+1 -1
View File
@@ -31,7 +31,7 @@ foo: {}
AT_CHECK([bison $3 $1], 0) AT_CHECK([bison $3 $1], 0)
AT_CHECK([ls $4], [], [ignore]) AT_CHECK([ls $4], [], [ignore])
AT_CLEANUP($4) AT_CLEANUP
]) ])
AT_CHECK_OUTPUT([foo.y], [], [-dv], AT_CHECK_OUTPUT([foo.y], [], [-dv],
+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
+199 -25
View File
@@ -40,7 +40,7 @@ exp: '(' exp ')' | NUM ;
AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore) AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore)
AT_CLEANUP([duplicate.*]) AT_CLEANUP
## ------------------------- ## ## ------------------------- ##
@@ -63,10 +63,13 @@ 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
rule 1 exp -> exp OP exp Number, Line, Rule
rule 2 exp -> NUM 1 3 exp -> exp OP exp
2 3 exp -> NUM
Terminals, with rules where they appear Terminals, with rules where they appear
@@ -75,6 +78,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)
@@ -137,9 +141,11 @@ state 5
state 6 state 6
$default accept $default accept
]]) ]])
AT_CLEANUP(input.c input.output) AT_CLEANUP
## --------------------- ## ## --------------------- ##
@@ -161,10 +167,13 @@ 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
rule 1 exp -> exp OP exp Number, Line, Rule
rule 2 exp -> NUM 1 4 exp -> exp OP exp
2 4 exp -> NUM
Terminals, with rules where they appear Terminals, with rules where they appear
@@ -173,6 +182,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)
@@ -234,9 +244,156 @@ state 5
state 6 state 6
$default accept $default accept
]]) ]])
AT_CLEANUP(input.c input.output) AT_CLEANUP
## ------------------- ##
## Rule Line Numbers. ##
## ------------------- ##
AT_SETUP([Rule Line Numbers])
AT_DATA([input.y],
[[%%
expr:
'a'
{
}
'b'
{
}
|
{
}
'c'
{
}
]])
AT_CHECK([bison input.y -o input.c -v], 0, [], [])
# Check the contents of the report.
AT_CHECK([cat input.output], [],
[[Grammar
Number, Line, Rule
1 2 @1 -> /* empty */
2 2 expr -> 'a' @1 'b'
3 15 @2 -> /* empty */
4 15 expr -> @2 'c'
Terminals, with rules where they appear
$ (-1)
'a' (97) 2
'b' (98) 2
'c' (99) 4
error (256)
Nonterminals, with rules where they appear
expr (6)
on left: 2 4
@1 (7)
on left: 1, on right: 2
@2 (8)
on left: 3, on right: 4
state 0
'a' shift, and go to state 1
$default reduce using rule 3 (@2)
expr go to state 6
@2 go to state 2
state 1
expr -> 'a' . @1 'b' (rule 2)
$default reduce using rule 1 (@1)
@1 go to state 3
state 2
expr -> @2 . 'c' (rule 4)
'c' shift, and go to state 4
state 3
expr -> 'a' @1 . 'b' (rule 2)
'b' shift, and go to state 5
state 4
expr -> @2 'c' . (rule 4)
$default reduce using rule 4 (expr)
state 5
expr -> 'a' @1 'b' . (rule 2)
$default reduce using rule 2 (expr)
state 6
$ go to state 7
state 7
$ go to state 8
state 8
$default accept
]])
AT_CLEANUP
@@ -257,7 +414,7 @@ AT_CHECK([bison input.y -o input.c], 1, [],
[input.y contains 1 shift/reduce conflict. [input.y contains 1 shift/reduce conflict.
expected 0 shift/reduce conflicts expected 0 shift/reduce conflicts
]) ])
AT_CLEANUP(input.c) AT_CLEANUP
## --------------- ## ## --------------- ##
@@ -273,10 +430,8 @@ AT_DATA([input.y],
exp: exp OP exp | NUM; exp: exp OP exp | NUM;
]]) ]])
AT_CHECK([bison input.y -o input.c], 0, [], AT_CHECK([bison input.y -o input.c], 0)
[input.y contains 1 shift/reduce conflict. AT_CLEANUP
])
AT_CLEANUP(input.c)
## ------------------ ## ## ------------------ ##
@@ -296,7 +451,7 @@ AT_CHECK([bison input.y -o input.c], 1, [],
[input.y contains 1 shift/reduce conflict. [input.y contains 1 shift/reduce conflict.
expected 2 shift/reduce conflicts expected 2 shift/reduce conflicts
]) ])
AT_CLEANUP(input.c) AT_CLEANUP
## ---------------------- ## ## ---------------------- ##
@@ -318,7 +473,7 @@ exp: ;
AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore) AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore)
AT_CLEANUP([input.*]) AT_CLEANUP
@@ -341,7 +496,7 @@ exp: {};
AT_CHECK([bison --defines union.y]) AT_CHECK([bison --defines union.y])
AT_CLEANUP([union.*]) AT_CLEANUP
## --------------------------------------- ## ## --------------------------------------- ##
@@ -364,7 +519,7 @@ exp: {};
AT_CHECK([bison union-comment.y]) AT_CHECK([bison union-comment.y])
AT_CHECK([fgrep '//*' union-comment.tab.c], [1], []) AT_CHECK([fgrep '//*' union-comment.tab.c], [1], [])
AT_CLEANUP([union-comment.*]) AT_CLEANUP
## ----------------- ## ## ----------------- ##
@@ -380,9 +535,9 @@ AT_DATA([input.y],
]]) ]])
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: fatal error: no rules in the input grammar
]) ]])
AT_CLEANUP AT_CLEANUP
@@ -400,8 +555,29 @@ default: 'a' }
]]) ]])
AT_CHECK([bison input.y], [1], [], AT_CHECK([bison input.y], [1], [],
[input.y:2: invalid input: `}' [[input.y:2: invalid input: `}'
]) ]])
AT_CLEANUP
## -------------------- ##
## Invalid %directive. ##
## -------------------- ##
AT_SETUP([Invalid %directive])
AT_DATA([input.y],
[[%invalid
]])
AT_CHECK([bison input.y], [1], [],
[[input.y:1: unrecognized: %invalid
input.y:1: Skipping to next %
input.y:2: fatal error: no input grammar
]])
AT_CLEANUP AT_CLEANUP
@@ -416,11 +592,9 @@ AT_CLEANUP
m4_define([AT_TEST_CPP_GUARD_H], m4_define([AT_TEST_CPP_GUARD_H],
[AT_SETUP([Invalid CPP guards: $1]) [AT_SETUP([Invalid CPP guards: $1])
# possibly create and nuke inner directories. # Possibly create inner directories.
m4_bmatch([$1], [[/]], dirname=`AS_DIRNAME([$1])`
[dirname=`AS_DIRNAME([$1])`
AS_MKDIR_P([$dirname]) AS_MKDIR_P([$dirname])
AT_CLEANUP_FILES([$dirname])])
AT_DATA([$1.y], AT_DATA([$1.y],
[%% [%%
@@ -432,7 +606,7 @@ AT_CHECK([bison --defines=$1.h $1.y])
# CPP should be happy with it. # CPP should be happy with it.
AT_CHECK([$CC -E $1.h], 0, [ignore]) AT_CHECK([$CC -E $1.h], 0, [ignore])
AT_CLEANUP($1.*) AT_CLEANUP
]) ])
AT_TEST_CPP_GUARD_H([input/input]) AT_TEST_CPP_GUARD_H([input/input])
+2 -1
View File
@@ -19,13 +19,14 @@
# 02111-1307, USA. # 02111-1307, USA.
# We need a recent Autotest. # We need a recent Autotest.
m4_version_prereq([2.52e]) m4_version_prereq([2.52g])
AT_INIT AT_INIT
AT_TESTED([bison]) AT_TESTED([bison])
m4_include([output.at]) m4_include([output.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])
+1 -2
View File
@@ -73,7 +73,6 @@ main (int argc, const char **argv)
]]) ]])
AT_CHECK([bison input.y -o input.c]) AT_CHECK([bison input.y -o input.c])
AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore]) AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
AT_CLEANUP_FILES(input input.c)
]) ])
@@ -104,7 +103,7 @@ AT_CLEANUP
AT_SETUP([Exploding the Stack Size with Malloc]) AT_SETUP([Exploding the Stack Size with Malloc])
AT_DATA_STACK_TORTURE([[#define YYSTACK_USE_ALLOCA_ALLOCA 0]]) AT_DATA_STACK_TORTURE([[#define YYSTACK_USE_ALLOCA 0]])
# Below the limit of 200. # Below the limit of 200.
AT_CHECK([input 20], 0, [], [ignore]) AT_CHECK([input 20], 0, [], [ignore])