mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-09 10:45:15 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adb4edee47 | ||
|
|
65490badba | ||
|
|
8b044b8540 | ||
|
|
0704bc9b8e | ||
|
|
2b7c2ef124 | ||
|
|
48e38d301e | ||
|
|
560757768c | ||
|
|
238b8134ec | ||
|
|
483642486d | ||
|
|
146ad4c8d0 | ||
|
|
f2a4c94506 | ||
|
|
65fae038b9 | ||
|
|
e1cb5fb523 | ||
|
|
64fabbb49f | ||
|
|
3b2925a060 | ||
|
|
83bcf86639 | ||
|
|
8639df64a6 | ||
|
|
377bd7c9a2 | ||
|
|
b4a7a230f1 | ||
|
|
c1586e58fe | ||
|
|
50766eee39 | ||
|
|
dc3b81cd67 | ||
|
|
c555896775 | ||
|
|
35f61cb998 | ||
|
|
9291f914de | ||
|
|
ff1581dddb | ||
|
|
4b9170b2c0 | ||
|
|
523a9eafdc | ||
|
|
bcdf932ed9 | ||
|
|
e2aabb3dc6 | ||
|
|
e8ebe4b0c7 | ||
|
|
9043475828 | ||
|
|
d80a86e0b5 | ||
|
|
cfc3acf242 | ||
|
|
93337ac41c | ||
|
|
0d7803637b | ||
|
|
a62c863ec3 | ||
|
|
1e883de90c | ||
|
|
efcff8cd5c | ||
|
|
3e85a00236 | ||
|
|
f85c981ac1 | ||
|
|
5cb10dae3c | ||
|
|
26e1ca45ba | ||
|
|
8888e43b2c | ||
|
|
d9ca2df2aa | ||
|
|
e8def3ff6e | ||
|
|
76e734e5ed | ||
|
|
b8b4a730a0 | ||
|
|
b9d2d2a881 | ||
|
|
78986eff74 | ||
|
|
1393a78454 | ||
|
|
de11686376 | ||
|
|
badfc69c26 | ||
|
|
fb28699f95 | ||
|
|
6b307af66c | ||
|
|
dad56b10d3 | ||
|
|
5f1ff7cd74 | ||
|
|
b6cac93afa | ||
|
|
86d5a1ed5c | ||
|
|
97e9ee3ad5 | ||
|
|
d81e5db73f | ||
|
|
029806c785 |
@@ -1,3 +1,345 @@
|
||||
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 less
|
||||
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 reporting verbosely an error,
|
||||
no longer issue 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 to the variable F.
|
||||
Adjust.
|
||||
|
||||
2001-11-19 Akim Demaille <[email protected]>
|
||||
|
||||
* 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 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, 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 Akim Demaille <[email protected]>
|
||||
|
||||
* 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 Akim Demaille <[email protected]>
|
||||
|
||||
* 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 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]>
|
||||
|
||||
Version 1.30b.
|
||||
|
||||
* src/system.h (ngettext): Now that we use ngettext, be sure to
|
||||
provide a default definition when NLS are not used that takes care
|
||||
of the cardinality.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* doc/bison.texinfo: Use `$' as shell prompt, not `%'.
|
||||
Use @kbd to denote user input.
|
||||
(Language and Grammar): ANSIfy the example.
|
||||
Adjust its layout for info/notinfo.
|
||||
(Location Tracking Calc): Output error messages to stderr.
|
||||
Output locations in a more GNUtically correct way.
|
||||
Fix a couple of Englishos.
|
||||
Adjust @group/@end group pairs.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
%expext was not functioning at all.
|
||||
|
||||
* src/conflicts.c (expected_conflicts): Set to -1.
|
||||
(conflict_report): Use ngettext.
|
||||
(conflicts_print): Check %expect and make its violation an error.
|
||||
* doc/bison.texinfo (Expect Decl): Adjust.
|
||||
* configure.in (AM_GNU_GETTEXT): Ask for ngettext.
|
||||
* tests/regression.at (%expect not enough, %expect right)
|
||||
(%expect too much): New.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/regression.at (Conflicts): Rename as...
|
||||
(Unresolved SR Conflicts): this.
|
||||
(Solved SR Conflicts): New.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* src/reduce.c (print_results): Rename as...
|
||||
(reduce_output): This.
|
||||
Output to OUT, passed as argument, instead of output_obstack.
|
||||
(dump_grammar): Likewise.
|
||||
(reduce_free): New.
|
||||
Also free V1.
|
||||
(reduce_grammar): No longer call reduce_output, since...
|
||||
* src/print.c (print_results): do it.
|
||||
* src/main.c (main): Call reduce_free;
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* src/conflicts.c (print_reductions): Accept OUT as argument.
|
||||
Output to it, not to output_obstack.
|
||||
* src/print.c (print_actions): Adjust.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Return
|
||||
the result instead of using...
|
||||
(src_total, rrc_total, src_count, rrc_count): Remove.
|
||||
(any_conflicts): Remove.
|
||||
(print_conflicts): Split into...
|
||||
(conflicts_print, conflicts_output): New.
|
||||
* src/conflicts.h: Adjust.
|
||||
* src/main.c (main): Invoke both conflicts_output and conflicts_print.
|
||||
* src/print.c (print_grammar): Issue `\n' between to rule outputs.
|
||||
* tests/regression.at (Conflicts): New.
|
||||
Reported by Tom Lane.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/regression.at (Invalid input): Remove, duplicate with
|
||||
``Invalid input: 1''.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/torture.at (AT_DATA_STACK_TORTURE)
|
||||
(Exploding the Stack Size with Alloca)
|
||||
(Exploding the Stack Size with Malloc): New.
|
||||
|
||||
2001-11-12 Akim Demaille <[email protected]>
|
||||
|
||||
* src/bison.simple (YYSTACK_REALLOC): New.
|
||||
(yyparse) [!yyoverflow]: Use it and free the old stack.
|
||||
Reported by Per Allansson.
|
||||
|
||||
2001-11-05 Akim Demaille <[email protected]>
|
||||
|
||||
Version 1.30a.
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
@@ -1,7 +1,40 @@
|
||||
Bison News
|
||||
----------
|
||||
|
||||
Changes in version 1.30a:
|
||||
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:
|
||||
|
||||
* Fixed parser memory leaks.
|
||||
When the generated parser was using malloc to extend its stacks, the
|
||||
previous allocations were not freed.
|
||||
|
||||
* Fixed verbose output file.
|
||||
Some newlines were missing.
|
||||
Some conflicts in state descriptions were missing.
|
||||
|
||||
* Fixed conflict report.
|
||||
Option -v was needed to get the result.
|
||||
|
||||
* %expect
|
||||
Was not used.
|
||||
Mismatches are errors, not warnings.
|
||||
|
||||
* Fixed incorrect processing of some invalid input.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ Bison was originally written by Robert Corbett. It would not be what
|
||||
it is today without the invaluable help of these people:
|
||||
|
||||
Airy Andre [email protected]
|
||||
Akim Demaille akim@epita.fr
|
||||
Akim Demaille akim@freefriends.org
|
||||
Albert Chin-A-Young [email protected]
|
||||
Alexander Belopolsky [email protected]
|
||||
Daniel Hagerty [email protected]
|
||||
@@ -20,10 +20,13 @@ Neil Booth [email protected]
|
||||
Noah Friedman [email protected]
|
||||
Pascal Bart [email protected]
|
||||
Paul Eggert [email protected]
|
||||
Per Allansson [email protected]
|
||||
Piotr Gackiewicz [email protected]
|
||||
Richard Stallman [email protected]
|
||||
Robert Anisko [email protected]
|
||||
Shura [email protected]
|
||||
Tom Lane [email protected]
|
||||
Wolfram Wagner [email protected]
|
||||
Wwp [email protected]
|
||||
|
||||
Many people are not named here because we lost track of them. We
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
# aclocal.m4t generated automatically by aclocal 1.5a -*- Autoconf -*-
|
||||
# aclocal.m4 generated automatically by aclocal 1.5a -*- Autoconf -*-
|
||||
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
+64
-63
@@ -5,29 +5,30 @@
|
||||
*/
|
||||
#undef CRAY_STACKSEG_END
|
||||
|
||||
/* Define if using `alloca.c'. */
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
#undef C_ALLOCA
|
||||
|
||||
/* Define to 1 if translation of program messages to the user's native
|
||||
language is requested. */
|
||||
#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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define if you have the <argz.h> header file. */
|
||||
/* Define to 1 if you have the <argz.h> header file. */
|
||||
#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
|
||||
|
||||
/* Define if backslash-a works in C strings. */
|
||||
#undef HAVE_C_BACKSLASH_A
|
||||
|
||||
/* Define if you have the `dcgettext' function. */
|
||||
/* Define to 1 if you have the `dcgettext' function. */
|
||||
#undef HAVE_DCGETTEXT
|
||||
|
||||
/* 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. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `feof_unlocked' function. */
|
||||
/* Define to 1 if you have the `feof_unlocked' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `getcwd' function. */
|
||||
/* Define to 1 if you have the `getcwd' function. */
|
||||
#undef HAVE_GETCWD
|
||||
|
||||
/* Define if you have the `getegid' function. */
|
||||
/* Define to 1 if you have the `getegid' function. */
|
||||
#undef HAVE_GETEGID
|
||||
|
||||
/* Define if you have the `geteuid' function. */
|
||||
/* Define to 1 if you have the `geteuid' function. */
|
||||
#undef HAVE_GETEUID
|
||||
|
||||
/* Define if you have the `getgid' function. */
|
||||
/* Define to 1 if you have the `getgid' function. */
|
||||
#undef HAVE_GETGID
|
||||
|
||||
/* Define if you have the `getpagesize' function. */
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Define if you have the `getuid' function. */
|
||||
/* Define to 1 if you have the `getuid' function. */
|
||||
#undef HAVE_GETUID
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `isascii' function. */
|
||||
/* Define to 1 if you have the `isascii' function. */
|
||||
#undef HAVE_ISASCII
|
||||
|
||||
/* Define if you have the `iswprint' function. */
|
||||
/* Define to 1 if you have the `iswprint' function. */
|
||||
#undef HAVE_ISWPRINT
|
||||
|
||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||
@@ -108,127 +109,127 @@
|
||||
/* Define if your <locale.h> file defines 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
|
||||
|
||||
/* Define if you have the <locale.h> header file. */
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#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
|
||||
|
||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||
#undef HAVE_MBRTOWC
|
||||
|
||||
/* Define if you have the `mbsinit' function. */
|
||||
/* Define to 1 if you have the `mbsinit' function. */
|
||||
#undef HAVE_MBSINIT
|
||||
|
||||
/* Define if you have the `memchr' function. */
|
||||
/* Define to 1 if you have the `memchr' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `mempcpy' function. */
|
||||
/* Define to 1 if you have the `mempcpy' function. */
|
||||
#undef HAVE_MEMPCPY
|
||||
|
||||
/* Define if you have the `mkstemp' function. */
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `munmap' function. */
|
||||
/* Define to 1 if you have the `munmap' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `putenv' function. */
|
||||
/* Define to 1 if you have the `putenv' function. */
|
||||
#undef HAVE_PUTENV
|
||||
|
||||
/* Define if you have the `setenv' function. */
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
#undef HAVE_SETENV
|
||||
|
||||
/* Define if you have the `setlocale' function. */
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the <stdint.h> header file. */
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `stpcpy' function. */
|
||||
/* Define to 1 if you have the `stpcpy' function. */
|
||||
#undef HAVE_STPCPY
|
||||
|
||||
/* Define if you have the `strcasecmp' function. */
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#undef HAVE_STRCASECMP
|
||||
|
||||
/* Define if you have the `strchr' function. */
|
||||
/* Define to 1 if you have the `strchr' function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define if you have the `strdup' function. */
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#undef HAVE_STRDUP
|
||||
|
||||
/* Define if you have the `strerror' function. */
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `strndup' function. */
|
||||
/* Define to 1 if you have the `strndup' function. */
|
||||
#undef HAVE_STRNDUP
|
||||
|
||||
/* Define if you have the `strnlen' function. */
|
||||
/* Define to 1 if you have the `strnlen' function. */
|
||||
#undef HAVE_STRNLEN
|
||||
|
||||
/* Define if you have the `strspn' function. */
|
||||
/* Define to 1 if you have the `strspn' function. */
|
||||
#undef HAVE_STRSPN
|
||||
|
||||
/* Define if you have the `strtoul' function. */
|
||||
/* Define to 1 if you have the `strtoul' function. */
|
||||
#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
|
||||
|
||||
/* 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
|
||||
|
||||
/* 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
|
||||
|
||||
/* Define if you have the `tsearch' function. */
|
||||
/* Define to 1 if you have the `tsearch' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `vprintf' function. */
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#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
|
||||
|
||||
/* Define if you have the <wctype.h> header file. */
|
||||
/* Define to 1 if you have the <wctype.h> header file. */
|
||||
#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
|
||||
|
||||
/* Define if you have the `__argz_next' function. */
|
||||
/* Define to 1 if you have the `__argz_next' function. */
|
||||
#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
|
||||
|
||||
/* Define as const if the declaration of iconv() needs const. */
|
||||
@@ -248,7 +249,7 @@
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#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
|
||||
|
||||
/* Define to 1 if strerror_r returns char *. */
|
||||
@@ -263,14 +264,14 @@
|
||||
/* Define to 1 for GNU C library extensions. */
|
||||
#undef _GNU_SOURCE
|
||||
|
||||
/* Define if on MINIX. */
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define if the system does not provide POSIX.1 features except with this
|
||||
defined. */
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#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
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
Vendored
+2
-2
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2001-10-05'
|
||||
timestamp='2001-11-08'
|
||||
|
||||
# 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
|
||||
@@ -947,7 +947,7 @@ EOF
|
||||
exit 0 ;;
|
||||
M68*:*:R3V[567]*:*)
|
||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
|
||||
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
|
||||
OS_REL=''
|
||||
test -r /etc/.relid \
|
||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||
|
||||
Vendored
+13
-9
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2001-10-05'
|
||||
timestamp='2001-11-16'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -245,14 +245,13 @@ case $basic_machine in
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||
| pyramid \
|
||||
| s390 | s390x \
|
||||
| sh | sh[34] | sh[34]eb | shbe | shle \
|
||||
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||
| stormy16 | strongarm \
|
||||
| strongarm \
|
||||
| tahoe | thumb | tic80 | tron \
|
||||
| v850 \
|
||||
| we32k \
|
||||
| x86 | xscale \
|
||||
| x86 | xscale | xstormy16 \
|
||||
| z8k)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
@@ -304,14 +303,13 @@ case $basic_machine in
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||
| pyramid-* \
|
||||
| romp-* | rs6000-* \
|
||||
| s390-* | s390x-* \
|
||||
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
|
||||
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \
|
||||
| sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
|
||||
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
|
||||
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
|
||||
| v850-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
|
||||
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
|
||||
| ymp-* \
|
||||
| z8k-*)
|
||||
;;
|
||||
@@ -786,6 +784,12 @@ case $basic_machine in
|
||||
rtpc | rtpc-*)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
s390 | s390-*)
|
||||
basic_machine=s390-ibm
|
||||
;;
|
||||
s390x | s390x-*)
|
||||
basic_machine=s390x-ibm
|
||||
;;
|
||||
sa29200)
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
@@ -1057,7 +1061,7 @@ case $os in
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* \
|
||||
| -aos* | -atheos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||
@@ -1070,7 +1074,7 @@ case $os in
|
||||
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos*)
|
||||
| -os2* | -vos* | -palmos* | -uclinux*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.30
|
||||
1.30d
|
||||
|
||||
+7
-7
@@ -16,12 +16,12 @@
|
||||
# 02111-1307 USA
|
||||
|
||||
# We need a recent Autoconf to run a recent Autotest.
|
||||
AC_PREREQ(2.52e)
|
||||
AC_PREREQ(2.52g)
|
||||
|
||||
AC_INIT([GNU Bison], [1.30a], [[email protected]])
|
||||
AC_INIT([GNU Bison], [1.30e], [[email protected]])
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
|
||||
AM_INIT_AUTOMAKE([bison], [1.30a])
|
||||
AM_INIT_AUTOMAKE([bison], [1.30e])
|
||||
AM_CONFIG_HEADER(config.h:config.hin)
|
||||
|
||||
# Initialize the test suite.
|
||||
@@ -89,13 +89,13 @@ jm_PREREQ_QUOTEARG
|
||||
jm_PREREQ_ERROR
|
||||
AM_WITH_DMALLOC
|
||||
|
||||
ALL_LINGUAS="de es et fr ja nl tr ru"
|
||||
AM_GNU_GETTEXT
|
||||
ALL_LINGUAS="de es et fr ja nl ru sv tr"
|
||||
AM_GNU_GETTEXT(, need-ngettext)
|
||||
|
||||
# This is necessary so that .o files in LIBOBJS are also built via
|
||||
# the ANSI2KNR-filtering rules.
|
||||
LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
|
||||
AC_SUBST(LIBOBJS)
|
||||
LIB@&t@OBJS=`echo $LIB@&t@OBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
|
||||
AC_SUBST(LIB@&t@OBJS)
|
||||
|
||||
AC_OUTPUT([Makefile
|
||||
config/Makefile
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
+106
-106
@@ -31,115 +31,115 @@ instead of in the original English.
|
||||
|
||||
Indirect:
|
||||
bison.info-1: 1313
|
||||
bison.info-2: 50689
|
||||
bison.info-3: 100579
|
||||
bison.info-4: 147579
|
||||
bison.info-5: 197449
|
||||
bison.info-2: 50632
|
||||
bison.info-3: 100395
|
||||
bison.info-4: 147417
|
||||
bison.info-5: 197287
|
||||
|
||||
Tag Table:
|
||||
(Indirect)
|
||||
Node: Top1313
|
||||
Node: Introduction8967
|
||||
Node: Conditions10242
|
||||
Node: Copying11706
|
||||
Node: Concepts30909
|
||||
Node: Language and Grammar31988
|
||||
Node: Grammar in Bison37004
|
||||
Node: Semantic Values38928
|
||||
Node: Semantic Actions41029
|
||||
Node: Locations Overview42218
|
||||
Node: Bison Parser43665
|
||||
Node: Stages45977
|
||||
Node: Grammar Layout47260
|
||||
Node: Examples48517
|
||||
Node: RPN Calc49715
|
||||
Node: Rpcalc Decls50689
|
||||
Node: Rpcalc Rules52276
|
||||
Node: Rpcalc Input54076
|
||||
Node: Rpcalc Line55537
|
||||
Node: Rpcalc Expr56652
|
||||
Node: Rpcalc Lexer58597
|
||||
Node: Rpcalc Main61169
|
||||
Node: Rpcalc Error61567
|
||||
Node: Rpcalc Gen62575
|
||||
Node: Rpcalc Compile63724
|
||||
Node: Infix Calc64599
|
||||
Node: Simple Error Recovery67306
|
||||
Node: Location Tracking Calc69195
|
||||
Node: Ltcalc Decls69925
|
||||
Node: Ltcalc Rules70834
|
||||
Node: Ltcalc Lexer72895
|
||||
Node: Multi-function Calc75233
|
||||
Node: Mfcalc Decl76800
|
||||
Node: Mfcalc Rules78823
|
||||
Node: Mfcalc Symtab80203
|
||||
Node: Exercises86576
|
||||
Node: Grammar File87082
|
||||
Node: Grammar Outline87930
|
||||
Node: C Declarations88664
|
||||
Node: Bison Declarations89244
|
||||
Node: Grammar Rules89656
|
||||
Node: C Code90116
|
||||
Node: Symbols91046
|
||||
Node: Rules96127
|
||||
Node: Recursion97766
|
||||
Node: Semantics99485
|
||||
Node: Value Type100579
|
||||
Node: Multiple Types101251
|
||||
Node: Actions102268
|
||||
Node: Action Types105053
|
||||
Node: Mid-Rule Actions106356
|
||||
Node: Locations111926
|
||||
Node: Location Type112574
|
||||
Node: Actions and Locations113132
|
||||
Node: Location Default Action115288
|
||||
Node: Declarations116751
|
||||
Node: Token Decl118070
|
||||
Node: Precedence Decl120083
|
||||
Node: Union Decl121634
|
||||
Node: Type Decl122478
|
||||
Node: Expect Decl123384
|
||||
Node: Start Decl124930
|
||||
Node: Pure Decl125308
|
||||
Node: Decl Summary126985
|
||||
Node: Multiple Parsers133113
|
||||
Node: Interface134607
|
||||
Node: Parser Function135479
|
||||
Node: Lexical136314
|
||||
Node: Calling Convention137720
|
||||
Node: Token Values140491
|
||||
Node: Token Positions141640
|
||||
Node: Pure Calling142525
|
||||
Node: Error Reporting145457
|
||||
Node: Action Features147579
|
||||
Node: Algorithm150874
|
||||
Node: Look-Ahead153167
|
||||
Node: Shift/Reduce155299
|
||||
Node: Precedence158211
|
||||
Node: Why Precedence158862
|
||||
Node: Using Precedence160727
|
||||
Node: Precedence Examples161695
|
||||
Node: How Precedence162396
|
||||
Node: Contextual Precedence163545
|
||||
Node: Parser States165336
|
||||
Node: Reduce/Reduce166579
|
||||
Node: Mystery Conflicts170140
|
||||
Node: Stack Overflow173526
|
||||
Node: Error Recovery174899
|
||||
Node: Context Dependency180035
|
||||
Node: Semantic Tokens180883
|
||||
Node: Lexical Tie-ins183900
|
||||
Node: Tie-in Recovery185448
|
||||
Node: Debugging187620
|
||||
Node: Invocation190921
|
||||
Node: Bison Options192173
|
||||
Node: Environment Variables195723
|
||||
Node: Option Cross Key196571
|
||||
Node: VMS Invocation197449
|
||||
Node: Table of Symbols198233
|
||||
Node: Glossary206201
|
||||
Node: Copying This Manual212505
|
||||
Node: GNU Free Documentation License212714
|
||||
Node: Index232579
|
||||
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
|
||||
|
||||
+6
-7
@@ -34,7 +34,7 @@ File: bison.info, Node: Top, Next: Introduction, Up: (dir)
|
||||
Bison
|
||||
*****
|
||||
|
||||
This manual documents version 1.30a of Bison, updated 5 November
|
||||
This manual documents version 1.30e of Bison, updated 12 November
|
||||
2001.
|
||||
|
||||
* Menu:
|
||||
@@ -238,7 +238,7 @@ Bison in detail.
|
||||
it Yacc-compatible. Wilfred Hansen of Carnegie Mellon University added
|
||||
multi-character string literals and other features.
|
||||
|
||||
This edition corresponds to version 1.30a of Bison.
|
||||
This edition corresponds to version 1.30e of Bison.
|
||||
|
||||
|
||||
File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top
|
||||
@@ -709,12 +709,11 @@ matter of lexicography, not grammar.)
|
||||
Here is a simple C function subdivided into tokens:
|
||||
|
||||
int /* keyword `int' */
|
||||
square (x) /* identifier, open-paren, */
|
||||
/* identifier, close-paren */
|
||||
int x; /* keyword `int', identifier, semicolon */
|
||||
square (int x) /* identifier, open-paren, identifier,
|
||||
identifier, close-paren */
|
||||
{ /* open-brace */
|
||||
return x * x; /* keyword `return', identifier, */
|
||||
/* asterisk, identifier, semicolon */
|
||||
return x * x; /* keyword `return', identifier, asterisk,
|
||||
identifier, semicolon */
|
||||
} /* close-brace */
|
||||
|
||||
The syntactic groupings of C include the expression, the statement,
|
||||
|
||||
+43
-47
@@ -385,21 +385,21 @@ Compiling the Parser File
|
||||
Here is how to compile and run the parser file:
|
||||
|
||||
# List files in current directory.
|
||||
% ls
|
||||
$ ls
|
||||
rpcalc.tab.c rpcalc.y
|
||||
|
||||
# Compile the Bison parser.
|
||||
# `-lm' tells compiler to search math library for `pow'.
|
||||
% cc rpcalc.tab.c -lm -o rpcalc
|
||||
$ cc rpcalc.tab.c -lm -o rpcalc
|
||||
|
||||
# List files again.
|
||||
% ls
|
||||
$ ls
|
||||
rpcalc rpcalc.tab.c rpcalc.y
|
||||
|
||||
The file `rpcalc' now contains the executable code. Here is an
|
||||
example session using `rpcalc'.
|
||||
|
||||
% rpcalc
|
||||
$ rpcalc
|
||||
4 9 +
|
||||
13
|
||||
3 7 + 3 4 5 *+-
|
||||
@@ -411,7 +411,7 @@ example session using `rpcalc'.
|
||||
3 4 ^ Exponentiation
|
||||
81
|
||||
^D End-of-file indicator
|
||||
%
|
||||
$
|
||||
|
||||
|
||||
File: bison.info, Node: Infix Calc, Next: Simple Error Recovery, Prev: RPN Calc, Up: Examples
|
||||
@@ -485,7 +485,7 @@ Precedence.
|
||||
|
||||
Here is a sample run of `calc.y':
|
||||
|
||||
% calc
|
||||
$ calc
|
||||
4 + 4.5 - (34/(8*3+-3))
|
||||
6.880952381
|
||||
-56 + 2
|
||||
@@ -539,12 +539,10 @@ Location Tracking Calculator: `ltcalc'
|
||||
======================================
|
||||
|
||||
This example extends the infix notation calculator with location
|
||||
tracking. This feature will be used to improve error reporting, and
|
||||
provide better error messages.
|
||||
|
||||
For the sake of clarity, we will switch for this example to an
|
||||
integer calculator, since most of the work needed to use locations will
|
||||
be done in the lexical analyser.
|
||||
tracking. This feature will be used to improve the error messages. For
|
||||
the sake of clarity, this example is a simple integer calculator, since
|
||||
most of the work needed to use locations will be done in the lexical
|
||||
analyser.
|
||||
|
||||
* Menu:
|
||||
|
||||
@@ -558,8 +556,8 @@ File: bison.info, Node: Ltcalc Decls, Next: Ltcalc Rules, Up: Location Tracki
|
||||
Declarations for `ltcalc'
|
||||
-------------------------
|
||||
|
||||
The C and Bison declarations for the location tracking calculator
|
||||
are the same as the declarations for the infix notation calculator.
|
||||
The C and Bison declarations for the location tracking calculator are
|
||||
the same as the declarations for the infix notation calculator.
|
||||
|
||||
/* Location tracking calculator. */
|
||||
|
||||
@@ -578,11 +576,11 @@ are the same as the declarations for the infix notation calculator.
|
||||
|
||||
%% /* Grammar follows */
|
||||
|
||||
In the code above, there are no declarations specific to locations.
|
||||
Defining a data type for storing locations is not needed: we will use
|
||||
the type provided by default (*note Data Types of Locations: Location
|
||||
Type.), which is a four member structure with the following integer
|
||||
fields: `first_line', `first_column', `last_line' and `last_column'.
|
||||
Note there are no declarations specific to locations. Defining a data
|
||||
type for storing locations is not needed: we will use the type provided
|
||||
by default (*note Data Types of Locations: Location Type.), which is a
|
||||
four member structure with the following integer fields: `first_line',
|
||||
`first_column', `last_line' and `last_column'.
|
||||
|
||||
|
||||
File: bison.info, Node: Ltcalc Rules, Next: Ltcalc Lexer, Prev: Ltcalc Decls, Up: Location Tracking Calc
|
||||
@@ -590,10 +588,10 @@ File: bison.info, Node: Ltcalc Rules, Next: Ltcalc Lexer, Prev: Ltcalc Decls,
|
||||
Grammar Rules for `ltcalc'
|
||||
--------------------------
|
||||
|
||||
Whether you choose to handle locations or not has no effect on the
|
||||
syntax of your language. Therefore, grammar rules for this example
|
||||
will be very close to those of the previous example: we will only
|
||||
modify them to benefit from the new informations we will have.
|
||||
Whether handling locations or not has no effect on the syntax of your
|
||||
language. Therefore, grammar rules for this example will be very close
|
||||
to those of the previous example: we will only modify them to benefit
|
||||
from the new information.
|
||||
|
||||
Here, we will use locations to report divisions by zero, and locate
|
||||
the wrong expressions or subexpressions.
|
||||
@@ -617,9 +615,9 @@ the wrong expressions or subexpressions.
|
||||
else
|
||||
{
|
||||
$$ = 1;
|
||||
printf("Division by zero, l%d,c%d-l%d,c%d",
|
||||
@3.first_line, @3.first_column,
|
||||
@3.last_line, @3.last_column);
|
||||
fprintf (stderr, "%d.%d-%d.%d: division by zero",
|
||||
@3.first_line, @3.first_column,
|
||||
@3.last_line, @3.last_column);
|
||||
}
|
||||
}
|
||||
| '-' exp %preg NEG { $$ = -$2; }
|
||||
@@ -630,14 +628,12 @@ the wrong expressions or subexpressions.
|
||||
using the pseudo-variables `@N' for rule components, and the
|
||||
pseudo-variable `@$' for groupings.
|
||||
|
||||
In this example, we never assign a value to `@$', because the output
|
||||
parser can do this automatically. By default, before executing the C
|
||||
code of each action, `@$' is set to range from the beginning of `@1' to
|
||||
the end of `@N', for a rule with N components.
|
||||
|
||||
Of course, this behavior can be redefined (*note Default Action for
|
||||
Locations: Location Default Action.), and for very specific rules, `@$'
|
||||
can be computed by hand.
|
||||
We don't need to assign a value to `@$': the output parser does it
|
||||
automatically. By default, before executing the C code of each action,
|
||||
`@$' is set to range from the beginning of `@1' to the end of `@N', for
|
||||
a rule with N components. This behavior can be redefined (*note
|
||||
Default Action for Locations: Location Default Action.), and for very
|
||||
specific rules, `@$' can be computed by hand.
|
||||
|
||||
|
||||
File: bison.info, Node: Ltcalc Lexer, Prev: Ltcalc Rules, Up: Location Tracking Calc
|
||||
@@ -647,10 +643,10 @@ The `ltcalc' Lexical Analyzer.
|
||||
|
||||
Until now, we relied on Bison's defaults to enable location
|
||||
tracking. The next step is to rewrite the lexical analyser, and make it
|
||||
able to feed the parser with locations of tokens, as he already does
|
||||
for semantic values.
|
||||
able to feed the parser with the token locations, as it already does for
|
||||
semantic values.
|
||||
|
||||
To do so, we must take into account every single character of the
|
||||
To this end, we must take into account every single character of the
|
||||
input text, to avoid the computed locations of being fuzzy or wrong:
|
||||
|
||||
int
|
||||
@@ -695,14 +691,14 @@ input text, to avoid the computed locations of being fuzzy or wrong:
|
||||
return c;
|
||||
}
|
||||
|
||||
Basically, the lexical analyzer does the same processing as before:
|
||||
it skips blanks and tabs, and reads numbers or single-character tokens.
|
||||
In addition to this, it updates the `yylloc' global variable (of type
|
||||
`YYLTYPE'), where the location of tokens is stored.
|
||||
Basically, the lexical analyzer performs the same processing as
|
||||
before: it skips blanks and tabs, and reads numbers or single-character
|
||||
tokens. In addition, it updates `yylloc', the global variable (of type
|
||||
`YYLTYPE') containing the token's location.
|
||||
|
||||
Now, each time this function returns a token, the parser has it's
|
||||
number as well as it's semantic value, and it's position in the text.
|
||||
The last needed change is to initialize `yylloc', for example in the
|
||||
Now, each time this function returns a token, the parser has its
|
||||
number as well as its semantic value, and its location in the text. The
|
||||
last needed change is to initialize `yylloc', for example in the
|
||||
controlling function:
|
||||
|
||||
int
|
||||
@@ -715,7 +711,7 @@ controlling function:
|
||||
|
||||
Remember that computing locations is not a matter of syntax. Every
|
||||
character must be associated to a location update, whether it is in
|
||||
valid input, in comments, in literal strings, and so on...
|
||||
valid input, in comments, in literal strings, and so on.
|
||||
|
||||
|
||||
File: bison.info, Node: Multi-function Calc, Next: Exercises, Prev: Location Tracking Calc, Up: Examples
|
||||
@@ -741,7 +737,7 @@ At the same time, we will add memory to the calculator, by allowing you
|
||||
to create named variables, store values in them, and use them later.
|
||||
Here is a sample session with the multi-function calculator:
|
||||
|
||||
% mfcalc
|
||||
$ mfcalc
|
||||
pi = 3.141592653589
|
||||
3.1415926536
|
||||
sin(pi)
|
||||
@@ -754,7 +750,7 @@ Here is a sample session with the multi-function calculator:
|
||||
0.8329091229
|
||||
exp(ln(beta1))
|
||||
2.3000000000
|
||||
%
|
||||
$
|
||||
|
||||
Note that multiple assignment and nested function calls are
|
||||
permitted.
|
||||
|
||||
+9
-8
@@ -623,19 +623,20 @@ Suppressing Conflict Warnings
|
||||
|
||||
Bison normally warns if there are any conflicts in the grammar
|
||||
(*note Shift/Reduce Conflicts: Shift/Reduce.), but most real grammars
|
||||
have harmless shift/reduce conflicts which are resolved in a
|
||||
predictable way and would be difficult to eliminate. It is desirable
|
||||
to suppress the warning about these conflicts unless the number of
|
||||
conflicts changes. You can do this with the `%expect' declaration.
|
||||
have harmless shift/reduce conflicts which are resolved in a predictable
|
||||
way and would be difficult to eliminate. It is desirable to suppress
|
||||
the warning about these conflicts unless the number of conflicts
|
||||
changes. You can do this with the `%expect' declaration.
|
||||
|
||||
The declaration looks like this:
|
||||
|
||||
%expect N
|
||||
|
||||
Here N is a decimal integer. The declaration says there should be no
|
||||
warning if there are N shift/reduce conflicts and no reduce/reduce
|
||||
conflicts. The usual warning is given if there are either more or fewer
|
||||
conflicts, or if there are any reduce/reduce conflicts.
|
||||
Here N is a decimal integer. The declaration says there should be
|
||||
no warning if there are N shift/reduce conflicts and no reduce/reduce
|
||||
conflicts. An error, instead of the usual warning, is given if there
|
||||
are either more or fewer conflicts, or if there are any reduce/reduce
|
||||
conflicts.
|
||||
|
||||
In general, using `%expect' involves these steps:
|
||||
|
||||
|
||||
+98
-86
@@ -447,16 +447,26 @@ lexicography, not grammar.)
|
||||
|
||||
Here is a simple C function subdivided into tokens:
|
||||
|
||||
@ifinfo
|
||||
@example
|
||||
int /* @r{keyword `int'} */
|
||||
square (x) /* @r{identifier, open-paren,} */
|
||||
/* @r{identifier, close-paren} */
|
||||
int x; /* @r{keyword `int', identifier, semicolon} */
|
||||
square (int x) /* @r{identifier, open-paren, identifier,}
|
||||
@r{identifier, close-paren} */
|
||||
@{ /* @r{open-brace} */
|
||||
return x * x; /* @r{keyword `return', identifier,} */
|
||||
/* @r{asterisk, identifier, semicolon} */
|
||||
return x * x; /* @r{keyword `return', identifier, asterisk,
|
||||
identifier, semicolon} */
|
||||
@} /* @r{close-brace} */
|
||||
@end example
|
||||
@end ifinfo
|
||||
@ifnotinfo
|
||||
@example
|
||||
int /* @r{keyword `int'} */
|
||||
square (int x) /* @r{identifier, open-paren, identifier, identifier, close-paren} */
|
||||
@{ /* @r{open-brace} */
|
||||
return x * x; /* @r{keyword `return', identifier, asterisk, identifier, semicolon} */
|
||||
@} /* @r{close-brace} */
|
||||
@end example
|
||||
@end ifnotinfo
|
||||
|
||||
The syntactic groupings of C include the expression, the statement, the
|
||||
declaration, and the function definition. These are represented in the
|
||||
@@ -1204,19 +1214,19 @@ Here is how to compile and run the parser file:
|
||||
@example
|
||||
@group
|
||||
# @r{List files in current directory.}
|
||||
% ls
|
||||
$ @kbd{ls}
|
||||
rpcalc.tab.c rpcalc.y
|
||||
@end group
|
||||
|
||||
@group
|
||||
# @r{Compile the Bison parser.}
|
||||
# @r{@samp{-lm} tells compiler to search math library for @code{pow}.}
|
||||
% cc rpcalc.tab.c -lm -o rpcalc
|
||||
$ @kbd{cc rpcalc.tab.c -lm -o rpcalc}
|
||||
@end group
|
||||
|
||||
@group
|
||||
# @r{List files again.}
|
||||
% ls
|
||||
$ @kbd{ls}
|
||||
rpcalc rpcalc.tab.c rpcalc.y
|
||||
@end group
|
||||
@end example
|
||||
@@ -1225,19 +1235,19 @@ The file @file{rpcalc} now contains the executable code. Here is an
|
||||
example session using @code{rpcalc}.
|
||||
|
||||
@example
|
||||
% rpcalc
|
||||
4 9 +
|
||||
$ @kbd{rpcalc}
|
||||
@kbd{4 9 +}
|
||||
13
|
||||
3 7 + 3 4 5 *+-
|
||||
@kbd{3 7 + 3 4 5 *+-}
|
||||
-13
|
||||
3 7 + 3 4 5 * + - n @r{Note the unary minus, @samp{n}}
|
||||
@kbd{3 7 + 3 4 5 * + - n} @r{Note the unary minus, @samp{n}}
|
||||
13
|
||||
5 6 / 4 n +
|
||||
@kbd{5 6 / 4 n +}
|
||||
-3.166666667
|
||||
3 4 ^ @r{Exponentiation}
|
||||
@kbd{3 4 ^} @r{Exponentiation}
|
||||
81
|
||||
^D @r{End-of-file indicator}
|
||||
%
|
||||
@kbd{^D} @r{End-of-file indicator}
|
||||
$
|
||||
@end example
|
||||
|
||||
@node Infix Calc
|
||||
@@ -1317,12 +1327,12 @@ Here is a sample run of @file{calc.y}:
|
||||
|
||||
@need 500
|
||||
@example
|
||||
% calc
|
||||
4 + 4.5 - (34/(8*3+-3))
|
||||
$ @kbd{calc}
|
||||
@kbd{4 + 4.5 - (34/(8*3+-3))}
|
||||
6.880952381
|
||||
-56 + 2
|
||||
@kbd{-56 + 2}
|
||||
-54
|
||||
3 ^ 2
|
||||
@kbd{3 ^ 2}
|
||||
9
|
||||
@end example
|
||||
|
||||
@@ -1374,13 +1384,11 @@ Bison programs.
|
||||
@cindex @code{ltcalc}
|
||||
@cindex calculator, location tracking
|
||||
|
||||
This example extends the infix notation calculator with location tracking.
|
||||
This feature will be used to improve error reporting, and provide better
|
||||
error messages.
|
||||
|
||||
For the sake of clarity, we will switch for this example to an integer
|
||||
calculator, since most of the work needed to use locations will be done
|
||||
in the lexical analyser.
|
||||
This example extends the infix notation calculator with location
|
||||
tracking. This feature will be used to improve the error messages. For
|
||||
the sake of clarity, this example is a simple integer calculator, since
|
||||
most of the work needed to use locations will be done in the lexical
|
||||
analyser.
|
||||
|
||||
@menu
|
||||
* Decls: Ltcalc Decls. Bison and C declarations for ltcalc.
|
||||
@@ -1391,8 +1399,8 @@ in the lexical analyser.
|
||||
@node Ltcalc Decls
|
||||
@subsection Declarations for @code{ltcalc}
|
||||
|
||||
The C and Bison declarations for the location tracking calculator are the same
|
||||
as the declarations for the infix notation calculator.
|
||||
The C and Bison declarations for the location tracking calculator are
|
||||
the same as the declarations for the infix notation calculator.
|
||||
|
||||
@example
|
||||
/* Location tracking calculator. */
|
||||
@@ -1413,22 +1421,24 @@ as the declarations for the infix notation calculator.
|
||||
%% /* Grammar follows */
|
||||
@end example
|
||||
|
||||
In the code above, there are no declarations specific to locations. Defining
|
||||
a data type for storing locations is not needed: we will use the type provided
|
||||
by default (@pxref{Location Type, ,Data Types of Locations}), which is a four
|
||||
member structure with the following integer fields: @code{first_line},
|
||||
@code{first_column}, @code{last_line} and @code{last_column}.
|
||||
@noindent
|
||||
Note there are no declarations specific to locations. Defining a data
|
||||
type for storing locations is not needed: we will use the type provided
|
||||
by default (@pxref{Location Type, ,Data Types of Locations}), which is a
|
||||
four member structure with the following integer fields:
|
||||
@code{first_line}, @code{first_column}, @code{last_line} and
|
||||
@code{last_column}.
|
||||
|
||||
@node Ltcalc Rules
|
||||
@subsection Grammar Rules for @code{ltcalc}
|
||||
|
||||
Whether you choose to handle locations or not has no effect on the syntax of
|
||||
your language. Therefore, grammar rules for this example will be very close to
|
||||
those of the previous example: we will only modify them to benefit from the new
|
||||
informations we will have.
|
||||
Whether handling locations or not has no effect on the syntax of your
|
||||
language. Therefore, grammar rules for this example will be very close
|
||||
to those of the previous example: we will only modify them to benefit
|
||||
from the new information.
|
||||
|
||||
Here, we will use locations to report divisions by zero, and locate the wrong
|
||||
expressions or subexpressions.
|
||||
Here, we will use locations to report divisions by zero, and locate the
|
||||
wrong expressions or subexpressions.
|
||||
|
||||
@example
|
||||
@group
|
||||
@@ -1449,17 +1459,17 @@ exp : NUM @{ $$ = $1; @}
|
||||
| exp '-' exp @{ $$ = $1 - $3; @}
|
||||
| exp '*' exp @{ $$ = $1 * $3; @}
|
||||
@end group
|
||||
| exp '/' exp
|
||||
@group
|
||||
| exp '/' exp
|
||||
@{
|
||||
if ($3)
|
||||
$$ = $1 / $3;
|
||||
else
|
||||
@{
|
||||
$$ = 1;
|
||||
printf("Division by zero, l%d,c%d-l%d,c%d",
|
||||
@@3.first_line, @@3.first_column,
|
||||
@@3.last_line, @@3.last_column);
|
||||
fprintf (stderr, "%d.%d-%d.%d: division by zero",
|
||||
@@3.first_line, @@3.first_column,
|
||||
@@3.last_line, @@3.last_column);
|
||||
@}
|
||||
@}
|
||||
@end group
|
||||
@@ -1474,25 +1484,24 @@ This code shows how to reach locations inside of semantic actions, by
|
||||
using the pseudo-variables @code{@@@var{n}} for rule components, and the
|
||||
pseudo-variable @code{@@$} for groupings.
|
||||
|
||||
In this example, we never assign a value to @code{@@$}, because the
|
||||
output parser can do this automatically. By default, before executing
|
||||
the C code of each action, @code{@@$} is set to range from the beginning
|
||||
of @code{@@1} to the end of @code{@@@var{n}}, for a rule with @var{n}
|
||||
components.
|
||||
|
||||
Of course, this behavior can be redefined (@pxref{Location Default
|
||||
Action, , Default Action for Locations}), and for very specific rules,
|
||||
@code{@@$} can be computed by hand.
|
||||
We don't need to assign a value to @code{@@$}: the output parser does it
|
||||
automatically. By default, before executing the C code of each action,
|
||||
@code{@@$} is set to range from the beginning of @code{@@1} to the end
|
||||
of @code{@@@var{n}}, for a rule with @var{n} components. This behavior
|
||||
can be redefined (@pxref{Location Default Action, , Default Action for
|
||||
Locations}), and for very specific rules, @code{@@$} can be computed by
|
||||
hand.
|
||||
|
||||
@node Ltcalc Lexer
|
||||
@subsection The @code{ltcalc} Lexical Analyzer.
|
||||
|
||||
Until now, we relied on Bison's defaults to enable location tracking. The next
|
||||
step is to rewrite the lexical analyser, and make it able to feed the parser
|
||||
with locations of tokens, as he already does for semantic values.
|
||||
Until now, we relied on Bison's defaults to enable location
|
||||
tracking. The next step is to rewrite the lexical analyser, and make it
|
||||
able to feed the parser with the token locations, as it already does for
|
||||
semantic values.
|
||||
|
||||
To do so, we must take into account every single character of the input text,
|
||||
to avoid the computed locations of being fuzzy or wrong:
|
||||
To this end, we must take into account every single character of the
|
||||
input text, to avoid the computed locations of being fuzzy or wrong:
|
||||
|
||||
@example
|
||||
@group
|
||||
@@ -1542,17 +1551,18 @@ yylex (void)
|
||||
@}
|
||||
@end example
|
||||
|
||||
Basically, the lexical analyzer does the same processing as before: it skips
|
||||
blanks and tabs, and reads numbers or single-character tokens. In addition
|
||||
to this, it updates the @code{yylloc} global variable (of type @code{YYLTYPE}),
|
||||
where the location of tokens is stored.
|
||||
Basically, the lexical analyzer performs the same processing as before:
|
||||
it skips blanks and tabs, and reads numbers or single-character tokens.
|
||||
In addition, it updates @code{yylloc}, the global variable (of type
|
||||
@code{YYLTYPE}) containing the token's location.
|
||||
|
||||
Now, each time this function returns a token, the parser has it's number as
|
||||
well as it's semantic value, and it's position in the text. The last needed
|
||||
change is to initialize @code{yylloc}, for example in the controlling
|
||||
function:
|
||||
Now, each time this function returns a token, the parser has its number
|
||||
as well as its semantic value, and its location in the text. The last
|
||||
needed change is to initialize @code{yylloc}, for example in the
|
||||
controlling function:
|
||||
|
||||
@example
|
||||
@group
|
||||
int
|
||||
main (void)
|
||||
@{
|
||||
@@ -1560,11 +1570,12 @@ main (void)
|
||||
yylloc.first_column = yylloc.last_column = 0;
|
||||
return yyparse ();
|
||||
@}
|
||||
@end group
|
||||
@end example
|
||||
|
||||
Remember that computing locations is not a matter of syntax. Every character
|
||||
must be associated to a location update, whether it is in valid input, in
|
||||
comments, in literal strings, and so on...
|
||||
Remember that computing locations is not a matter of syntax. Every
|
||||
character must be associated to a location update, whether it is in
|
||||
valid input, in comments, in literal strings, and so on.
|
||||
|
||||
@node Multi-function Calc
|
||||
@section Multi-Function Calculator: @code{mfcalc}
|
||||
@@ -1594,20 +1605,20 @@ to create named variables, store values in them, and use them later.
|
||||
Here is a sample session with the multi-function calculator:
|
||||
|
||||
@example
|
||||
% mfcalc
|
||||
pi = 3.141592653589
|
||||
$ @kbd{mfcalc}
|
||||
@kbd{pi = 3.141592653589}
|
||||
3.1415926536
|
||||
sin(pi)
|
||||
@kbd{sin(pi)}
|
||||
0.0000000000
|
||||
alpha = beta1 = 2.3
|
||||
@kbd{alpha = beta1 = 2.3}
|
||||
2.3000000000
|
||||
alpha
|
||||
@kbd{alpha}
|
||||
2.3000000000
|
||||
ln(alpha)
|
||||
@kbd{ln(alpha)}
|
||||
0.8329091229
|
||||
exp(ln(beta1))
|
||||
@kbd{exp(ln(beta1))}
|
||||
2.3000000000
|
||||
%
|
||||
$
|
||||
@end example
|
||||
|
||||
Note that multiple assignment and nested function calls are permitted.
|
||||
@@ -3070,11 +3081,11 @@ terminal symbol. All kinds of token declarations allow
|
||||
@findex %expect
|
||||
|
||||
Bison normally warns if there are any conflicts in the grammar
|
||||
(@pxref{Shift/Reduce, ,Shift/Reduce Conflicts}), but most real grammars have harmless shift/reduce
|
||||
conflicts which are resolved in a predictable way and would be difficult to
|
||||
eliminate. It is desirable to suppress the warning about these conflicts
|
||||
unless the number of conflicts changes. You can do this with the
|
||||
@code{%expect} declaration.
|
||||
(@pxref{Shift/Reduce, ,Shift/Reduce Conflicts}), but most real grammars
|
||||
have harmless shift/reduce conflicts which are resolved in a predictable
|
||||
way and would be difficult to eliminate. It is desirable to suppress
|
||||
the warning about these conflicts unless the number of conflicts
|
||||
changes. You can do this with the @code{%expect} declaration.
|
||||
|
||||
The declaration looks like this:
|
||||
|
||||
@@ -3082,10 +3093,11 @@ The declaration looks like this:
|
||||
%expect @var{n}
|
||||
@end example
|
||||
|
||||
Here @var{n} is a decimal integer. The declaration says there should be no
|
||||
warning if there are @var{n} shift/reduce conflicts and no reduce/reduce
|
||||
conflicts. The usual warning is given if there are either more or fewer
|
||||
conflicts, or if there are any reduce/reduce conflicts.
|
||||
Here @var{n} is a decimal integer. The declaration says there should be
|
||||
no warning if there are @var{n} shift/reduce conflicts and no
|
||||
reduce/reduce conflicts. An error, instead of the usual warning, is
|
||||
given if there are either more or fewer conflicts, or if there are any
|
||||
reduce/reduce conflicts.
|
||||
|
||||
In general, using @code{%expect} involves these steps:
|
||||
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
@set UPDATED 5 November 2001
|
||||
@set UPDATED 12 November 2001
|
||||
@set UPDATED-MONTH November 2001
|
||||
@set EDITION 1.30a
|
||||
@set VERSION 1.30a
|
||||
@set EDITION 1.30e
|
||||
@set VERSION 1.30e
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
@set UPDATED 5 November 2001
|
||||
@set UPDATED 12 November 2001
|
||||
@set UPDATED-MONTH November 2001
|
||||
@set EDITION 1.30a
|
||||
@set VERSION 1.30a
|
||||
@set EDITION 1.30e
|
||||
@set VERSION 1.30e
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
@@ -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]>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
src/LR0.c
|
||||
src/complain.c
|
||||
src/conflicts.c
|
||||
src/derives.c
|
||||
src/files.c
|
||||
src/getargs.c
|
||||
src/lalr.c
|
||||
src/lex.c
|
||||
src/main.c
|
||||
src/nullable.c
|
||||
src/output.c
|
||||
src/print.c
|
||||
src/print_graph.c
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
|
||||
"Last-Translator: Ulrich Drepper <[email protected]>\n"
|
||||
"Language-Team: German <[email protected]>\n"
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
@@ -31,77 +31,78 @@ msgstr ""
|
||||
msgid "fatal error: "
|
||||
msgstr "fataler Fehler: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "durch Reduzierung gelöst"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "durch Schieben gelöst"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "als Fehler betrachtet"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 Schiebe/Reduziere Konflikt"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d Schiebe/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " und"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 Reduziere/Reduziere Konflikt"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d Reduziere/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d Reduziere/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "Zustand %d enthält"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "Konflikte: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d Schiebe/Reduziere"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d Reduziere/Reduziere"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s enthält"
|
||||
msgid "%s contains "
|
||||
msgstr "%s enthält "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,25 +111,16 @@ msgstr ""
|
||||
" $default\treduziere mit Regel %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
msgid "DERIVES"
|
||||
msgstr ""
|
||||
|
||||
#: src/derives.c:48
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s leitet ab"
|
||||
|
||||
#: src/files.c:143
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -208,7 +200,7 @@ msgid ""
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:215 src/lex.c:693
|
||||
#: src/getargs.c:215 src/lex.c:694
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
@@ -228,7 +220,7 @@ msgstr "%s: keine Grammatik-Datei angegeben\n"
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
@@ -278,69 +270,65 @@ msgstr "unerwarteter Typname"
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:682
|
||||
#: src/lex.c:683
|
||||
#, fuzzy, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: die Option »%s« erfordert ein Argument\n"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, 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
|
||||
#: src/output.c:979
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "maximale Tabellengröße (%s) überschritten"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " Typ %d ist %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (Regel %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\takzeptiere\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " KEINE AKTIONEN\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tgehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tFehler (nicht assoziativ)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tgehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -350,24 +338,24 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Grammatik\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "Regel %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -375,7 +363,7 @@ msgstr ""
|
||||
"Terminale und die Regeln un denen sie verwendet werden\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -383,20 +371,29 @@ msgstr ""
|
||||
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " auf der linken Seite:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, fuzzy, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, fuzzy, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||
@@ -461,7 +458,7 @@ msgstr ""
|
||||
msgid "symbol %s redefined"
|
||||
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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "erneute Deklaration des Typs für %s"
|
||||
@@ -476,7 +473,7 @@ msgstr "
|
||||
msgid "multiple %s declarations"
|
||||
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:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "ungültige %start Deklaration"
|
||||
@@ -544,98 +541,98 @@ msgstr "unbekanntes Zeichen: %s"
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "unbeendeter %%guard Fall"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr ""
|
||||
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
|
||||
"gefolgt"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "Regel für %s vorhanden, welches aber ein Token ist"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "zwei @prec Anweisungen nacheinander"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr ""
|
||||
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "Zwei Aktionen am Ende einer Regel"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ungültige Eingabe: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "Eingabegrammatik enthält keine Regeln"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
|
||||
"Regel"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "Token %s und %s haben die selbe nummer %s"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "assoc Werte für %s nd %s widersprechen sich"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "das Startsymbol %s ist undefiniert"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "das Startsymbol %s ist ein Token"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"Nutzlose Nicht-Terminale:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -644,7 +641,7 @@ msgstr ""
|
||||
"Nicht genutzte Terminale:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -653,7 +650,7 @@ msgstr ""
|
||||
"Ungenutzte Regeln:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -663,11 +660,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Wert Sprec Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -677,7 +674,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -692,11 +689,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d wurde niemals reduziert\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s enthält "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -711,19 +703,11 @@ msgstr " und "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d ungenutzte Regel"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -812,6 +796,18 @@ msgstr ""
|
||||
msgid "'"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 Schiebe/Reduziere Konflikt"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 Reduziere/Reduziere Konflikt"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s enthält"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s leitet ab"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -843,6 +839,9 @@ msgstr ""
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "Grenze von %d erreicht, zu viele %s"
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "Führe »set_nullable« aus"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* leer */"
|
||||
|
||||
@@ -869,3 +868,9 @@ msgstr ""
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ 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"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 1998-09-21 10:19+0200\n"
|
||||
"Last-Translator: Nicolás García-Pedrajas <[email protected]>\n"
|
||||
"Language-Team: Spanish <[email protected]>\n"
|
||||
@@ -38,7 +38,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
@@ -63,55 +63,50 @@ msgstr ""
|
||||
msgid "fatal error: "
|
||||
msgstr "error grave: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
|
||||
"como %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "reduce"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "desplaza"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "un error"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 conflicto desplazamiento/reducción"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d conflictos desplazamiento/reducción"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d conflictos desplazamiento/reducción"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " y"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 conflicto reducción/reducción"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d conflictos reducción/reducción"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d conflictos reducción/reducción"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "El estado %d contiene"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "conflictos: "
|
||||
|
||||
@@ -127,7 +122,7 @@ msgstr "conflictos: "
|
||||
# ok
|
||||
# ngp
|
||||
#
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d desplazamiento(s)/reducción(ones)"
|
||||
@@ -144,22 +139,28 @@ msgstr " %d desplazamiento(s)/reducci
|
||||
#
|
||||
# ok
|
||||
# ngp
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d reducción(ones)/reducción(ones)"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s contiene"
|
||||
msgid "%s contains "
|
||||
msgstr "%s contiene "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d conflictos desplazamiento/reducción"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduce usando la regla %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -168,30 +169,16 @@ msgstr ""
|
||||
" $default\treduce usando la regla %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\treduce usando la regla %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\treduce usando la regla %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#, 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
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -271,7 +258,7 @@ msgid ""
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:215 src/lex.c:693
|
||||
#: src/getargs.c:215 src/lex.c:694
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
@@ -294,7 +281,7 @@ msgstr "%s: no se ha especificado ning
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
@@ -346,74 +333,70 @@ msgstr "nombre de tipo sin terminar"
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "use \"...\" para terminales literales multicarácter"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:682
|
||||
#: src/lex.c:683
|
||||
#, fuzzy, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: la opción `%s' requiere un argumento\n"
|
||||
|
||||
#: src/main.c:125
|
||||
#: 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
|
||||
# de `tabla', después de `tamaño' - cll
|
||||
# en inglés era así, pero quizás en español sea mejor como dices
|
||||
# ngp
|
||||
#
|
||||
#: src/output.c:986
|
||||
#: src/output.c:979
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "excedido el tamaño máximo de la tabla (%s)"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " el tipo %d es %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (regla %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\taceptar\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " SIN ACCIONES\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tir al estado %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tdesplazar e ir al estado %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\terror (no asociativo)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tir al estado %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -423,24 +406,24 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gramática\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "regla %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -448,27 +431,36 @@ msgstr ""
|
||||
"Terminales con las reglas donde aparecen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"No terminales con las reglas donde aparecen\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " en la izquierda:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, fuzzy, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, fuzzy, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\treduce usando la regla %d (%s)\n"
|
||||
@@ -533,7 +525,7 @@ msgstr ""
|
||||
msgid "symbol %s redefined"
|
||||
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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "redeclaración del tipo de %s"
|
||||
@@ -548,7 +540,7 @@ msgstr "`%s' no es v
|
||||
msgid "multiple %s declarations"
|
||||
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:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "declaración de %start no válida"
|
||||
@@ -636,100 +628,100 @@ msgstr "car
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "cláusula %%guard sin terminar"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "regla mal formada: el símbolo inicial no está seguido por :"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "la gramática comienza con una barra vertical"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "se ha dado una regla para %s, que es un terminal"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "dos @prec en una línea"
|
||||
|
||||
# Insisto, el empleo de participios a secas me parece como hablar en
|
||||
# indio. Por favor, permíteme que añada un "está" :) - cll
|
||||
# ok - ngp
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard presente pero %%semantic_parser está sin especificar"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "dos acciones al final de una regla"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
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"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "entrada no válida: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "no hay reglas en la gramática de entrada"
|
||||
|
||||
# `token' se debe traducir como `literal' - cll
|
||||
# en terminología de compiladores token es más un terminal - ngp
|
||||
#
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "los terminales %s y %s tienen asignados ambos el número %s"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "precedencias en conflicto entre %s y %s"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "conflicto de valores assoc para %s y %s"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "el símbolo de inicio (axioma) %s no está definido"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "el símbolo de inicio (axioma) %s es un terminal"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"No terminales sin uso:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -738,7 +730,7 @@ msgstr ""
|
||||
"Terminales que no se usan:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -747,7 +739,7 @@ msgstr ""
|
||||
"Reglas sin uso:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -757,11 +749,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Valor Sprec Sasoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -771,7 +763,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -786,11 +778,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d reglas que nunca se han reducido\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s contiene "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -805,31 +792,11 @@ msgstr " y "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d regla%s sin uso"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
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:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -993,6 +960,30 @@ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "%s deriva\n"
|
||||
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 conflicto desplazamiento/reducción"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 conflicto reducción/reducción"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s contiene"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "DERIVES\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "DERIVACIONES\n"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s deriva"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -1035,6 +1026,9 @@ msgstr ""
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "excedido el límite de %d, demasiados %s"
|
||||
|
||||
#~ 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
|
||||
# el contrario, pudiera cualquiera de los casos, debieras traducirlo
|
||||
# como `vacía/o' - cll
|
||||
@@ -1070,3 +1064,21 @@ msgstr ""
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ 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"
|
||||
|
||||
@@ -4,16 +4,16 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.29f\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"PO-Revision-Date: 2001-10-19 17:53+02:00\n"
|
||||
"Project-Id-Version: bison 1.30b\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 2001-11-13 10:42+02:00\n"
|
||||
"Last-Translator: Toomas Soome <[email protected]>\n"
|
||||
"Language-Team: Estonian <[email protected]>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "liiga palju olekuid (maks %d)"
|
||||
@@ -30,77 +30,80 @@ msgstr "hoiatus: "
|
||||
msgid "fatal error: "
|
||||
msgstr "fataalne viga: "
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "redutseerimine"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "nihutamine"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "viga"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 nihutamine/redutseerimine konflikt"
|
||||
#: src/conflicts.c:389
|
||||
#, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] "%d nihutamine/redutseerimine konflikt"
|
||||
msgstr[1] "%d nihutamine/redutseerimine konflikti"
|
||||
|
||||
#: src/conflicts.c:396
|
||||
msgid "and"
|
||||
msgstr "ja"
|
||||
|
||||
#: src/conflicts.c:402
|
||||
#, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] "%d redutseerimine/redutseerimine konflikt"
|
||||
msgstr[1] "%d redutseerimine/redutseerimine konflikti"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d nihutamine/redutseerimine konflikti"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
msgstr " ja"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 redutseerimine/redutseerimine konflikt"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d redutseerimine/redutseerimine konflikti"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "Olek %d sisaldab"
|
||||
msgid "State %d contains "
|
||||
msgstr "Olek %d sisaldab "
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "konfliktid: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d nihutamine/redutseerimine"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d redutseerimine/redutseerimine"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s sisaldab"
|
||||
msgid "%s contains "
|
||||
msgstr "%s sisaldab "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti"
|
||||
msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -109,25 +112,16 @@ msgstr ""
|
||||
" $default\tredutseerin kasutades reeglit %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
msgid "DERIVES"
|
||||
msgstr "DERIVES"
|
||||
|
||||
#: src/derives.c:48
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s derives"
|
||||
|
||||
#: src/files.c:143
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -189,7 +183,6 @@ msgstr ""
|
||||
" -k, --token-table lisa ka sümbolite nimede tabel\n"
|
||||
|
||||
#: src/getargs.c:117
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Output:\n"
|
||||
" -d, --defines also produce a header file\n"
|
||||
@@ -232,7 +225,7 @@ msgstr ""
|
||||
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\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
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' ei ole enam toetatud"
|
||||
@@ -252,7 +245,7 @@ msgstr "%s: puudub grammatikafail\n"
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "liiga palju gotosid (maks %d)"
|
||||
@@ -300,110 +293,115 @@ msgstr "l
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
msgstr "`%s' ei toeta argumente: %s"
|
||||
|
||||
#: src/lex.c:682
|
||||
#, fuzzy, c-format
|
||||
#: src/lex.c:683
|
||||
#, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: võti `%s' nõuab argumenti\n"
|
||||
msgstr "võti `%s' nõuab argumenti"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, 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
|
||||
#: src/output.c:979
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "ületati maksimaalset tabelisuurust (%d)"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " tüüp %d on %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (reegel %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\taktsepteerin\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " TEGEVUSI POLE\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tliigu olekule %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tnihuta ja liigu olekule %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tliigu olekule %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "olek %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
msgid "Grammar"
|
||||
msgstr "Grammatika"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "reegel %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr "tühi"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " vasakul:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
|
||||
@@ -468,7 +466,7 @@ msgstr "s
|
||||
msgid "symbol %s redefined"
|
||||
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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "%s tüübi uuesti deklareerimine"
|
||||
@@ -483,7 +481,7 @@ msgstr "`%s' ei ole %s sees lubatud"
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "korduvad %s deklaratsioonid"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "vigane %s deklaratsioon"
|
||||
@@ -551,100 +549,100 @@ msgstr "tundmatu s
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "lõpetamata %guard klausel"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "grammatika algab püstkriipsuga"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "%s jaoks on antud reegel, aga see on märk"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "kaks @prec ühel real"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "kaks tegevust ühe reegli lõpus"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "vigane sisend: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "sisendgrammatikas pole reegleid"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
|
||||
"reeglid"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "%s ja %s omavad konfliktseid prioriteete"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "stardisümbol %s ei ole defineeritud"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "stardisümbol %s on märk"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "Kasutamata mitteterminalid:"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "Terminalid, mida ei kasutatud:"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
msgid "Useless rules:"
|
||||
msgstr "Kasutamata reeglid:"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -654,11 +652,11 @@ msgstr ""
|
||||
"--------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Value Sprec Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -668,7 +666,7 @@ msgstr ""
|
||||
"-------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -683,11 +681,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d reeglit ei redutseeritud\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s sisaldab "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -702,19 +695,11 @@ msgstr " ja "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d kasutamata reeglit%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -801,3 +786,18 @@ msgstr "`"
|
||||
#: lib/quotearg.c:269
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
|
||||
#~ msgid "DERIVES"
|
||||
#~ msgstr "DERIVES"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s derives"
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "Entering set_nullable"
|
||||
|
||||
#~ 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"
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU bison 1.29f\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"PO-Revision-Date: 2001-10-19 15:00-0500\n"
|
||||
"Project-Id-Version: GNU bison 1.30c\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 2001-11-19 12:00-0500\n"
|
||||
"Last-Translator: Michel Robitaille <[email protected]>\n"
|
||||
"Language-Team: French <[email protected]>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "nombre trop grand d'états (max %d)"
|
||||
@@ -31,78 +31,78 @@ msgstr "AVERTISSEMENT: "
|
||||
msgid "fatal error: "
|
||||
msgstr "erreur fatale: "
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "réduction"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "décalage"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "une erreur"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 conflit décalage/réduction"
|
||||
#: src/conflicts.c:389
|
||||
#, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] "%d conflits par décalage/réduction"
|
||||
|
||||
#: src/conflicts.c:396
|
||||
msgid "and"
|
||||
msgstr "et"
|
||||
|
||||
#: src/conflicts.c:402
|
||||
#, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] "%d conflits par réduction/réduction"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d conflits décalage/réduction"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
msgstr " et"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr "1 conflit réduction/réduction"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d conflits réduction/réduction"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "L'état %d contient"
|
||||
msgid "State %d contains "
|
||||
msgstr "L'état %d contient "
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "conflits: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d décalage/réduction"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d réduction/réduction"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s contient"
|
||||
msgid "%s contains "
|
||||
msgstr "%s contient "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] "attendu %d conflits décalage/réduction"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[réduction par la règle %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -111,25 +111,16 @@ msgstr ""
|
||||
" $défaut\tréduction par la règle %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\tréduction par la règle %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $défaut\tréduction par la règle %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
msgid "DERIVES"
|
||||
msgstr "DÉRIVES"
|
||||
|
||||
#: src/derives.c:48
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s dérive"
|
||||
|
||||
#: src/files.c:143
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -155,9 +146,9 @@ 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 ""
|
||||
"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 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
|
||||
msgid ""
|
||||
@@ -194,7 +185,6 @@ msgstr ""
|
||||
" -k, --token-table inclure la table des noms de jetons\n"
|
||||
|
||||
#: src/getargs.c:117
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Output:\n"
|
||||
" -d, --defines also produce a header file\n"
|
||||
@@ -208,7 +198,7 @@ msgstr ""
|
||||
" -d, --defines produire un fichier d'en-tête\n"
|
||||
" -v, --verbose produire une explication de l'automate\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 "
|
||||
"l'automate\n"
|
||||
|
||||
@@ -238,7 +228,7 @@ msgstr ""
|
||||
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\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
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' n'est plus supporté"
|
||||
@@ -256,9 +246,9 @@ msgstr "%s: grammaire manquante\n"
|
||||
#: src/getargs.c:250
|
||||
#, c-format
|
||||
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:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "nombre trop grand de \"goto\" (Max %d)"
|
||||
@@ -306,110 +296,115 @@ msgstr "le nom de type ne se termine pas"
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
msgstr "`%s' ne supporte aucun argument: %s"
|
||||
|
||||
#: src/lex.c:682
|
||||
#, fuzzy, c-format
|
||||
#: src/lex.c:683
|
||||
#, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: l'option %s requiert un paramètre\n"
|
||||
msgstr "`%s': requiert un argument"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: erreur interne: %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "Entré dans set_nullable"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:979
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "taille maximale de la table (%d) dépassée"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " le type %d est %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (règle %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $défaut\taccepter\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " PAS D'ACTION\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \taller à l'état %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tdécalage et aller à l'état %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\terreur (non-associatif)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\taller à l'état %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "état %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
msgid "Grammar"
|
||||
msgstr "Grammaire"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "règle %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr "vide"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "Terminaux, suivis des règles où ils apparaissent"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "Non-terminaux, suivis des règles où ils apparaissent"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " à gauche:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$défaut\tréduction par la règle %d (%s)"
|
||||
@@ -474,7 +469,7 @@ msgstr "symbole `%s' pr
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "symbole %s redéfini"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "redéclaration du type de %s"
|
||||
@@ -489,7 +484,7 @@ msgstr "`%s' n'est pas valide dans %s"
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "multiples déclarations %s"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "la déclaration %s n'est pas valide"
|
||||
@@ -527,7 +522,7 @@ msgstr "non appariement de %s"
|
||||
#: src/reader.c:798
|
||||
#, c-format
|
||||
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
|
||||
#, c-format
|
||||
@@ -558,100 +553,100 @@ msgstr "caract
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "clause %guard non terminée"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "la grammaire débute par une barre verticale"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "la règle pour %s, qui est un terminal"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "deux @prec de suite"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "deux actions à la fin d'une même règle"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "règle vide pour une catégorie typée et aucune action"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "entrée non valide: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "la grammaire n'a pas de règles"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
|
||||
"de règle"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "les priorités pour %s et %s entrent en conflit"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "les valeurs d'association de %s et %s entrent en conflit"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "le symbole de départ %s n'est pas défini"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "le symbole de départ %s est un terminal"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "Non-terminaux inutiles:"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "Terminaux non utilisés:"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
msgid "Useless rules:"
|
||||
msgstr "Règles inutiles:"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -661,11 +656,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Valeur Spréc Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -675,7 +670,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -690,11 +685,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d règles jamais réduites\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s contient "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -709,19 +699,11 @@ msgstr " et "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d règle(s) non productive(s)%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -730,17 +712,17 @@ msgstr "%s: l'option %s est ambig
|
||||
#: lib/getopt.c:719
|
||||
#, c-format
|
||||
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
|
||||
#, c-format
|
||||
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
|
||||
#, c-format
|
||||
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
|
||||
#: lib/getopt.c:771
|
||||
@@ -769,7 +751,7 @@ msgstr "%s: option non valide -- %c\n"
|
||||
#: lib/getopt.c:834 lib/getopt.c:964
|
||||
#, c-format
|
||||
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
|
||||
#, c-format
|
||||
@@ -779,7 +761,7 @@ msgstr "%s: l'option `-W %s' est ambigu
|
||||
#: lib/getopt.c:899
|
||||
#, c-format
|
||||
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
|
||||
#. before exiting when memory is exhausted. Goes through gettext.
|
||||
@@ -809,6 +791,30 @@ msgstr "`"
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
|
||||
#~ 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"
|
||||
#~ msgstr " 1 conflit décalage/réduction"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr "1 conflit réduction/réduction"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s contient"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* epsilon */"
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU bison 1.28\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 1999-09-28 21:10+0900\n"
|
||||
"Last-Translator: Daisuke Yamashita <[email protected]>\n"
|
||||
"Language-Team: Japanese <[email protected]>\n"
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=EUC-JP\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, fuzzy, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "%s の数が多すぎます (最大 %d)"
|
||||
@@ -31,77 +31,78 @@ msgstr ""
|
||||
msgid "fatal error: "
|
||||
msgstr "%s: 致命的エラー: "
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "還元"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "シフト"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "エラー"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 シフト/還元衝突"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d シフト/還元衝突"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d シフト/還元衝突"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " および"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 還元/還元衝突"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d 還元/還元衝突"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d 還元/還元衝突"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "状態 %d が含むのは"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "衝突: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d シフト/還元"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d 還元/還元"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s には、"
|
||||
msgid "%s contains "
|
||||
msgstr "%s には"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d シフト/還元衝突"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,31 +111,16 @@ msgstr ""
|
||||
" $default\t規則 %d を利用して還元 (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#, 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
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -214,7 +200,7 @@ msgid ""
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:215 src/lex.c:693
|
||||
#: src/getargs.c:215 src/lex.c:694
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
@@ -234,7 +220,7 @@ msgstr "%s: ʸˡ
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, fuzzy, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "%s の数が多すぎます (最大 %d)"
|
||||
@@ -283,69 +269,65 @@ msgstr "
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:682
|
||||
#: src/lex.c:683
|
||||
#, fuzzy, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: オプション `%s' は引数を要求します\n"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, 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
|
||||
#: src/output.c:979
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "最大テーブルサイズ (%s) を超えました"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " タイプ %d は %s です\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (規則 %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\taccept\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " 動作無し\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \t状態 %d へ\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tシフト、および状態 %d へ\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tエラー (非結合)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\t状態 %d へ\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -355,24 +337,24 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"文法\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "規則 %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -380,7 +362,7 @@ msgstr ""
|
||||
"終端トークン、およびそこに現れた規則\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -388,20 +370,29 @@ msgstr ""
|
||||
"非終端トークン、およびそこに現れた規則\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " 左辺:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, fuzzy, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, fuzzy, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||
@@ -466,7 +457,7 @@ msgstr ""
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "シンボル %s が再定義されました"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "%s の型が再定義されました"
|
||||
@@ -481,7 +472,7 @@ msgstr "%2$s
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "複数の %start が宣言されました"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "無効な %start が宣言されました"
|
||||
@@ -549,95 +540,95 @@ msgstr "̤
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "閉じられていない %%guard 節です"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "文法は縦棒 (|) で始めます"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "%s に規則が与えられ、それはトークンとなります"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "@prec のもの二つが同列になっています"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard がありますが %%semantic_parser が指定されていません"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "一つの規則の終りに二つの動作を指定しています"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "無効な入力: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "入力した文法に規則が定義されていません"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
|
||||
"せん"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "先行している %s と %s で競合が生じています"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "非結合値 %s と %s で競合が生じています"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "開始シンボル %s は定義されていません"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "開始シンボル %s はトークンです"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"不使用非終端子:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -646,7 +637,7 @@ msgstr ""
|
||||
"利用されない終端子:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -655,7 +646,7 @@ msgstr ""
|
||||
"不使用規則:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -665,11 +656,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "値 前置 結合 タグ\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -679,7 +670,7 @@ msgstr ""
|
||||
"-----\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -694,11 +685,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d 個の規則は決して還元されません\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s には"
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -713,19 +699,11 @@ msgstr "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d 個の不使用規則%.0s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "開始シンボル %s はどの文にも由来しません"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -860,6 +838,31 @@ msgstr ""
|
||||
#~ "%s は以下から派生\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 シフト/還元衝突"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 還元/還元衝突"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s には、"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "DERIVES\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "DERIVES\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s は以下から派生"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -891,6 +894,9 @@ msgstr ""
|
||||
#~ msgid "%s:%d: "
|
||||
#~ msgstr "%s:%d: "
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "set_nullable に入ります"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* 空 */"
|
||||
|
||||
@@ -917,3 +923,9 @@ msgstr ""
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ 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"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
|
||||
"Last-Translator: Erick Branderhorst <[email protected]>\n"
|
||||
"Language-Team: Dutch <[email protected]>\n"
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
@@ -31,77 +31,78 @@ msgstr ""
|
||||
msgid "fatal error: "
|
||||
msgstr "fatale fout: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
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"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "reduceer"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "verschuif"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "een fout"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 verschuif/reduceer conflict"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d verschuif/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d verschuif/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " en"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 reduceer/reduceer conflict"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d reduceer/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d reduceer/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "Stadium %d bevat"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "conflictueerd: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d vershuif/reduceer"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d reduceer/reduceer"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgid "%s contains "
|
||||
msgstr "%s bevat"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d verschuif/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,31 +111,16 @@ msgstr ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/derives.c:43
|
||||
#, 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
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -214,7 +200,7 @@ msgid ""
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:215 src/lex.c:693
|
||||
#: src/getargs.c:215 src/lex.c:694
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
@@ -234,7 +220,7 @@ msgstr "%s: geen grammatica bestand gegeven\n"
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: extra argumenten genegeerd na '%s'\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
@@ -283,69 +269,65 @@ msgstr "niet getermineerd type naam"
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:682
|
||||
#: src/lex.c:683
|
||||
#, fuzzy, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: optie `%s' vereist een argument\n"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, 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
|
||||
#: src/output.c:979
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "maximale tabel grootte (%s) overschreden"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (regel %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " GEEN AKTIES\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -355,24 +337,24 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Grammatica\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "regel %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -380,7 +362,7 @@ msgstr ""
|
||||
"Terminals, met regels waar ze voorkomen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -388,20 +370,29 @@ msgstr ""
|
||||
"Geen terminals, met regels waar ze voorkomen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " links:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
msgstr ""
|
||||
|
||||
#: src/print_graph.c:187
|
||||
#.
|
||||
#. if (obstack_object_size (node_obstack) > node_output_size)
|
||||
#. obstack_sgrow (node_obstack, "\n");
|
||||
#.
|
||||
#: src/print_graph.c:181
|
||||
#, fuzzy, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr ""
|
||||
@@ -468,7 +459,7 @@ msgstr ""
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "symbool %s opnieuw gedefinieerd"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "type herdeclaratie voor %s"
|
||||
@@ -483,7 +474,7 @@ msgstr "`%s' is onjuist in %s"
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "meerdere %start declaraties"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "onjuiste %start declaratie"
|
||||
@@ -551,96 +542,96 @@ msgstr "onbekend karakter: %s"
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "niet getermineerde %%guard voorwaarde"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr ""
|
||||
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "grammatica start met een verticale bar"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "regel geven voor %s, welke een teken is"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "twee @prec's in een regel"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "twee akties aan het einde van een regel"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "type clash (`%s' `%s') bij standaard aktie"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "lege regel voor getypte niet terminal, en geen aktie"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ongeldige invoer: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "geen regels voor invoer grammatica"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
|
||||
"heeft geen regels"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "conflictuerende precedentein voor %s en %s"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "conflictuerende associatieve waarden voor %s en %s"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "het start symbool %s is een token"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"Onbruikbare niet terminals:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -649,7 +640,7 @@ msgstr ""
|
||||
"Terminals welke niet worden gebruikt:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -658,7 +649,7 @@ msgstr ""
|
||||
"Onbruikbare regels:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -668,11 +659,11 @@ msgstr ""
|
||||
"----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Waarde Sprec Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -682,7 +673,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -697,11 +688,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d regels nooit gereduceerd\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s bevat"
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -716,19 +702,11 @@ msgstr " en "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d onbruikbare regels%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Start symbool %s is niet afkomstig uit een zin"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -863,6 +841,31 @@ msgstr ""
|
||||
#~ "%s afgeleiden\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 verschuif/reduceer conflict"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 reduceer/reduceer conflict"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s bevat"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "DERIVES\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
#~ "AFGELEIDEN\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s afgeleiden"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -893,6 +896,9 @@ msgstr ""
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "limiet van %d overschreden, te veel %s"
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "Inkomende set nullable"
|
||||
|
||||
#~ msgid "unterminated comment in `%{' definition"
|
||||
#~ msgstr "niet getermineerd commentaar in `%{' definitie"
|
||||
|
||||
@@ -916,3 +922,9 @@ msgstr ""
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ 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"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.29\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 2001-09-09 13:49+04:00\n"
|
||||
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
|
||||
"Language-Team: Russian <[email protected]>\n"
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=koi8-r\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||
@@ -30,78 +30,79 @@ msgstr "
|
||||
msgid "fatal error: "
|
||||
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "ÓÄ×ÉÇ"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "ÏÛÉÂËÁ"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " É"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "ËÏÎÆÌÉËÔÙ: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s ÓÏÄÅÒÖÉÔ"
|
||||
msgid "%s contains "
|
||||
msgstr "%s ÓÏÄÅÒÖÉÔ "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,25 +111,16 @@ msgstr ""
|
||||
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
msgid "DERIVES"
|
||||
msgstr "DERIVES"
|
||||
|
||||
#: src/derives.c:48
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s ×Ù×ÏÄÉÔ"
|
||||
|
||||
#: src/files.c:143
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -237,7 +229,7 @@ msgstr ""
|
||||
"ðòéçïäîïóôé\n"
|
||||
"äìñ ïðòåäåìåîîïê ãåìé.\n"
|
||||
|
||||
#: src/getargs.c:215 src/lex.c:693
|
||||
#: src/getargs.c:215 src/lex.c:694
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
|
||||
@@ -257,7 +249,7 @@ msgstr "%s:
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||
@@ -305,110 +297,115 @@ msgstr "
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:682
|
||||
#: src/lex.c:683
|
||||
#, fuzzy, c-format
|
||||
msgid "`%s' requires an argument"
|
||||
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
|
||||
|
||||
#: src/main.c:125
|
||||
#: src/main.c:128
|
||||
#, 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
|
||||
#: src/output.c:979
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (ÐÒÁ×ÉÌÏ %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " îåô äåêóô÷éê\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "ÓÏÓÔÏÑÎÉÅ %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
msgid "Grammar"
|
||||
msgstr "çÒÁÍÍÁÔÉËÁ"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " ÎÁÌÅ×Ï:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
|
||||
@@ -473,7 +470,7 @@ msgstr ""
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1294
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
||||
@@ -488,7 +485,7 @@ msgstr "`%s'
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||
@@ -556,99 +553,99 @@ msgstr "
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr ""
|
||||
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
msgid "Useless rules:"
|
||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -658,11 +655,11 @@ msgstr ""
|
||||
"----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -672,7 +669,7 @@ msgstr ""
|
||||
"-------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -687,11 +684,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s ÓÏÄÅÒÖÉÔ "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -706,19 +698,11 @@ msgstr "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -806,6 +790,24 @@ msgstr "`"
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s ÓÏÄÅÒÖÉÔ"
|
||||
|
||||
#~ msgid "DERIVES"
|
||||
#~ msgstr "DERIVES"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s ×Ù×ÏÄÉÔ"
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "÷ÈÏÄ × set_nullable"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* ÐÕÓÔÏ */"
|
||||
|
||||
@@ -815,5 +817,11 @@ msgstr "'"
|
||||
#~ msgid "multiple %%source_extension declarations"
|
||||
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
|
||||
|
||||
#~ 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"
|
||||
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
|
||||
|
||||
@@ -0,0 +1,815 @@
|
||||
# Swedish messages for bison.
|
||||
# Copyright © 2001 Free Software Foundation, Inc.
|
||||
# Göran Uddeborg <[email protected]>, 2001.
|
||||
# $Revision$
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.30c\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 2001-11-18 15:17+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 src/complain.c:279
|
||||
msgid "fatal error: "
|
||||
msgstr "ödesdigert fel: "
|
||||
|
||||
#: src/conflicts.c:45
|
||||
#, 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:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "reducera"
|
||||
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "skifta"
|
||||
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "ett fel"
|
||||
|
||||
#: src/conflicts.c:389
|
||||
#, 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:396
|
||||
msgid "and"
|
||||
msgstr "och"
|
||||
|
||||
#: src/conflicts.c:402
|
||||
#, 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:426
|
||||
#, 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:460
|
||||
msgid "conflicts: "
|
||||
msgstr "konflikter: "
|
||||
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d skifta/reducera"
|
||||
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d reducera/reducera"
|
||||
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s innehåller "
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, 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"
|
||||
msgstr[1] "förväntade %d skifta/reducerakonflikter"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reducera med regel %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
" $standard\treducera med regel %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\treducera med regel %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $standard\treducera med regel %d (%s)\n"
|
||||
|
||||
#: src/files.c:143
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr "kan inte öppna filen \"%s\""
|
||||
|
||||
#: src/files.c:162
|
||||
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:293
|
||||
#, 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:269
|
||||
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/main.c:128
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: internt fel: %s\n"
|
||||
|
||||
#: src/output.c:979
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "maximal tabellstorlek (%d) överskriden"
|
||||
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " typ %d är %s\n"
|
||||
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (regel %d)"
|
||||
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $standard\tacceptera\n"
|
||||
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " INGA ÅTGÄRDER\n"
|
||||
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tgå till tillstånd %d\n"
|
||||
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tskifta, och gå till tillstånd %d\n"
|
||||
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tfel (ickeassociativ)\n"
|
||||
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tgå till tillstånd %d\n"
|
||||
|
||||
#: src/print.c:185
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "tillstånd %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:215
|
||||
msgid "Grammar"
|
||||
msgstr "Grammatik"
|
||||
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "regel %-4d %s ->"
|
||||
|
||||
#: src/print.c:226
|
||||
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:255
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "Icketerminaler, med regler där de förekommer"
|
||||
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " till vänster:"
|
||||
|
||||
#: src/print.c:296
|
||||
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:166
|
||||
#, 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:181
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$standard\treducera med regel %d (%s)"
|
||||
|
||||
#: src/reader.c:78
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " Hoppar över till nästa \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " Hoppar över till nästa %c"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
msgid "invalid $ value"
|
||||
msgstr "felaktigt $-värde"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "oavslutad sträng vid filslut"
|
||||
|
||||
#: src/reader.c:172
|
||||
msgid "unterminated string"
|
||||
msgstr "oavslutad sträng"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "%s är felaktigt"
|
||||
|
||||
#: src/reader.c:365
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "$$ för \"%s\" har ingen deklarerad typ"
|
||||
|
||||
#: src/reader.c:382
|
||||
#, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "$%d för \"%s\" har ingen deklarerad typ"
|
||||
|
||||
#: src/reader.c:436
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "oavslutad \"%{\"-definition"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr "Förtida filslut efter %s"
|
||||
|
||||
#: src/reader.c:498
|
||||
#, 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:501
|
||||
#, 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:522 src/reader.c:664
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "symbolen %s omdefinierad"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "typen omdeklarerad för %s"
|
||||
|
||||
#: src/reader.c:541
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "\"%s\" är felaktig i %s"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:723
|
||||
#, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "flera %s-deklarationer"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "felaktig %s-deklaration"
|
||||
|
||||
#: src/reader.c:580
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "%type-deklaration har inget <typnamn>"
|
||||
|
||||
#: src/reader.c:615
|
||||
#, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "felaktig %%type-deklaration på grund av objekt: %s"
|
||||
|
||||
#: src/reader.c:660
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "omdefinition av precedens för %s"
|
||||
|
||||
#: src/reader.c:683
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "felaktig text (%s) - tal skulle följa efter identifierare"
|
||||
|
||||
#: src/reader.c:693
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "oväntat objekt: %s"
|
||||
|
||||
#: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
|
||||
#, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "ensam %s"
|
||||
|
||||
#: src/reader.c:798
|
||||
#, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "argument till %%expect är inte ett heltal"
|
||||
|
||||
#: src/reader.c:844
|
||||
#, c-format
|
||||
msgid "unrecognized item %s, expected an identifier"
|
||||
msgstr "oväntat objekt %s, förväntade en identifierare"
|
||||
|
||||
#: src/reader.c:866
|
||||
#, c-format
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "förväntade strängkonstant istället för %s"
|
||||
|
||||
#: src/reader.c:1014
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "okänt: %s"
|
||||
|
||||
#: src/reader.c:1019
|
||||
msgid "no input grammar"
|
||||
msgstr "ingen ingrammatik"
|
||||
|
||||
#: src/reader.c:1024
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "okänt tecken: %s"
|
||||
|
||||
#: src/reader.c:1192
|
||||
#, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "oavlutad %guard-sats"
|
||||
|
||||
#: src/reader.c:1345
|
||||
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:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "grammatiken startar med ett vertikalt streck"
|
||||
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "regel given för %s, som är ett element"
|
||||
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "två @prec i rad"
|
||||
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard finns men %%semantic_parser är inte angiven"
|
||||
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "två åtgärder vid slutet av en regel"
|
||||
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
|
||||
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "tom regel för typad icketerminal, och ingen åtgärd"
|
||||
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "felaktig indata: %s"
|
||||
|
||||
#: src/reader.c:1572
|
||||
#, 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:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "inga regler i ingrammatiken"
|
||||
|
||||
#: src/reader.c:1599
|
||||
#, 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:1734
|
||||
#, 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:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "motstridiga precedenser mellan %s och %s"
|
||||
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "motstridiga assoc-värden mellan %s och %s"
|
||||
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "startsymbolen %s är odefinierad"
|
||||
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "startsymbolen %s är ett element"
|
||||
|
||||
#: src/reduce.c:400
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "Oanvändbara icketerminaler:"
|
||||
|
||||
#: src/reduce.c:414
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "Terminaler som inte används:"
|
||||
|
||||
#: src/reduce.c:425
|
||||
msgid "Useless rules:"
|
||||
msgstr "Oanvändbara regler:"
|
||||
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Variabler\n"
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Värde Sprec Sassoc Tagg\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Regler\n"
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Tolkade regler\n"
|
||||
"--------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%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:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d oanvändbara icketerminaler%.0s"
|
||||
|
||||
#: src/reduce.c:502
|
||||
msgid " and "
|
||||
msgstr " och "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d oanvändbara regler%.0s"
|
||||
|
||||
#: src/reduce.c:536
|
||||
#, 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:268
|
||||
msgid "`"
|
||||
msgstr "\""
|
||||
|
||||
#: lib/quotearg.c:269
|
||||
msgid "'"
|
||||
msgstr "\""
|
||||
|
||||
#~ msgid "DERIVES"
|
||||
#~ msgstr "HÄRLEDER"
|
||||
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s härleder"
|
||||
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "Påbörjar set_nullable"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
#~ msgstr ""
|
||||
#~ "reducerad %s definierar %d terminaler%.0s, %d icketerminaler%.0s och %d "
|
||||
#~ "produktioner%.0s.\n"
|
||||
@@ -4,9 +4,9 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.28c\n"
|
||||
"POT-Creation-Date: 2001-11-05 11:08+0100\n"
|
||||
"PO-Revision-Date: 2001-09-10 10:54GMT\n"
|
||||
"Project-Id-Version: bison 1.30\n"
|
||||
"POT-Creation-Date: 2001-11-20 14:16+0100\n"
|
||||
"PO-Revision-Date: 2001-11-02 14:49GMT\n"
|
||||
"Last-Translator: Altug Bayram <[email protected]>\n"
|
||||
"Language-Team: Turkish <[email protected]>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -14,7 +14,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 0.9.5\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#: src/LR0.c:189
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "çok fazla durum (en fazla %d)"
|
||||
@@ -31,79 +31,80 @@ msgstr "uyar
|
||||
msgid "fatal error: "
|
||||
msgstr "ölümcül hata:"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:45
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s "
|
||||
"olarakçözümlendi.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:111 src/conflicts.c:134
|
||||
msgid "reduce"
|
||||
msgstr "indirgeme"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:117 src/conflicts.c:130
|
||||
msgid "shift"
|
||||
msgstr "öteleme"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:138
|
||||
msgid "an error"
|
||||
msgstr "bir hata"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 öteleme/indirgeme çeliþkisi"
|
||||
#: src/conflicts.c:389
|
||||
#, fuzzy, c-format
|
||||
msgid "%d shift/reduce conflict"
|
||||
msgid_plural "%d shift/reduce conflicts"
|
||||
msgstr[0] " %d öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
#: src/conflicts.c:396
|
||||
#, fuzzy
|
||||
msgid "and"
|
||||
msgstr " ve"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 indirgeme/indirgeme çeliþkisi"
|
||||
#: src/conflicts.c:402
|
||||
#, fuzzy, c-format
|
||||
msgid "%d reduce/reduce conflict"
|
||||
msgid_plural "%d reduce/reduce conflicts"
|
||||
msgstr[0] " %d indirgeme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d indirgeme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
#: src/conflicts.c:426
|
||||
#, fuzzy, c-format
|
||||
msgid "State %d contains "
|
||||
msgstr "%d durumu içerir"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:460
|
||||
msgid "conflicts: "
|
||||
msgstr "çeliþkiler: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:462
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d öteleme/indirgeme"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:466
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d indirgeme/indirgeme"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:471 src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s içerir"
|
||||
msgid "%s contains "
|
||||
msgstr "%s içerir "
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:480
|
||||
#, fuzzy, c-format
|
||||
msgid "expected %d shift/reduce conflict\n"
|
||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||
msgstr[0] " %d öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:567 src/conflicts.c:688
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:579 src/print.c:156
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -112,25 +113,16 @@ msgstr ""
|
||||
" $default\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:668 src/conflicts.c:682
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:708
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
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
|
||||
msgid "cannot open file `%s'"
|
||||
@@ -156,9 +148,10 @@ 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 ""
|
||||
"Eðer bir uzun seçenek bir argümaný gerektirirse, bu gereklilik, denk olan\n"
|
||||
"kýsa seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de\n"
|
||||
"geçerlidir.\n"
|
||||
"Eðer bir uzun seçenek bir baðýmsýz deðiþkeni zorunlu gibi gösterilirse odenk "
|
||||
"kýsa\n"
|
||||
"seçenek için dahi zorunludur. Seçimli baðýmsýz deðiþkenler için "
|
||||
"benzerþekildedir.\n"
|
||||
|
||||
#: src/getargs.c:98
|
||||
msgid ""
|
||||
@@ -167,7 +160,6 @@ msgid ""
|
||||
" -V, --version output version information and exit\n"
|
||||
" -y, --yacc emulate POSIX yacc\n"
|
||||
msgstr ""
|
||||
"Çalýþma kipleri:\n"
|
||||
" -h, --help bu yardýmý göster ve çýk\n"
|
||||
" -V, --version sürüm bilgisini ver ve çýk\n"
|
||||
" -y, --yacc POSIX yacc öykünmesi\n"
|
||||
@@ -184,13 +176,13 @@ msgid ""
|
||||
" -k, --token-table include a table of token names\n"
|
||||
msgstr ""
|
||||
"Ayrýþtýrýcý:\n"
|
||||
" -S, --skeleton=DOSYA kullanýlacak iskeleti belirler\n"
|
||||
" -S, --skeleton=FILE kullanýlacak iskeleti belirle\n"
|
||||
" -t, --debug ayrýþtýrýcý için hata ayýklayýcý aracý\n"
|
||||
" --locations konum hesaplamalarýný etkinleþtirir\n"
|
||||
" -p, --name-prefix=ÖNEK dýþ simgelere eklenen ÖNEK\n"
|
||||
" -l, --no-lines `#line' bildirimlerini üretmez\n"
|
||||
" -n, --no-parser sadece tablolarý üretir\n"
|
||||
" -k, --token-table andaç isimlerinin bir tablosunu içerir\n"
|
||||
" --locations konum hesaplamalarýný etkinleþtir\n"
|
||||
" -p, --name-prefix=PREFIX dýþ simgelere hazýr bekletilen ÖNEK\n"
|
||||
" -l, --no-lines `#line' bildirimlerini üretme\n"
|
||||
" -n, --no-parser sadece tablolarý üret\n"
|
||||
" -k, --token-table andaç isimlerinin bir tablosunu içer\n"
|
||||
|
||||
#: src/getargs.c:117
|
||||
#, fuzzy
|
||||
@@ -208,12 +200,11 @@ msgstr ""
|
||||
" -v, --verbose otomatýn bir açýklamasýný da üretir\n"
|
||||
" -b, --file-prefix=ÖNEK çýktý dosyalarý için bir ÖNEK belirtir\n"
|
||||
" -o, --output-file=DOSYA çýktýyý DOSYAYA býrakýr\n"
|
||||
" -g, --graph otomatýn bir VCG grafik açýklamasýný da üretir\n"
|
||||
|
||||
#: src/getargs.c:127
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
"Hatalarý <[email protected]>'a,\n"
|
||||
"çeviri hatalarýný <[email protected]>'e bildir.\n"
|
||||
msgstr "Hatalarý <[email protected]>'a bildir.\n"
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
@@ -226,7 +217,7 @@ msgstr "bison (GNU Bison) %s"
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
"Telifhakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
|
||||
"Kopyahakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
|
||||
"Inc.\n"
|
||||
|
||||
#: src/getargs.c:150
|
||||
@@ -235,13 +226,13 @@ msgid ""
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"Bu bir serbest yazýlýmdýr; kopyalama koþullarý için kaynak koduna bakýnýz.\n"
|
||||
"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya HERHANGÝ BÝR AMACA\n"
|
||||
"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\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
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' artýk desteklenmiyor"
|
||||
msgstr "`%s' artýk desteklenmeyecek"
|
||||
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
@@ -251,14 +242,14 @@ msgstr "Daha fazla bilgi i
|
||||
#: src/getargs.c:246
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: gramer dosyasý verilmemiþ\n"
|
||||
msgstr "%s: verilen gramer dosyasý yok\n"
|
||||
|
||||
#: src/getargs.c:250
|
||||
#, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: '%s' den sonraki argümanlar yoksayýldý\n"
|
||||
msgstr "%s: '%s' den sonraki ek baðýmsýz deðiþkenler yoksayýldý\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:293
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "gotos çok fazla (en fazla %d)"
|
||||
@@ -277,7 +268,7 @@ msgstr "beklenmeyen dosya sonu"
|
||||
|
||||
#: src/lex.c:166
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "sabit içinde kaçýþsýz yeni satýr"
|
||||
msgstr "sabit içinde kaçamayan yeni satýr"
|
||||
|
||||
#: src/lex.c:208
|
||||
#, c-format
|
||||
@@ -296,7 +287,7 @@ msgstr "bilinmeyen ka
|
||||
|
||||
#: src/lex.c:342
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "dosya sonunda sonlandýrýlmamýþ tip adý"
|
||||
msgstr "dosyanýn sonunda sonlandýrýlmamýþ tip adý"
|
||||
|
||||
#: src/lex.c:345
|
||||
msgid "unterminated type name"
|
||||
@@ -304,112 +295,117 @@ msgstr "sonland
|
||||
|
||||
#: src/lex.c:438
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "çok-karakterli yazýn andaçlarý için \"...\" kullan"
|
||||
msgstr "cok-karakterli yazýn andaçlarý için \"...\" kullan"
|
||||
|
||||
#: src/lex.c:666
|
||||
#: src/lex.c:667
|
||||
#, c-format
|
||||
msgid "`%s' supports no argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: 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:125
|
||||
#: src/main.c:128
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: iç hata: %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "set_nullable'a girildi"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:979
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "en büyük tablo uzunluðu (%d) aþýldý"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " tip %d %s'dir\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:78
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (kural %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:98
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\tonayla\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:100
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " EYLEM YOK\n"
|
||||
msgstr " EYLEMLER YOK\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:120
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tdurum %d'ye git\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:123
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tötele, ve durum %d'ye git\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:144
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\thata (birleþmeli deðil)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:173
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tdurum %d'ye git\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:185
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "durum %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:215
|
||||
msgid "Grammar"
|
||||
msgstr "Gramer"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:220
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "kural %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
#: src/print.c:226
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
msgstr "boþ"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:231
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:255
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:281
|
||||
msgid " on left:"
|
||||
msgstr " solda:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:296
|
||||
msgid " on right:"
|
||||
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:166
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
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:181
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor"
|
||||
@@ -462,19 +458,19 @@ msgstr "%s'den sonra erken EOF"
|
||||
#: src/reader.c:498
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr "simge `%s' birden fazla defa sabit dizge olarak kullanýldý"
|
||||
msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla kullanýldý"
|
||||
|
||||
#: src/reader.c:501
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr "`%s' simgesine birden fazla sabit dizge verilmiþ"
|
||||
msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla verilmiþ"
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
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:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "%s için yeniden tip bildirimi"
|
||||
@@ -489,7 +485,7 @@ msgstr "`%s' %s i
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "çoklu %s bildirimleri"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1272
|
||||
#: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "geçersiz %s bildirimi"
|
||||
@@ -501,7 +497,7 @@ msgstr "%type bildirimi <tipad
|
||||
#: src/reader.c:615
|
||||
#, c-format
|
||||
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
|
||||
#, c-format
|
||||
@@ -526,7 +522,7 @@ msgstr "e
|
||||
#: src/reader.c:798
|
||||
#, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "%%expect'in argümaný bir tamsayý deðil"
|
||||
msgstr "%%expect'in baðýmsýz deðiþkeni bir tamsayý deðildir"
|
||||
|
||||
#: src/reader.c:844
|
||||
#, c-format
|
||||
@@ -536,7 +532,7 @@ msgstr "%s
|
||||
#: src/reader.c:866
|
||||
#, c-format
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "%s'in yerine sabit dizge beklendi"
|
||||
msgstr "%s'in yerine beklenen dizgi sabitidir"
|
||||
|
||||
#: src/reader.c:1014
|
||||
#, c-format
|
||||
@@ -557,99 +553,101 @@ msgstr "bilinmeyen karakter: %s"
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "sonlandýrýlmamýþ %guard yantümcesi"
|
||||
|
||||
#: src/reader.c:1359
|
||||
#: src/reader.c:1345
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "kötü-biçemli kural: baþlangýç simgesini takip eden \":\" yok"
|
||||
msgstr "kötü-biçimli kural: baþlangýç simgesini takip eden kolon(:) yok"
|
||||
|
||||
#: src/reader.c:1366
|
||||
#: src/reader.c:1352
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "gramer düþey çubuk ile baþlýyor"
|
||||
|
||||
#: src/reader.c:1397
|
||||
#: src/reader.c:1381
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "bir andaç olan %s için verilen kural"
|
||||
|
||||
#: src/reader.c:1499
|
||||
#: src/reader.c:1483
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "bir satýrda iki @prec"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1491
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ"
|
||||
|
||||
#: src/reader.c:1516
|
||||
#: src/reader.c:1500
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "bir kuralýn sonunda iki eylem"
|
||||
|
||||
#: src/reader.c:1530
|
||||
#: src/reader.c:1514
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
|
||||
|
||||
#: src/reader.c:1536
|
||||
#: src/reader.c:1520
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylembelirtilmemiþ"
|
||||
msgstr ""
|
||||
"Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ"
|
||||
|
||||
#: src/reader.c:1580
|
||||
#: src/reader.c:1564
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "geçersiz girdi: %s"
|
||||
|
||||
#: src/reader.c:1588
|
||||
#: src/reader.c:1572
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
|
||||
|
||||
#: src/reader.c:1591
|
||||
#: src/reader.c:1575
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "girdi grameri içinde kurallar yok"
|
||||
|
||||
#: src/reader.c:1615
|
||||
#: src/reader.c:1599
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"simge %s kullanýldý, fakat bir andaç olarak tanýmlanmadý vekurallarý yok"
|
||||
"simge %s kullanýldý, fakat bir andaç gibi tanýmlanmadý ve kurallara "
|
||||
"sahipdeðil"
|
||||
|
||||
#: src/reader.c:1707
|
||||
#: src/reader.c:1734
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý"
|
||||
|
||||
#: src/reader.c:1760
|
||||
#: src/reader.c:1787
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "%s ve %s için çeliþen öncelikler"
|
||||
|
||||
#: src/reader.c:1772
|
||||
#: src/reader.c:1799
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "%s ve %s için çeliþen birleþmeli deðerler"
|
||||
|
||||
#: src/reader.c:1811
|
||||
#: src/reader.c:1838
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "baþlangýç simgesi %s tanýmlanmadý"
|
||||
|
||||
#: src/reader.c:1813
|
||||
#: src/reader.c:1840
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "baþlangýç simgesi %s bir andaçtýr"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:400
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "Yararsýz kurallar:"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:414
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "Kullanýlmayan sabit simgeler:"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:425
|
||||
msgid "Useless rules:"
|
||||
msgstr "Yararsýz kurallar:"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:451
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -659,11 +657,11 @@ msgstr ""
|
||||
"-----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:452
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Deðer Söncel Sbirleþ Etiket\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -673,7 +671,7 @@ msgstr ""
|
||||
"--------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:470
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -688,11 +686,6 @@ msgstr ""
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d kural asla indirgenmedi\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s içerir "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
@@ -707,19 +700,11 @@ msgstr " ve "
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d yararsýz kural%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:536
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, fuzzy, 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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -807,44 +792,26 @@ msgstr "`"
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* boþ */"
|
||||
#~ msgid " 1 shift/reduce conflict"
|
||||
#~ msgstr " 1 öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#~ msgid "multiple %%header_extension declarations"
|
||||
#~ msgstr "çoklu %%header_extension bildirimleri"
|
||||
#~ msgid " 1 reduce/reduce conflict"
|
||||
#~ msgstr " 1 indirgeme/indirgeme çeliþkisi"
|
||||
|
||||
#~ msgid "multiple %%source_extension declarations"
|
||||
#~ msgstr "çoklu %%source_extension bildirimleri"
|
||||
#~ msgid "%s contains"
|
||||
#~ msgstr "%s içerir"
|
||||
|
||||
#~ msgid "vcg graph: no such color."
|
||||
#~ msgstr "vcg graph: böyle bir renk yok."
|
||||
#~ msgid "DERIVES"
|
||||
#~ msgstr "TÜRETÝLENLER"
|
||||
|
||||
#~ msgid "vcg graph: no such text mode"
|
||||
#~ msgstr "vcg graph: böyle bir metin kipi yok"
|
||||
#~ msgid "%s derives"
|
||||
#~ msgstr "%s türetildi"
|
||||
|
||||
#~ msgid "vcg graph: no such shape"
|
||||
#~ msgstr "vcg graph: böyle bir þekil yok"
|
||||
#~ msgid "Entering set_nullable"
|
||||
#~ msgstr "set_nullable'a girildi"
|
||||
|
||||
#~ msgid "vcg graph: no such decision"
|
||||
#~ msgstr "vcg graph: böyle bir karar yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an orientation"
|
||||
#~ msgstr "vcg graph: böyle bir konum yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an alignement"
|
||||
#~ msgstr "vcg graph: böyle bir hizalama yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an arrow mode"
|
||||
#~ msgstr "vcg graph: böyle bir yön kipi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such crossing_type"
|
||||
#~ msgstr "vcg graph: böyle bir kesme tipi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such view"
|
||||
#~ msgstr "vcg graph: böyle bir görünüm yok"
|
||||
|
||||
#~ msgid "vcg graph: no such linestyle"
|
||||
#~ msgstr "vcg graph: böyle bir çizgi biçemi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an arrowstyle"
|
||||
#~ msgstr "vcg graph: böyle bir yön biçemi yok"
|
||||
#~ 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"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
The entry point is generate_states. */
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "reader.h"
|
||||
#include "gram.h"
|
||||
#include "state.h"
|
||||
#include "complain.h"
|
||||
@@ -48,7 +50,7 @@ static short *redset = NULL;
|
||||
static short *shiftset = NULL;
|
||||
|
||||
static short **kernel_base = NULL;
|
||||
static short **kernel_end = NULL;
|
||||
static size_t *kernel_size = NULL;
|
||||
static short *kernel_items = NULL;
|
||||
|
||||
/* hash table for states, to recognize equivalent ones. */
|
||||
@@ -60,8 +62,6 @@ static core **state_table = NULL;
|
||||
static void
|
||||
allocate_itemsets (void)
|
||||
{
|
||||
short *itemp = NULL;
|
||||
int symbol;
|
||||
int i;
|
||||
int count;
|
||||
short *symbol_count = NULL;
|
||||
@@ -69,17 +69,12 @@ allocate_itemsets (void)
|
||||
count = 0;
|
||||
symbol_count = XCALLOC (short, nsyms);
|
||||
|
||||
itemp = ritem;
|
||||
symbol = *itemp++;
|
||||
while (symbol)
|
||||
{
|
||||
if (symbol > 0)
|
||||
{
|
||||
count++;
|
||||
symbol_count[symbol]++;
|
||||
}
|
||||
symbol = *itemp++;
|
||||
}
|
||||
for (i = 0; ritem[i]; ++i)
|
||||
if (ritem[i] > 0)
|
||||
{
|
||||
count++;
|
||||
symbol_count[ritem[i]]++;
|
||||
}
|
||||
|
||||
/* See comments before new_itemsets. All the vectors of items
|
||||
live inside KERNEL_ITEMS. The number of active items after
|
||||
@@ -99,7 +94,7 @@ allocate_itemsets (void)
|
||||
}
|
||||
|
||||
shift_symbol = symbol_count;
|
||||
kernel_end = XCALLOC (short *, nsyms);
|
||||
kernel_size = XCALLOC (size_t, nsyms);
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +116,7 @@ free_storage (void)
|
||||
XFREE (redset);
|
||||
XFREE (shiftset);
|
||||
XFREE (kernel_base);
|
||||
XFREE (kernel_end);
|
||||
XFREE (kernel_size);
|
||||
XFREE (kernel_items);
|
||||
XFREE (state_table);
|
||||
}
|
||||
@@ -137,8 +132,7 @@ free_storage (void)
|
||||
| shift_symbol is set to a vector of the symbols that can be |
|
||||
| shifted. For each symbol in the grammar, kernel_base[symbol] |
|
||||
| points to a vector of item numbers activated if that symbol is |
|
||||
| shifted, and kernel_end[symbol] points after the end of that |
|
||||
| vector. |
|
||||
| shifted, and kernel_size[symbol] is their numbers. |
|
||||
`----------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
@@ -146,37 +140,29 @@ new_itemsets (void)
|
||||
{
|
||||
int i;
|
||||
int shiftcount;
|
||||
short *isp;
|
||||
short *ksp;
|
||||
int symbol;
|
||||
|
||||
#if TRACE
|
||||
fprintf (stderr, "Entering new_itemsets\n");
|
||||
#endif
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Entering new_itemsets, state = %d\n",
|
||||
this_state->number);
|
||||
|
||||
for (i = 0; i < nsyms; i++)
|
||||
kernel_end[i] = NULL;
|
||||
kernel_size[i] = 0;
|
||||
|
||||
shiftcount = 0;
|
||||
|
||||
isp = itemset;
|
||||
|
||||
while (isp < itemsetend)
|
||||
for (i = 0; i < itemsetsize; ++i)
|
||||
{
|
||||
i = *isp++;
|
||||
symbol = ritem[i];
|
||||
int symbol = ritem[itemset[i]];
|
||||
if (symbol > 0)
|
||||
{
|
||||
ksp = kernel_end[symbol];
|
||||
|
||||
if (!ksp)
|
||||
if (!kernel_size[symbol])
|
||||
{
|
||||
shift_symbol[shiftcount++] = symbol;
|
||||
ksp = kernel_base[symbol];
|
||||
shift_symbol[shiftcount] = symbol;
|
||||
shiftcount++;
|
||||
}
|
||||
|
||||
*ksp++ = i + 1;
|
||||
kernel_end[symbol] = ksp;
|
||||
kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1;
|
||||
kernel_size[symbol]++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,36 +179,24 @@ new_itemsets (void)
|
||||
static core *
|
||||
new_state (int symbol)
|
||||
{
|
||||
int n;
|
||||
core *p;
|
||||
short *isp1;
|
||||
short *isp2;
|
||||
short *iend;
|
||||
|
||||
#if TRACE
|
||||
fprintf (stderr, "Entering new_state, symbol = %d\n", symbol);
|
||||
#endif
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
|
||||
this_state->number, symbol, tags[symbol]);
|
||||
|
||||
if (nstates >= MAXSHORT)
|
||||
fatal (_("too many states (max %d)"), MAXSHORT);
|
||||
|
||||
isp1 = kernel_base[symbol];
|
||||
iend = kernel_end[symbol];
|
||||
n = iend - isp1;
|
||||
|
||||
p =
|
||||
(core *) xcalloc ((unsigned) (sizeof (core) + (n - 1) * sizeof (short)), 1);
|
||||
p = CORE_ALLOC (kernel_size[symbol]);
|
||||
p->accessing_symbol = symbol;
|
||||
p->number = nstates;
|
||||
p->nitems = n;
|
||||
p->nitems = kernel_size[symbol];
|
||||
|
||||
isp2 = p->items;
|
||||
while (isp1 < iend)
|
||||
*isp2++ = *isp1++;
|
||||
shortcpy (p->items, kernel_base[symbol], kernel_size[symbol]);
|
||||
|
||||
last_state->next = p;
|
||||
last_state = p;
|
||||
|
||||
nstates++;
|
||||
|
||||
return p;
|
||||
@@ -232,54 +206,41 @@ new_state (int symbol)
|
||||
/*--------------------------------------------------------------.
|
||||
| Find the state number for the state we would get to (from the |
|
||||
| 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
|
||||
get_state (int symbol)
|
||||
{
|
||||
int key;
|
||||
short *isp1;
|
||||
short *isp2;
|
||||
short *iend;
|
||||
int i;
|
||||
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
|
||||
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 */
|
||||
/* Add up the target state's active item numbers to get a hash key.
|
||||
*/
|
||||
key = 0;
|
||||
while (isp1 < iend)
|
||||
key += *isp1++;
|
||||
|
||||
for (i = 0; i < kernel_size[symbol]; ++i)
|
||||
key += kernel_base[symbol][i];
|
||||
key = key % STATE_TABLE_SIZE;
|
||||
|
||||
sp = state_table[key];
|
||||
|
||||
if (sp)
|
||||
{
|
||||
found = 0;
|
||||
int found = 0;
|
||||
while (!found)
|
||||
{
|
||||
if (sp->nitems == n)
|
||||
if (sp->nitems == kernel_size[symbol])
|
||||
{
|
||||
int i;
|
||||
found = 1;
|
||||
isp1 = kernel_base[symbol];
|
||||
isp2 = sp->items;
|
||||
|
||||
while (found && isp1 < iend)
|
||||
{
|
||||
if (*isp1++ != *isp2++)
|
||||
found = 0;
|
||||
}
|
||||
for (i = 0; i < kernel_size[symbol]; ++i)
|
||||
if (kernel_base[symbol][i] != sp->items[i])
|
||||
found = 0;
|
||||
}
|
||||
|
||||
if (!found)
|
||||
@@ -301,6 +262,9 @@ get_state (int symbol)
|
||||
state_table[key] = sp = new_state (symbol);
|
||||
}
|
||||
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Exiting get_state => %d\n", sp->number);
|
||||
|
||||
return sp->number;
|
||||
}
|
||||
|
||||
@@ -318,9 +282,9 @@ append_states (void)
|
||||
int j;
|
||||
int symbol;
|
||||
|
||||
#if TRACE
|
||||
fprintf (stderr, "Entering append_states\n");
|
||||
#endif
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Entering append_states, state = %d\n",
|
||||
this_state->number);
|
||||
|
||||
/* first sort shift_symbol into increasing order */
|
||||
|
||||
@@ -337,20 +301,14 @@ append_states (void)
|
||||
}
|
||||
|
||||
for (i = 0; i < nshifts; i++)
|
||||
{
|
||||
symbol = shift_symbol[i];
|
||||
shiftset[i] = get_state (symbol);
|
||||
}
|
||||
shiftset[i] = get_state (shift_symbol[i]);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
new_states (void)
|
||||
{
|
||||
core *p;
|
||||
|
||||
p = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1);
|
||||
first_state = last_state = this_state = p;
|
||||
first_state = last_state = this_state = CORE_ALLOC (0);
|
||||
nstates = 1;
|
||||
}
|
||||
|
||||
@@ -358,34 +316,18 @@ new_states (void)
|
||||
static void
|
||||
save_shifts (void)
|
||||
{
|
||||
shifts *p;
|
||||
short *sp1;
|
||||
short *sp2;
|
||||
short *send;
|
||||
|
||||
p = (shifts *) xcalloc ((unsigned) (sizeof (shifts) +
|
||||
(nshifts - 1) * sizeof (short)), 1);
|
||||
shifts *p = SHIFTS_ALLOC (nshifts);
|
||||
|
||||
p->number = this_state->number;
|
||||
p->nshifts = nshifts;
|
||||
|
||||
sp1 = shiftset;
|
||||
sp2 = p->shifts;
|
||||
send = shiftset + nshifts;
|
||||
|
||||
while (sp1 < send)
|
||||
*sp2++ = *sp1++;
|
||||
shortcpy (p->shifts, shiftset, nshifts);
|
||||
|
||||
if (last_shift)
|
||||
{
|
||||
last_shift->next = p;
|
||||
last_shift = p;
|
||||
}
|
||||
last_shift->next = p;
|
||||
else
|
||||
{
|
||||
first_shift = p;
|
||||
last_shift = p;
|
||||
}
|
||||
first_shift = p;
|
||||
last_shift = p;
|
||||
}
|
||||
|
||||
|
||||
@@ -400,7 +342,7 @@ insert_start_shift (void)
|
||||
core *statep;
|
||||
shifts *sp;
|
||||
|
||||
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1);
|
||||
statep = CORE_ALLOC (0);
|
||||
statep->number = nstates;
|
||||
statep->accessing_symbol = start_symbol;
|
||||
|
||||
@@ -408,7 +350,7 @@ insert_start_shift (void)
|
||||
last_state = statep;
|
||||
|
||||
/* Make a shift from this state to (what will be) the final state. */
|
||||
sp = XCALLOC (shifts, 1);
|
||||
sp = SHIFTS_ALLOC (1);
|
||||
sp->number = nstates++;
|
||||
sp->nshifts = 1;
|
||||
sp->shifts[0] = nstates;
|
||||
@@ -465,10 +407,7 @@ augment_automaton (void)
|
||||
|
||||
if (sp && sp->number == k)
|
||||
{
|
||||
sp2 = (shifts *) xcalloc ((unsigned) (sizeof (shifts)
|
||||
+
|
||||
sp->nshifts *
|
||||
sizeof (short)), 1);
|
||||
sp2 = SHIFTS_ALLOC (sp->nshifts + 1);
|
||||
sp2->number = k;
|
||||
sp2->nshifts = sp->nshifts + 1;
|
||||
sp2->shifts[0] = nstates;
|
||||
@@ -485,7 +424,7 @@ augment_automaton (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
sp2 = XCALLOC (shifts, 1);
|
||||
sp2 = SHIFTS_ALLOC (1);
|
||||
sp2->number = k;
|
||||
sp2->nshifts = 1;
|
||||
sp2->shifts[0] = nstates;
|
||||
@@ -504,8 +443,7 @@ augment_automaton (void)
|
||||
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 = SHIFTS_ALLOC (sp->nshifts + 1);
|
||||
sp2->nshifts = sp->nshifts + 1;
|
||||
|
||||
/* Stick this shift into the vector at the proper place. */
|
||||
@@ -538,7 +476,7 @@ augment_automaton (void)
|
||||
{
|
||||
/* The initial state didn't even have any shifts.
|
||||
Give it one shift, to the next-to-final state. */
|
||||
sp = XCALLOC (shifts, 1);
|
||||
sp = SHIFTS_ALLOC (1);
|
||||
sp->nshifts = 1;
|
||||
sp->shifts[0] = nstates;
|
||||
|
||||
@@ -556,7 +494,7 @@ augment_automaton (void)
|
||||
/* 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 = SHIFTS_ALLOC (1);
|
||||
sp->nshifts = 1;
|
||||
sp->shifts[0] = nstates;
|
||||
|
||||
@@ -572,13 +510,13 @@ augment_automaton (void)
|
||||
/* Make the final state--the one that follows a shift from the
|
||||
next-to-final state.
|
||||
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;
|
||||
last_state->next = statep;
|
||||
last_state = statep;
|
||||
|
||||
/* Make the shift from the final state to the termination state. */
|
||||
sp = XCALLOC (shifts, 1);
|
||||
sp = SHIFTS_ALLOC (1);
|
||||
sp->number = nstates++;
|
||||
sp->nshifts = 1;
|
||||
sp->shifts[0] = nstates;
|
||||
@@ -590,7 +528,7 @@ augment_automaton (void)
|
||||
final_state = nstates;
|
||||
|
||||
/* Make the termination state. */
|
||||
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1);
|
||||
statep = CORE_ALLOC (0);
|
||||
statep->number = nstates++;
|
||||
last_state->next = statep;
|
||||
last_state = statep;
|
||||
@@ -606,21 +544,15 @@ augment_automaton (void)
|
||||
static void
|
||||
save_reductions (void)
|
||||
{
|
||||
short *isp;
|
||||
short *rp1;
|
||||
short *rp2;
|
||||
int item;
|
||||
int count;
|
||||
reductions *p;
|
||||
|
||||
short *rend;
|
||||
int i;
|
||||
|
||||
/* Find and count the active items that represent ends of rules. */
|
||||
|
||||
count = 0;
|
||||
for (isp = itemset; isp < itemsetend; isp++)
|
||||
for (i = 0; i < itemsetsize; ++i)
|
||||
{
|
||||
item = ritem[*isp];
|
||||
int item = ritem[itemset[i]];
|
||||
if (item < 0)
|
||||
redset[count++] = -item;
|
||||
}
|
||||
@@ -629,29 +561,18 @@ save_reductions (void)
|
||||
|
||||
if (count)
|
||||
{
|
||||
p = (reductions *) xcalloc ((unsigned) (sizeof (reductions) +
|
||||
(count - 1) * sizeof (short)), 1);
|
||||
reductions *p = REDUCTIONS_ALLOC (count);
|
||||
|
||||
p->number = this_state->number;
|
||||
p->nreds = count;
|
||||
|
||||
rp1 = redset;
|
||||
rp2 = p->rules;
|
||||
rend = rp1 + count;
|
||||
|
||||
for (/* nothing */; rp1 < rend; ++rp1, ++rp2)
|
||||
*rp2 = *rp1;
|
||||
shortcpy (p->rules, redset, count);
|
||||
|
||||
if (last_reduction)
|
||||
{
|
||||
last_reduction->next = p;
|
||||
last_reduction = p;
|
||||
}
|
||||
last_reduction->next = p;
|
||||
else
|
||||
{
|
||||
first_reduction = p;
|
||||
last_reduction = p;
|
||||
}
|
||||
first_reduction = p;
|
||||
last_reduction = p;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
||||
+57
-51
@@ -76,10 +76,27 @@
|
||||
# define YYSTACK_USE_ALLOCA 0
|
||||
#endif
|
||||
|
||||
/* Realloc WHAT from SIZE to YYSTACKSIZE elements of TYPE.
|
||||
If WHAT was malloc'ed (not the original automatic ARRAY), free it. */
|
||||
#if YYSTACK_USE_ALLOCA
|
||||
# define YYSTACK_ALLOC alloca
|
||||
# define YYSTACK_REALLOC(Type, What, Array) \
|
||||
do { \
|
||||
Type *old = What; \
|
||||
What = (Type *) malloc (yystacksize * sizeof (Type)); \
|
||||
__yy_memcpy ((char *) What, (char *) old, \
|
||||
(size) * (unsigned int) sizeof (Type)); \
|
||||
yyfree_stacks = 1; \
|
||||
if (old != Array) \
|
||||
free (old); \
|
||||
} while (0)
|
||||
#else
|
||||
# define YYSTACK_ALLOC malloc
|
||||
# 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
|
||||
|
||||
#define yyerrok (yyerrstatus = 0)
|
||||
@@ -291,7 +308,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
|
||||
/* Three stacks and their tools:
|
||||
`yyss': related to states,
|
||||
`yysv': related to semantic values,
|
||||
`yyvs': related to semantic values,
|
||||
`yyls': related to locations.
|
||||
|
||||
Refer to the stacks thru separate pointers, to allow yyoverflow
|
||||
@@ -368,40 +385,38 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
|
||||
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. */
|
||||
int size = yyssp - yyss + 1;
|
||||
|
||||
#ifdef yyoverflow
|
||||
/* Each stack pointer address is followed by the size of the
|
||||
data in use in that stack, in bytes. */
|
||||
# if YYLSP_NEEDED
|
||||
/* 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, 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
|
||||
{
|
||||
/* 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;
|
||||
|
||||
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
|
||||
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, size * sizeof (*yyssp),
|
||||
&yyvs1, size * sizeof (*yyvsp),
|
||||
&yyls1, size * sizeof (*yylsp),
|
||||
&yystacksize);
|
||||
yyls = yyls1;
|
||||
# else
|
||||
yyoverflow ("parser stack overflow",
|
||||
&yyss1, size * sizeof (*yyssp),
|
||||
&yyvs1, size * sizeof (*yyvsp),
|
||||
&yystacksize);
|
||||
# endif
|
||||
yyss = yyss1;
|
||||
yyvs = yyvs1;
|
||||
}
|
||||
#else /* no yyoverflow */
|
||||
/* Extend the stack our own way. */
|
||||
if (yystacksize >= YYMAXDEPTH)
|
||||
@@ -420,19 +435,11 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
yystacksize *= 2;
|
||||
if (yystacksize > YYMAXDEPTH)
|
||||
yystacksize = YYMAXDEPTH;
|
||||
# if !YYSTACK_USE_ALLOCA
|
||||
yyfree_stacks = 1;
|
||||
# endif
|
||||
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
||||
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
||||
size * (unsigned int) sizeof (*yyssp));
|
||||
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
|
||||
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
||||
size * (unsigned int) sizeof (*yyvsp));
|
||||
|
||||
YYSTACK_REALLOC (short, yyss, yyssa);
|
||||
YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa);
|
||||
# if YYLSP_NEEDED
|
||||
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
|
||||
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
||||
size * (unsigned int) sizeof (*yylsp));
|
||||
YYSTACK_REALLOC (YYLTYPE, yyls, yylsa);
|
||||
# endif
|
||||
#endif /* no yyoverflow */
|
||||
|
||||
@@ -664,30 +671,29 @@ yyerrlab:
|
||||
int x, count;
|
||||
|
||||
count = 0;
|
||||
/* Start X at -yyn if nec to avoid negative indexes in yycheck. */
|
||||
for (x = (yyn < 0 ? -yyn : 0);
|
||||
/* Start X at -YYN if negative to avoid negative indexes in
|
||||
YYCHECK. */
|
||||
for (x = yyn < 0 ? -yyn : 0;
|
||||
x < (int) (sizeof (yytname) / sizeof (char *)); x++)
|
||||
if (yycheck[x + yyn] == x)
|
||||
size += strlen (yytname[x]) + 15, count++;
|
||||
size += strlen ("parse error, unexpected `") + 1;
|
||||
size += strlen ("parse error, unexpected ") + 1;
|
||||
size += strlen (yytname[YYTRANSLATE (yychar)]);
|
||||
msg = (char *) malloc (size);
|
||||
if (msg != 0)
|
||||
{
|
||||
strcpy (msg, "parse error, unexpected `");
|
||||
strcpy (msg, "parse error, unexpected ");
|
||||
strcat (msg, yytname[YYTRANSLATE (yychar)]);
|
||||
strcat (msg, "'");
|
||||
|
||||
if (count < 5)
|
||||
{
|
||||
count = 0;
|
||||
for (x = (yyn < 0 ? -yyn : 0);
|
||||
for (x = yyn < 0 ? -yyn : 0;
|
||||
x < (int) (sizeof (yytname) / sizeof (char *)); x++)
|
||||
if (yycheck[x + yyn] == x)
|
||||
{
|
||||
strcat (msg, count == 0 ? ", expecting `" : " or `");
|
||||
strcat (msg, count == 0 ? ", expecting " : " or ");
|
||||
strcat (msg, yytname[x]);
|
||||
strcat (msg, "'");
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@@ -695,7 +701,7 @@ yyerrlab:
|
||||
free (msg);
|
||||
}
|
||||
else
|
||||
yyerror ("parse error; also virtual memory exceeded");
|
||||
yyerror ("parse error; also virtual memory exhausted");
|
||||
}
|
||||
else
|
||||
#endif /* YYERROR_VERBOSE */
|
||||
|
||||
+66
-65
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -19,26 +19,32 @@
|
||||
02111-1307, USA. */
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "gram.h"
|
||||
#include "reader.h"
|
||||
#include "closure.h"
|
||||
#include "derives.h"
|
||||
#include "warshall.h"
|
||||
|
||||
/* ITEMSETSIZE is the size of the array ITEMSET. */
|
||||
short *itemset;
|
||||
short *itemsetend;
|
||||
size_t itemsetsize;
|
||||
|
||||
static unsigned *ruleset;
|
||||
|
||||
/* internal data. See comments before set_fderives and set_firsts. */
|
||||
static unsigned *fderives;
|
||||
static unsigned *firsts;
|
||||
|
||||
#define FDERIVES(Symbol) (fderives + (Symbol) * rulesetsize)
|
||||
#define FIRSTS(Symbol) (firsts + (Symbol) * varsetsize)
|
||||
|
||||
/* number of words required to hold a bit for each rule */
|
||||
static int rulesetsize;
|
||||
|
||||
/* number of words required to hold a bit for each variable */
|
||||
static int varsetsize;
|
||||
|
||||
#if DEBUG
|
||||
|
||||
/*-----------------.
|
||||
| Debugging code. |
|
||||
@@ -47,11 +53,11 @@ static int varsetsize;
|
||||
static void
|
||||
print_closure (int n)
|
||||
{
|
||||
short *isp;
|
||||
|
||||
printf ("\n\nn = %d\n\n", n);
|
||||
for (isp = itemset; isp < itemsetend; isp++)
|
||||
printf (" %d\n", *isp);
|
||||
int i;
|
||||
fprintf (stderr, "n = %d\n", n);
|
||||
for (i = 0; i < itemsetsize; ++i)
|
||||
fprintf (stderr, " %d\n", itemset[i]);
|
||||
fprintf (stderr, "\n\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -62,18 +68,19 @@ print_firsts (void)
|
||||
int j;
|
||||
unsigned *rowp;
|
||||
|
||||
printf ("\n\n\nFIRSTS\n\n");
|
||||
fprintf (stderr, "FIRSTS\n");
|
||||
|
||||
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);
|
||||
rowp = FIRSTS (i - ntokens);
|
||||
|
||||
for (j = 0; j < nvars; j++)
|
||||
if (BITISSET (rowp, j))
|
||||
printf (" %s\n", tags[j + ntokens]);
|
||||
fprintf (stderr, "\t\t%d (%s)\n", j + ntokens, tags[j + ntokens]);
|
||||
}
|
||||
fprintf (stderr, "\n\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -84,21 +91,25 @@ print_fderives (void)
|
||||
int j;
|
||||
unsigned *rp;
|
||||
|
||||
printf ("\n\n\nFDERIVES\n");
|
||||
fprintf (stderr, "FDERIVES\n");
|
||||
|
||||
for (i = ntokens; i < nsyms; i++)
|
||||
{
|
||||
printf ("\n\n%s derives\n\n", tags[i]);
|
||||
rp = fderives + i * rulesetsize;
|
||||
fprintf (stderr, "\t%s derives\n", tags[i]);
|
||||
rp = FDERIVES (i);
|
||||
|
||||
for (j = 0; j <= nrules; j++)
|
||||
if (BITISSET (rp, 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);
|
||||
}
|
||||
}
|
||||
|
||||
fflush (stdout);
|
||||
fprintf (stderr, "\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------.
|
||||
| Set FIRSTS to be an NVARS by NVARS bit matrix indicating which |
|
||||
@@ -130,7 +141,7 @@ set_firsts (void)
|
||||
sp = derives[i];
|
||||
while (*sp >= 0)
|
||||
{
|
||||
symbol = ritem[rrhs[*sp++]];
|
||||
symbol = ritem[rule_table[*sp++].rhs];
|
||||
if (ISVAR (symbol))
|
||||
{
|
||||
symbol -= ntokens;
|
||||
@@ -143,9 +154,8 @@ set_firsts (void)
|
||||
|
||||
RTC (firsts, nvars);
|
||||
|
||||
#ifdef DEBUG
|
||||
print_firsts ();
|
||||
#endif
|
||||
if (trace_flag)
|
||||
print_firsts ();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------.
|
||||
@@ -175,11 +185,11 @@ set_fderives (void)
|
||||
|
||||
set_firsts ();
|
||||
|
||||
rrow = fderives + ntokens * rulesetsize;
|
||||
rrow = FDERIVES (ntokens);
|
||||
|
||||
for (i = ntokens; i < nsyms; i++)
|
||||
{
|
||||
vrow = firsts + ((i - ntokens) * varsetsize);
|
||||
vrow = FIRSTS (i - ntokens);
|
||||
cword = *vrow++;
|
||||
b = 0;
|
||||
for (j = ntokens; j < nsyms; j++)
|
||||
@@ -188,9 +198,7 @@ set_fderives (void)
|
||||
{
|
||||
rp = derives[j];
|
||||
while ((ruleno = *rp++) > 0)
|
||||
{
|
||||
SETBIT (rrow, ruleno);
|
||||
}
|
||||
SETBIT (rrow, ruleno);
|
||||
}
|
||||
|
||||
b++;
|
||||
@@ -204,9 +212,8 @@ set_fderives (void)
|
||||
rrow += rulesetsize;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
print_fderives ();
|
||||
#endif
|
||||
if (trace_flag)
|
||||
print_fderives ();
|
||||
|
||||
XFREE (firsts);
|
||||
}
|
||||
@@ -229,52 +236,47 @@ void
|
||||
closure (short *core, int n)
|
||||
{
|
||||
int ruleno;
|
||||
unsigned word;
|
||||
short *csp;
|
||||
unsigned *dsp;
|
||||
unsigned *rsp;
|
||||
|
||||
short *csend;
|
||||
unsigned *rsend;
|
||||
int symbol;
|
||||
int itemno;
|
||||
int i;
|
||||
|
||||
rsp = ruleset;
|
||||
rsend = ruleset + rulesetsize;
|
||||
csend = core + n;
|
||||
if (trace_flag)
|
||||
{
|
||||
fprintf (stderr, "Entering closure (items = {");
|
||||
for (i = 0; i < n; ++i)
|
||||
fprintf (stderr, " %d ", core[i]);
|
||||
fprintf (stderr, "}, nitems = %d)\n", n);
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
dsp = fderives + start_symbol * rulesetsize;
|
||||
while (rsp < rsend)
|
||||
*rsp++ = *dsp++;
|
||||
for (i = 0; i < rulesetsize; ++i)
|
||||
ruleset[i] = FDERIVES (start_symbol)[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
while (rsp < rsend)
|
||||
*rsp++ = 0;
|
||||
for (i = 0; i < rulesetsize; ++i)
|
||||
ruleset[i] = 0;
|
||||
|
||||
csp = core;
|
||||
while (csp < csend)
|
||||
for (i = 0; i < n; ++i)
|
||||
{
|
||||
symbol = ritem[*csp++];
|
||||
int symbol = ritem[core[i]];
|
||||
if (ISVAR (symbol))
|
||||
{
|
||||
dsp = fderives + symbol * rulesetsize;
|
||||
rsp = ruleset;
|
||||
while (rsp < rsend)
|
||||
*rsp++ |= *dsp++;
|
||||
int j;
|
||||
for (j = 0; j < rulesetsize; ++j)
|
||||
ruleset[j] |= FDERIVES (symbol)[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ruleno = 0;
|
||||
itemsetend = itemset;
|
||||
itemsetsize = 0;
|
||||
csp = core;
|
||||
rsp = ruleset;
|
||||
while (rsp < rsend)
|
||||
for (i = 0; i < rulesetsize; ++i)
|
||||
{
|
||||
word = *rsp++;
|
||||
int word = ruleset[i];
|
||||
if (word == 0)
|
||||
{
|
||||
ruleno += BITS_PER_WORD;
|
||||
@@ -287,10 +289,10 @@ closure (short *core, int n)
|
||||
{
|
||||
if (word & (1 << b))
|
||||
{
|
||||
itemno = rrhs[ruleno];
|
||||
while (csp < csend && *csp < itemno)
|
||||
*itemsetend++ = *csp++;
|
||||
*itemsetend++ = itemno;
|
||||
itemno = rule_table[ruleno].rhs;
|
||||
while (csp < (core + n) && *csp < itemno)
|
||||
itemset[itemsetsize++] = *csp++;
|
||||
itemset[itemsetsize++] = itemno;
|
||||
}
|
||||
|
||||
ruleno++;
|
||||
@@ -298,12 +300,11 @@ closure (short *core, int n)
|
||||
}
|
||||
}
|
||||
|
||||
while (csp < csend)
|
||||
*itemsetend++ = *csp++;
|
||||
while (csp < (core + n))
|
||||
itemset[itemsetsize++] = *csp++;
|
||||
|
||||
#if DEBUG
|
||||
print_closure (n);
|
||||
#endif
|
||||
if (trace_flag)
|
||||
print_closure (n);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -51,6 +51,6 @@ void closure PARAMS ((short *items, int n));
|
||||
void free_closure PARAMS ((void));
|
||||
|
||||
extern short *itemset;
|
||||
extern short *itemsetend;
|
||||
extern size_t itemsetsize;
|
||||
|
||||
#endif /* !CLOSURE_H_ */
|
||||
|
||||
+142
-166
@@ -19,6 +19,7 @@
|
||||
02111-1307, USA. */
|
||||
|
||||
#include "system.h"
|
||||
#include "complain.h"
|
||||
#include "getargs.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
@@ -28,17 +29,13 @@
|
||||
#include "reader.h"
|
||||
#include "LR0.h"
|
||||
|
||||
int any_conflicts = 0;
|
||||
errs **err_table = NULL;
|
||||
int expected_conflicts;
|
||||
/* -1 stands for not specified. */
|
||||
int expected_conflicts = -1;
|
||||
static char *conflicts = NULL;
|
||||
|
||||
static unsigned *shiftset = NULL;
|
||||
static unsigned *lookaheadset = NULL;
|
||||
static int src_total;
|
||||
static int rrc_total;
|
||||
static int src_count;
|
||||
static int rrc_count;
|
||||
|
||||
|
||||
static inline void
|
||||
@@ -63,7 +60,7 @@ flush_shift (int state, int token)
|
||||
shifts *shiftp;
|
||||
int k, i;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
|
||||
if (shiftp)
|
||||
{
|
||||
@@ -71,7 +68,7 @@ flush_shift (int state, int token)
|
||||
for (i = 0; i < k; i++)
|
||||
{
|
||||
if (shiftp->shifts[i]
|
||||
&& token == accessing_symbol[shiftp->shifts[i]])
|
||||
&& token == state_table[shiftp->shifts[i]].accessing_symbol)
|
||||
(shiftp->shifts[i]) = 0;
|
||||
}
|
||||
}
|
||||
@@ -93,14 +90,14 @@ resolve_sr_conflict (int state, int lookaheadnum)
|
||||
unsigned *fp1;
|
||||
unsigned *fp2;
|
||||
int redprec;
|
||||
errs *errp = (errs *) xcalloc (sizeof (errs) + ntokens * sizeof (short), 1);
|
||||
errs *errp = ERRS_ALLOC (ntokens + 1);
|
||||
short *errtokens = errp->errs;
|
||||
|
||||
/* find the rule to reduce by to get precedence of reduction */
|
||||
redprec = rprec[LAruleno[lookaheadnum]];
|
||||
redprec = rule_table[LAruleno[lookaheadnum]].prec;
|
||||
|
||||
mask = 1;
|
||||
fp1 = LA + lookaheadnum * tokensetsize;
|
||||
fp1 = LA (lookaheadnum);
|
||||
fp2 = lookaheadset;
|
||||
for (i = 0; i < ntokens; i++)
|
||||
{
|
||||
@@ -173,7 +170,7 @@ resolve_sr_conflict (int state, int lookaheadnum)
|
||||
/* Some tokens have been explicitly made errors. Allocate
|
||||
a permanent errs structure for this state, to record them. */
|
||||
i = (char *) errtokens - (char *) errp;
|
||||
err_table[state] = (errs *) xcalloc ((unsigned int) i, 1);
|
||||
err_table[state] = ERRS_ALLOC (i + 1);
|
||||
bcopy (errp, err_table[state], i);
|
||||
}
|
||||
else
|
||||
@@ -185,80 +182,53 @@ resolve_sr_conflict (int state, int lookaheadnum)
|
||||
static void
|
||||
set_conflicts (int state)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
int i, j;
|
||||
shifts *shiftp;
|
||||
unsigned *fp2;
|
||||
unsigned *fp3;
|
||||
unsigned *fp4;
|
||||
unsigned *fp1;
|
||||
int symbol;
|
||||
|
||||
if (consistent[state])
|
||||
if (state_table[state].consistent)
|
||||
return;
|
||||
|
||||
for (i = 0; i < tokensetsize; i++)
|
||||
lookaheadset[i] = 0;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
if (shiftp)
|
||||
{
|
||||
k = shiftp->nshifts;
|
||||
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;
|
||||
for (i = 0; i < shiftp->nshifts; i++)
|
||||
{
|
||||
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
SETBIT (lookaheadset, symbol);
|
||||
}
|
||||
|
||||
/* Loop over all rules which require lookahead in this state. First
|
||||
check for shift-reduce conflict, and try to resolve using
|
||||
precedence */
|
||||
for (i = lookaheads[state]; i < k; i++)
|
||||
if (rprec[LAruleno[i]])
|
||||
{
|
||||
fp1 = LA + i * tokensetsize;
|
||||
fp2 = fp1;
|
||||
fp3 = lookaheadset;
|
||||
|
||||
while (fp3 < fp4)
|
||||
for (i = state_table[state].lookaheads;
|
||||
i < state_table[state + 1].lookaheads;
|
||||
++i)
|
||||
if (rule_table[LAruleno[i]].prec)
|
||||
for (j = 0; j < tokensetsize; ++j)
|
||||
if (LA (i)[j] & lookaheadset[j])
|
||||
{
|
||||
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
|
||||
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;
|
||||
fp2 = fp1;
|
||||
fp3 = lookaheadset;
|
||||
for (j = 0; j < tokensetsize; ++j)
|
||||
if (LA (i)[j] & lookaheadset[j])
|
||||
conflicts[state] = 1;
|
||||
|
||||
while (fp3 < fp4)
|
||||
{
|
||||
if (*fp2++ & *fp3++)
|
||||
{
|
||||
conflicts[state] = 1;
|
||||
any_conflicts = 1;
|
||||
}
|
||||
}
|
||||
|
||||
fp2 = fp1;
|
||||
fp3 = lookaheadset;
|
||||
|
||||
while (fp3 < fp4)
|
||||
*fp3++ |= *fp2++;
|
||||
for (j = 0; j < tokensetsize; ++j)
|
||||
lookaheadset[j] |= LA (i)[j];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,8 +243,6 @@ solve_conflicts (void)
|
||||
|
||||
err_table = XCALLOC (errs *, nstates);
|
||||
|
||||
any_conflicts = 0;
|
||||
|
||||
for (i = 0; i < nstates; i++)
|
||||
set_conflicts (i);
|
||||
}
|
||||
@@ -284,7 +252,7 @@ solve_conflicts (void)
|
||||
| Count the number of shift/reduce conflicts. |
|
||||
`---------------------------------------------*/
|
||||
|
||||
static void
|
||||
static int
|
||||
count_sr_conflicts (int state)
|
||||
{
|
||||
int i;
|
||||
@@ -296,11 +264,11 @@ count_sr_conflicts (int state)
|
||||
unsigned *fp3;
|
||||
int symbol;
|
||||
|
||||
src_count = 0;
|
||||
int src_count = 0;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
if (!shiftp)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < tokensetsize; i++)
|
||||
{
|
||||
@@ -313,18 +281,18 @@ count_sr_conflicts (int state)
|
||||
{
|
||||
if (!shiftp->shifts[i])
|
||||
continue;
|
||||
symbol = accessing_symbol[shiftp->shifts[i]];
|
||||
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
SETBIT (shiftset, symbol);
|
||||
}
|
||||
|
||||
k = lookaheads[state + 1];
|
||||
k = state_table[state + 1].lookaheads;
|
||||
fp3 = lookaheadset + tokensetsize;
|
||||
|
||||
for (i = lookaheads[state]; i < k; i++)
|
||||
for (i = state_table[state].lookaheads; i < k; i++)
|
||||
{
|
||||
fp1 = LA + i * tokensetsize;
|
||||
fp1 = LA (i);
|
||||
fp2 = lookaheadset;
|
||||
|
||||
while (fp2 < fp3)
|
||||
@@ -351,6 +319,8 @@ count_sr_conflicts (int state)
|
||||
fp2++;
|
||||
}
|
||||
}
|
||||
|
||||
return src_count;
|
||||
}
|
||||
|
||||
|
||||
@@ -358,33 +328,29 @@ count_sr_conflicts (int state)
|
||||
| Count the number of reduce/reduce conflicts. |
|
||||
`----------------------------------------------*/
|
||||
|
||||
static void
|
||||
static int
|
||||
count_rr_conflicts (int state)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int count;
|
||||
unsigned mask;
|
||||
unsigned *baseword;
|
||||
unsigned *wordp;
|
||||
int m;
|
||||
int n;
|
||||
|
||||
rrc_count = 0;
|
||||
int rrc_count = 0;
|
||||
|
||||
m = lookaheads[state];
|
||||
n = lookaheads[state + 1];
|
||||
int m = state_table[state].lookaheads;
|
||||
int n = state_table[state + 1].lookaheads;
|
||||
|
||||
if (n - m < 2)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
mask = 1;
|
||||
baseword = LA + m * tokensetsize;
|
||||
baseword = LA (m);
|
||||
for (i = 0; i < ntokens; i++)
|
||||
{
|
||||
wordp = baseword;
|
||||
unsigned *wordp = baseword;
|
||||
|
||||
count = 0;
|
||||
int count = 0;
|
||||
int j;
|
||||
for (j = m; j < n; j++)
|
||||
{
|
||||
if (mask & *wordp)
|
||||
@@ -403,6 +369,8 @@ count_rr_conflicts (int state)
|
||||
baseword++;
|
||||
}
|
||||
}
|
||||
|
||||
return rrc_count;
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------.
|
||||
@@ -416,31 +384,23 @@ conflict_report (int src_num, int rrc_num)
|
||||
static char res[4096];
|
||||
char *cp = res;
|
||||
|
||||
if (src_num == 1)
|
||||
if (src_num >= 1)
|
||||
{
|
||||
sprintf (cp, _(" 1 shift/reduce conflict"));
|
||||
cp += strlen (cp);
|
||||
}
|
||||
else if (src_num > 1)
|
||||
{
|
||||
sprintf (cp, _(" %d shift/reduce conflicts"), src_num);
|
||||
sprintf (cp, ngettext ("%d shift/reduce conflict",
|
||||
"%d shift/reduce conflicts", src_num), src_num);
|
||||
cp += strlen (cp);
|
||||
}
|
||||
|
||||
if (src_num > 0 && rrc_num > 0)
|
||||
{
|
||||
sprintf (cp, _(" and"));
|
||||
sprintf (cp, " %s ", _("and"));
|
||||
cp += strlen (cp);
|
||||
}
|
||||
|
||||
if (rrc_num == 1)
|
||||
if (rrc_num >= 1)
|
||||
{
|
||||
sprintf (cp, _(" 1 reduce/reduce conflict"));
|
||||
cp += strlen (cp);
|
||||
}
|
||||
else if (rrc_num > 1)
|
||||
{
|
||||
sprintf (cp, _(" %d reduce/reduce conflicts"), rrc_num);
|
||||
sprintf (cp, ngettext ("%d reduce/reduce conflict",
|
||||
"%d reduce/reduce conflicts", rrc_num), rrc_num);
|
||||
cp += strlen (cp);
|
||||
}
|
||||
|
||||
@@ -452,61 +412,81 @@ conflict_report (int src_num, int rrc_num)
|
||||
}
|
||||
|
||||
|
||||
/*---------------------------------------------.
|
||||
| Compute and give a report on the conflicts. |
|
||||
`---------------------------------------------*/
|
||||
/*-----------------------------------------------------------.
|
||||
| Output the detailed description of states with conflicts. |
|
||||
`-----------------------------------------------------------*/
|
||||
|
||||
void
|
||||
print_conflicts (FILE *out)
|
||||
conflicts_output (FILE *out)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < nstates; i++)
|
||||
if (conflicts[i])
|
||||
{
|
||||
fprintf (out, _("State %d contains "), i);
|
||||
fputs (conflict_report (count_sr_conflicts (i),
|
||||
count_rr_conflicts (i)), out);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------.
|
||||
| Reporting the total number of conflicts. |
|
||||
`------------------------------------------*/
|
||||
|
||||
void
|
||||
conflicts_print (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
src_total = 0;
|
||||
rrc_total = 0;
|
||||
int src_total = 0;
|
||||
int rrc_total = 0;
|
||||
|
||||
/* Count the total number of conflicts, and if wanted, give a
|
||||
detailed report in FOUTPUT. */
|
||||
/* Conflicts by state. */
|
||||
for (i = 0; i < nstates; i++)
|
||||
{
|
||||
if (conflicts[i])
|
||||
{
|
||||
count_sr_conflicts (i);
|
||||
count_rr_conflicts (i);
|
||||
src_total += src_count;
|
||||
rrc_total += rrc_count;
|
||||
if (conflicts[i])
|
||||
{
|
||||
src_total += count_sr_conflicts (i);
|
||||
rrc_total += count_rr_conflicts (i);
|
||||
}
|
||||
|
||||
if (verbose_flag)
|
||||
{
|
||||
fprintf (out, _("State %d contains"), i);
|
||||
fputs (conflict_report (src_count, rrc_count), out);
|
||||
}
|
||||
/* Report the total number of conflicts on STDERR. */
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/* Report the total number of conflicts on STDERR. */
|
||||
if (yacc_flag)
|
||||
if (expected_conflicts != -1
|
||||
&& src_total != expected_conflicts)
|
||||
{
|
||||
/* 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);
|
||||
complain_message_count++;
|
||||
fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
|
||||
"expected %d shift/reduce conflicts\n",
|
||||
expected_conflicts),
|
||||
expected_conflicts);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
print_reductions (int state)
|
||||
print_reductions (FILE *out, int state)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
@@ -531,7 +511,7 @@ print_reductions (int state)
|
||||
for (i = 0; i < tokensetsize; i++)
|
||||
shiftset[i] = 0;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
if (shiftp)
|
||||
{
|
||||
k = shiftp->nshifts;
|
||||
@@ -539,7 +519,7 @@ print_reductions (int state)
|
||||
{
|
||||
if (!shiftp->shifts[i])
|
||||
continue;
|
||||
symbol = accessing_symbol[shiftp->shifts[i]];
|
||||
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
/* if this state has a shift for the error token,
|
||||
@@ -563,14 +543,14 @@ print_reductions (int state)
|
||||
}
|
||||
}
|
||||
|
||||
m = lookaheads[state];
|
||||
n = lookaheads[state + 1];
|
||||
m = state_table[state].lookaheads;
|
||||
n = state_table[state + 1].lookaheads;
|
||||
|
||||
if (n - m == 1 && !nodefault)
|
||||
{
|
||||
default_rule = LAruleno[m];
|
||||
|
||||
fp1 = LA + m * tokensetsize;
|
||||
fp1 = LA (m);
|
||||
fp2 = shiftset;
|
||||
fp3 = lookaheadset;
|
||||
fp4 = lookaheadset + tokensetsize;
|
||||
@@ -584,9 +564,9 @@ print_reductions (int state)
|
||||
for (i = 0; i < ntokens; i++)
|
||||
{
|
||||
if (mask & *fp3)
|
||||
obstack_fgrow3 (&output_obstack,
|
||||
_(" %-4s\t[reduce using rule %d (%s)]\n"),
|
||||
tags[i], default_rule, tags[rlhs[default_rule]]);
|
||||
fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
|
||||
tags[i], default_rule,
|
||||
tags[rule_table[default_rule].lhs]);
|
||||
|
||||
mask <<= 1;
|
||||
if (mask == 0)
|
||||
@@ -596,9 +576,8 @@ print_reductions (int state)
|
||||
}
|
||||
}
|
||||
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_(" $default\treduce using rule %d (%s)\n\n"),
|
||||
default_rule, tags[rlhs[default_rule]]);
|
||||
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
|
||||
default_rule, tags[rule_table[default_rule].lhs]);
|
||||
}
|
||||
else if (n - m >= 1)
|
||||
{
|
||||
@@ -609,7 +588,7 @@ print_reductions (int state)
|
||||
if (!nodefault)
|
||||
for (i = m; i < n; i++)
|
||||
{
|
||||
fp1 = LA + i * tokensetsize;
|
||||
fp1 = LA (i);
|
||||
fp2 = shiftset;
|
||||
fp3 = lookaheadset;
|
||||
|
||||
@@ -656,7 +635,7 @@ print_reductions (int state)
|
||||
{
|
||||
if (!shiftp->shifts[i])
|
||||
continue;
|
||||
symbol = accessing_symbol[shiftp->shifts[i]];
|
||||
symbol = state_table[shiftp->shifts[i]].accessing_symbol;
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
SETBIT (shiftset, symbol);
|
||||
@@ -664,7 +643,7 @@ print_reductions (int state)
|
||||
}
|
||||
|
||||
mask = 1;
|
||||
fp1 = LA + m * tokensetsize;
|
||||
fp1 = LA (m);
|
||||
fp2 = shiftset;
|
||||
for (i = 0; i < ntokens; i++)
|
||||
{
|
||||
@@ -685,9 +664,9 @@ print_reductions (int state)
|
||||
if (j != default_LA)
|
||||
{
|
||||
rule = LAruleno[j];
|
||||
obstack_fgrow3 (&output_obstack,
|
||||
fprintf (out,
|
||||
_(" %-4s\treduce using rule %d (%s)\n"),
|
||||
tags[i], rule, tags[rlhs[rule]]);
|
||||
tags[i], rule, tags[rule_table[rule].lhs]);
|
||||
}
|
||||
else
|
||||
defaulted = 1;
|
||||
@@ -699,15 +678,15 @@ print_reductions (int state)
|
||||
if (defaulted)
|
||||
{
|
||||
rule = LAruleno[default_LA];
|
||||
obstack_fgrow3 (&output_obstack,
|
||||
fprintf (out,
|
||||
_(" %-4s\treduce using rule %d (%s)\n"),
|
||||
tags[i], rule, tags[rlhs[rule]]);
|
||||
tags[i], rule, tags[rule_table[rule].lhs]);
|
||||
defaulted = 0;
|
||||
}
|
||||
rule = LAruleno[j];
|
||||
obstack_fgrow3 (&output_obstack,
|
||||
fprintf (out,
|
||||
_(" %-4s\t[reduce using rule %d (%s)]\n"),
|
||||
tags[i], rule, tags[rlhs[rule]]);
|
||||
tags[i], rule, tags[rule_table[rule].lhs]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -726,11 +705,8 @@ print_reductions (int state)
|
||||
}
|
||||
|
||||
if (default_LA >= 0)
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_(" $default\treduce using rule %d (%s)\n"),
|
||||
default_rule, tags[rlhs[default_rule]]);
|
||||
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
fprintf (out, _(" $default\treduce using rule %d (%s)\n"),
|
||||
default_rule, tags[rule_table[default_rule].lhs]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -23,12 +23,12 @@
|
||||
# include "state.h"
|
||||
|
||||
void solve_conflicts PARAMS ((void));
|
||||
void print_conflicts PARAMS ((FILE *out));
|
||||
void print_reductions PARAMS ((int));
|
||||
void conflicts_print PARAMS ((void));
|
||||
void conflicts_output PARAMS ((FILE *out));
|
||||
void print_reductions PARAMS ((FILE*out, int state));
|
||||
void free_conflicts PARAMS ((void));
|
||||
|
||||
/* Were there conflicts? */
|
||||
extern int any_conflicts;
|
||||
extern errs **err_table;
|
||||
extern int expected_conflicts;
|
||||
#endif /* !CONFLICTS_H_ */
|
||||
|
||||
+15
-15
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -25,38 +25,39 @@
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "types.h"
|
||||
#include "reader.h"
|
||||
#include "gram.h"
|
||||
#include "derives.h"
|
||||
|
||||
short **derives;
|
||||
|
||||
#if DEBUG
|
||||
|
||||
static void
|
||||
print_derives (void)
|
||||
{
|
||||
int i;
|
||||
short *sp;
|
||||
|
||||
fputs ("\n\n\n", stdout);
|
||||
printf (_("DERIVES"));
|
||||
fputs ("\n\n", stdout);
|
||||
fputs ("DERIVES\n", stderr);
|
||||
|
||||
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++)
|
||||
{
|
||||
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]);
|
||||
fputc ('\n', stderr);
|
||||
}
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
putchar ('\n');
|
||||
fputs ("\n\n", stderr);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void
|
||||
set_derives (void)
|
||||
@@ -74,7 +75,7 @@ set_derives (void)
|
||||
p = delts;
|
||||
for (i = nrules; i > 0; i--)
|
||||
{
|
||||
lhs = rlhs[i];
|
||||
lhs = rule_table[i].lhs;
|
||||
if (lhs >= 0)
|
||||
{
|
||||
p->next = dset[lhs];
|
||||
@@ -99,9 +100,8 @@ set_derives (void)
|
||||
*q++ = -1;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
print_derives ();
|
||||
#endif
|
||||
if (trace_flag)
|
||||
print_derives ();
|
||||
|
||||
XFREE (dset + ntokens);
|
||||
XFREE (delts);
|
||||
|
||||
+2
-2
@@ -32,9 +32,9 @@ int no_lines_flag = 0;
|
||||
int no_parser_flag = 0;
|
||||
int token_table_flag = 0;
|
||||
int verbose_flag = 0;
|
||||
int statistics_flag = 0;
|
||||
int yacc_flag = 0; /* for -y */
|
||||
int graph_flag = 0;
|
||||
int trace_flag = 0;
|
||||
|
||||
const char *skeleton = NULL;
|
||||
|
||||
@@ -68,7 +68,7 @@ static struct option longopts[] =
|
||||
{"graph", optional_argument, 0, 'g'},
|
||||
|
||||
/* Hidden. */
|
||||
{"statistics", no_argument, &statistics_flag, 1},
|
||||
{"trace", no_argument, &trace_flag, 1},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -31,11 +31,11 @@ extern int defines_flag; /* for -d */
|
||||
extern int locations_flag;
|
||||
extern int no_lines_flag; /* for -l */
|
||||
extern int no_parser_flag; /* for -n */
|
||||
extern int statistics_flag;
|
||||
extern int token_table_flag; /* for -k */
|
||||
extern int verbose_flag; /* for -v */
|
||||
extern int graph_flag; /* for -g */
|
||||
extern int yacc_flag; /* for -y */
|
||||
extern int trace_flag;
|
||||
|
||||
void getargs PARAMS ((int argc, char *argv[]));
|
||||
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -20,6 +20,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
|
||||
#include "system.h"
|
||||
#include "gram.h"
|
||||
|
||||
void dummy PARAMS((void));
|
||||
|
||||
@@ -32,8 +33,7 @@ int ntokens;
|
||||
int nvars;
|
||||
|
||||
short *ritem = NULL;
|
||||
short *rlhs = NULL;
|
||||
short *rrhs = NULL;
|
||||
rule_t *rule_table = NULL;
|
||||
short *rprec = NULL;
|
||||
short *rprecsym = NULL;
|
||||
short *sprec = NULL;
|
||||
|
||||
+37
-19
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -38,21 +38,36 @@
|
||||
The rules receive rule numbers 1 to nrules in the order they are
|
||||
written. Actions and guards are accessed via the rule number.
|
||||
|
||||
The rules themselves are described by three arrays: rrhs, rlhs and
|
||||
ritem. rlhs[R] is the symbol number of the left hand side of rule
|
||||
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
|
||||
The rules themselves are described by several arrays: amongst which
|
||||
RITEM, and RULE_TABLE.
|
||||
|
||||
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.
|
||||
|
||||
If rlhs[R] is -1, the rule has been thrown out by reduce.c and
|
||||
should be ignored.
|
||||
RULE_TABLE[R].prec -- the precedence level of R.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -61,10 +76,7 @@
|
||||
Item numbers are used in the finite state machine to represent
|
||||
places that parsing can get to.
|
||||
|
||||
Precedence levels are recorded in the vectors sprec and rprec.
|
||||
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).
|
||||
SPREC records the precedence level of each symbol.
|
||||
|
||||
Precedence levels are assigned in increasing order starting with 1
|
||||
so that numerically higher precedence values mean tighter binding
|
||||
@@ -84,18 +96,12 @@ extern int ntokens;
|
||||
extern int nvars;
|
||||
|
||||
extern short *ritem;
|
||||
extern short *rlhs;
|
||||
extern short *rrhs;
|
||||
extern short *rprec;
|
||||
extern short *rprecsym;
|
||||
|
||||
extern short *sprec;
|
||||
extern short *rassoc;
|
||||
extern short *sassoc;
|
||||
extern short *rline; /* Source line number of each rule */
|
||||
|
||||
extern int start_symbol;
|
||||
|
||||
|
||||
/* associativity values in elements of rassoc, sassoc. */
|
||||
typedef enum
|
||||
{
|
||||
@@ -105,6 +111,18 @@ typedef enum
|
||||
} associativity;
|
||||
|
||||
|
||||
typedef struct rule_s
|
||||
{
|
||||
short lhs;
|
||||
short rhs;
|
||||
short prec;
|
||||
short precsym;
|
||||
short assoc;
|
||||
short line;
|
||||
} rule_t;
|
||||
|
||||
extern struct rule_s *rule_table;
|
||||
|
||||
/* token translation table: indexed by a token number as returned by
|
||||
the user's yylex routine, it yields the internal token number used
|
||||
by the parser and throughout bison. */
|
||||
|
||||
+121
-168
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -32,15 +32,15 @@
|
||||
#include "nullable.h"
|
||||
#include "derives.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;
|
||||
short *lookaheads;
|
||||
short *LAruleno;
|
||||
unsigned *LA;
|
||||
short *accessing_symbol;
|
||||
char *consistent;
|
||||
core **state_table;
|
||||
shifts **shift_table;
|
||||
reductions **reduction_table;
|
||||
|
||||
short *goto_map;
|
||||
short *from_state;
|
||||
short *to_state;
|
||||
@@ -48,9 +48,13 @@ short *to_state;
|
||||
extern void berror PARAMS ((const char *));
|
||||
|
||||
static int infinity;
|
||||
static int maxrhs;
|
||||
static int ngotos;
|
||||
static unsigned *F;
|
||||
|
||||
/* And for the famous F variable, which named is so descriptive that a
|
||||
comment is hardly needed. <grin>. */
|
||||
static unsigned *F = NULL;
|
||||
#define F(Rule) (F + (Rule) * tokensetsize)
|
||||
|
||||
static short **includes;
|
||||
static shorts **lookback;
|
||||
static short **R;
|
||||
@@ -74,8 +78,8 @@ traverse (int i)
|
||||
VERTICES[++top] = i;
|
||||
INDEX[i] = height = top;
|
||||
|
||||
base = F + i * tokensetsize;
|
||||
fp3 = base + tokensetsize;
|
||||
base = F (i);
|
||||
fp3 = F (i + 1);
|
||||
|
||||
rp = R[i];
|
||||
if (rp)
|
||||
@@ -89,7 +93,7 @@ traverse (int i)
|
||||
INDEX[i] = INDEX[j];
|
||||
|
||||
fp1 = base;
|
||||
fp2 = F + j * tokensetsize;
|
||||
fp2 = F (j);
|
||||
|
||||
while (fp1 < fp3)
|
||||
*fp1++ |= *fp2++;
|
||||
@@ -107,7 +111,7 @@ traverse (int i)
|
||||
break;
|
||||
|
||||
fp1 = base;
|
||||
fp2 = F + j * tokensetsize;
|
||||
fp2 = F (j);
|
||||
|
||||
while (fp1 < fp3)
|
||||
*fp2++ = *fp1++;
|
||||
@@ -132,65 +136,85 @@ digraph (short **relation)
|
||||
INDEX[i] = 0;
|
||||
|
||||
for (i = 0; i < ngotos; i++)
|
||||
{
|
||||
if (INDEX[i] == 0 && R[i])
|
||||
traverse (i);
|
||||
}
|
||||
if (INDEX[i] == 0 && R[i])
|
||||
traverse (i);
|
||||
|
||||
XFREE (INDEX);
|
||||
XFREE (VERTICES);
|
||||
}
|
||||
|
||||
|
||||
/*--------------------.
|
||||
| Build STATE_TABLE. |
|
||||
`--------------------*/
|
||||
|
||||
static 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].shift_table = sp;
|
||||
}
|
||||
|
||||
{
|
||||
reductions *rp;
|
||||
for (rp = first_reduction; rp; rp = rp->next)
|
||||
state_table[rp->number].reduction_table = rp;
|
||||
}
|
||||
|
||||
/* 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].reduction_table;
|
||||
shifts *sp = state_table[i].shift_table;
|
||||
|
||||
state_table[i].lookaheads = count;
|
||||
|
||||
if (rp
|
||||
&& (rp->nreds > 1
|
||||
|| (sp && !ISVAR (state_table[sp->shifts[0]].accessing_symbol))))
|
||||
count += rp->nreds;
|
||||
else
|
||||
state_table[i].consistent = 1;
|
||||
|
||||
if (sp)
|
||||
for (k = 0; k < sp->nshifts; k++)
|
||||
if (state_table[sp->shifts[k]].accessing_symbol
|
||||
== error_token_number)
|
||||
{
|
||||
state_table[i].consistent = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
state_table[nstates].lookaheads = count;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
set_accessing_symbol (void)
|
||||
{
|
||||
core *sp;
|
||||
|
||||
accessing_symbol = XCALLOC (short, nstates);
|
||||
|
||||
for (sp = first_state; sp; sp = sp->next)
|
||||
accessing_symbol[sp->number] = sp->accessing_symbol;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
set_shift_table (void)
|
||||
{
|
||||
shifts *sp;
|
||||
|
||||
shift_table = XCALLOC (shifts *, nstates);
|
||||
|
||||
for (sp = first_shift; sp; sp = sp->next)
|
||||
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)
|
||||
/* Return the size of the longest ride hand side of the rules. */
|
||||
static size_t
|
||||
maxrhs (void)
|
||||
{
|
||||
short *itemp;
|
||||
int length;
|
||||
@@ -212,7 +236,7 @@ set_maxrhs (void)
|
||||
}
|
||||
}
|
||||
|
||||
maxrhs = max;
|
||||
return max;
|
||||
}
|
||||
|
||||
|
||||
@@ -221,65 +245,23 @@ initialize_LA (void)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
int count;
|
||||
reductions *rp;
|
||||
shifts *sp;
|
||||
short *np;
|
||||
reductions *rp;
|
||||
|
||||
consistent = XCALLOC (char, nstates);
|
||||
lookaheads = XCALLOC (short, nstates + 1);
|
||||
size_t nLA = state_table[nstates].lookaheads;
|
||||
if (!nLA)
|
||||
nLA = 1;
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < nstates; i++)
|
||||
{
|
||||
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);
|
||||
}
|
||||
LA = XCALLOC (unsigned, nLA * tokensetsize);
|
||||
LAruleno = XCALLOC (short, nLA);
|
||||
lookback = XCALLOC (shorts *, nLA);
|
||||
|
||||
np = LAruleno;
|
||||
for (i = 0; i < nstates; i++)
|
||||
{
|
||||
if (!consistent[i])
|
||||
{
|
||||
if ((rp = reduction_table[i]))
|
||||
for (j = 0; j < rp->nreds; j++)
|
||||
*np++ = rp->rules[j];
|
||||
}
|
||||
}
|
||||
if (!state_table[i].consistent)
|
||||
if ((rp = state_table[i].reduction_table))
|
||||
for (j = 0; j < rp->nreds; j++)
|
||||
*np++ = rp->rules[j];
|
||||
}
|
||||
|
||||
|
||||
@@ -302,7 +284,7 @@ set_goto_map (void)
|
||||
{
|
||||
for (i = sp->nshifts - 1; i >= 0; i--)
|
||||
{
|
||||
symbol = accessing_symbol[sp->shifts[i]];
|
||||
symbol = state_table[sp->shifts[i]].accessing_symbol;
|
||||
|
||||
if (ISTOKEN (symbol))
|
||||
break;
|
||||
@@ -337,7 +319,7 @@ set_goto_map (void)
|
||||
for (i = sp->nshifts - 1; i >= 0; i--)
|
||||
{
|
||||
state2 = sp->shifts[i];
|
||||
symbol = accessing_symbol[state2];
|
||||
symbol = state_table[state2].accessing_symbol;
|
||||
|
||||
if (ISTOKEN (symbol))
|
||||
break;
|
||||
@@ -413,7 +395,7 @@ initialize_F (void)
|
||||
for (i = 0; i < ngotos; i++)
|
||||
{
|
||||
stateno = to_state[i];
|
||||
sp = shift_table[stateno];
|
||||
sp = state_table[stateno].shift_table;
|
||||
|
||||
if (sp)
|
||||
{
|
||||
@@ -421,7 +403,7 @@ initialize_F (void)
|
||||
|
||||
for (j = 0; j < k; j++)
|
||||
{
|
||||
symbol = accessing_symbol[sp->shifts[j]];
|
||||
symbol = state_table[sp->shifts[j]].accessing_symbol;
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
SETBIT (rowp, symbol);
|
||||
@@ -429,7 +411,7 @@ initialize_F (void)
|
||||
|
||||
for (; j < k; j++)
|
||||
{
|
||||
symbol = accessing_symbol[sp->shifts[j]];
|
||||
symbol = state_table[sp->shifts[j]].accessing_symbol;
|
||||
if (nullable[symbol])
|
||||
edge[nedges++] = map_goto (stateno, symbol);
|
||||
}
|
||||
@@ -452,10 +434,7 @@ initialize_F (void)
|
||||
digraph (reads);
|
||||
|
||||
for (i = 0; i < ngotos; i++)
|
||||
{
|
||||
if (reads[i])
|
||||
XFREE (reads[i]);
|
||||
}
|
||||
XFREE (reads[i]);
|
||||
|
||||
XFREE (reads);
|
||||
XFREE (edge);
|
||||
@@ -470,8 +449,8 @@ add_lookback_edge (int stateno, int ruleno, int gotono)
|
||||
int found;
|
||||
shorts *sp;
|
||||
|
||||
i = lookaheads[stateno];
|
||||
k = lookaheads[stateno + 1];
|
||||
i = state_table[stateno].lookaheads;
|
||||
k = state_table[stateno + 1].lookaheads;
|
||||
found = 0;
|
||||
while (!found && i < k)
|
||||
{
|
||||
@@ -568,13 +547,13 @@ build_relations (void)
|
||||
|
||||
includes = XCALLOC (short *, ngotos);
|
||||
edge = XCALLOC (short, ngotos + 1);
|
||||
states = XCALLOC (short, maxrhs + 1);
|
||||
states = XCALLOC (short, maxrhs () + 1);
|
||||
|
||||
for (i = 0; i < ngotos; i++)
|
||||
{
|
||||
nedges = 0;
|
||||
state1 = from_state[i];
|
||||
symbol1 = accessing_symbol[to_state[i]];
|
||||
symbol1 = state_table[to_state[i]].accessing_symbol;
|
||||
|
||||
for (rulep = derives[symbol1]; *rulep > 0; rulep++)
|
||||
{
|
||||
@@ -582,23 +561,23 @@ build_relations (void)
|
||||
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;
|
||||
sp = shift_table[stateno];
|
||||
sp = state_table[stateno].shift_table;
|
||||
k = sp->nshifts;
|
||||
|
||||
for (j = 0; j < k; j++)
|
||||
{
|
||||
stateno = sp->shifts[j];
|
||||
if (accessing_symbol[stateno] == symbol2)
|
||||
if (state_table[stateno].accessing_symbol == symbol2)
|
||||
break;
|
||||
}
|
||||
|
||||
states[length++] = stateno;
|
||||
}
|
||||
|
||||
if (!consistent[stateno])
|
||||
if (!state_table[stateno].consistent)
|
||||
add_lookback_edge (stateno, *rulep, i);
|
||||
|
||||
length--;
|
||||
@@ -651,10 +630,7 @@ compute_FOLLOWS (void)
|
||||
digraph (includes);
|
||||
|
||||
for (i = 0; i < ngotos; i++)
|
||||
{
|
||||
if (includes[i])
|
||||
XFREE (includes[i]);
|
||||
}
|
||||
XFREE (includes[i]);
|
||||
|
||||
XFREE (includes);
|
||||
}
|
||||
@@ -664,39 +640,20 @@ static void
|
||||
compute_lookaheads (void)
|
||||
{
|
||||
int i;
|
||||
int n;
|
||||
unsigned *fp1;
|
||||
unsigned *fp2;
|
||||
unsigned *fp3;
|
||||
shorts *sp;
|
||||
unsigned *rowp;
|
||||
shorts *sptmp; /* JF */
|
||||
|
||||
rowp = LA;
|
||||
n = lookaheads[nstates];
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
fp3 = rowp + tokensetsize;
|
||||
for (sp = lookback[i]; sp; sp = sp->next)
|
||||
{
|
||||
fp1 = rowp;
|
||||
fp2 = F + tokensetsize * sp->value;
|
||||
while (fp1 < fp3)
|
||||
*fp1++ |= *fp2++;
|
||||
}
|
||||
for (i = 0; i < state_table[nstates].lookaheads; i++)
|
||||
for (sp = lookback[i]; sp; sp = sp->next)
|
||||
{
|
||||
unsigned *fp1 = LA (i);
|
||||
unsigned *fp2 = F (sp->value);
|
||||
while (fp1 < LA (i + 1))
|
||||
*fp1++ |= *fp2++;
|
||||
}
|
||||
|
||||
rowp = fp3;
|
||||
}
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
/* JF removed ref to freed storage */
|
||||
for (sp = lookback[i]; sp; sp = sptmp)
|
||||
{
|
||||
sptmp = sp->next;
|
||||
XFREE (sp);
|
||||
}
|
||||
}
|
||||
/* Free LOOKBACK. */
|
||||
for (i = 0; i < state_table[nstates].lookaheads; i++)
|
||||
LIST_FREE (shorts, lookback[i]);
|
||||
|
||||
XFREE (lookback);
|
||||
XFREE (F);
|
||||
@@ -709,10 +666,6 @@ lalr (void)
|
||||
tokensetsize = WORDSIZE (ntokens);
|
||||
|
||||
set_state_table ();
|
||||
set_accessing_symbol ();
|
||||
set_shift_table ();
|
||||
set_reduction_table ();
|
||||
set_maxrhs ();
|
||||
initialize_LA ();
|
||||
set_goto_map ();
|
||||
initialize_F ();
|
||||
|
||||
+27
-13
@@ -49,12 +49,6 @@ extern short *goto_map;
|
||||
extern short *from_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
|
||||
various states. The elements of LARULENO that apply to state S are
|
||||
those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1. Each element
|
||||
@@ -72,15 +66,35 @@ extern short *LAruleno;
|
||||
it is a conflict. */
|
||||
|
||||
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 *shift_table;
|
||||
reductions *reduction_table;
|
||||
|
||||
/* 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 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_ */
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
|
||||
/* Buffer for storing the current token. */
|
||||
struct obstack token_obstack;
|
||||
char *token_buffer = NULL;
|
||||
const char *token_buffer = NULL;
|
||||
|
||||
bucket *symval;
|
||||
bucket *symval = NULL;
|
||||
int numval;
|
||||
|
||||
/* A token to be reread, see unlex and lex. */
|
||||
static token_t unlexed = tok_undef;
|
||||
static bucket *unlexed_symval = NULL;
|
||||
static char *unlexed_token_buffer = NULL;
|
||||
static const char *unlexed_token_buffer = NULL;
|
||||
|
||||
void
|
||||
lex_init (void)
|
||||
@@ -585,9 +585,9 @@ token_t
|
||||
parse_percent_token (void)
|
||||
{
|
||||
struct percent_table_struct *tx = NULL;
|
||||
/* Where `=' was found in token_buffer. */
|
||||
size_t equal_offset = 0;
|
||||
char *arg = NULL;
|
||||
const char *arg = NULL;
|
||||
/* Where the ARG was found in token_buffer. */
|
||||
size_t arg_offset = 0;
|
||||
|
||||
int c = getc (finput);
|
||||
|
||||
@@ -629,33 +629,34 @@ parse_percent_token (void)
|
||||
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 == '=')
|
||||
{
|
||||
equal_offset = obstack_object_size (&token_obstack);
|
||||
obstack_1grow (&token_obstack, c);
|
||||
/* End of the directive. We skip the `='. */
|
||||
obstack_1grow (&token_obstack, '\0');
|
||||
/* Fetch the ARG if present. */
|
||||
c = getc (finput);
|
||||
if (c = '"')
|
||||
if (c == '"')
|
||||
{
|
||||
int code; /* ignored here */
|
||||
|
||||
obstack_1grow (&token_obstack, '"');
|
||||
/* Read up to and including ". */
|
||||
while (literalchar (&token_obstack, &code, '"'))
|
||||
/* nothing */;
|
||||
int code;
|
||||
arg_offset = obstack_object_size (&token_obstack);
|
||||
/* Read up to and including `"'. Do not append the closing
|
||||
`"' in the output: it's not part of the ARG. */
|
||||
while (literalchar (NULL, &code, '"'))
|
||||
obstack_1grow (&token_obstack, code);
|
||||
}
|
||||
/* else: should be an error. */
|
||||
}
|
||||
else
|
||||
ungetc (c, finput);
|
||||
|
||||
obstack_1grow (&token_obstack, '\0');
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
if (equal_offset)
|
||||
{
|
||||
/* %token_buffer="arg" */
|
||||
arg = token_buffer + equal_offset + 2;
|
||||
arg[strlen (arg) - 1] = '\0';
|
||||
token_buffer[equal_offset] = '\0';
|
||||
}
|
||||
if (arg_offset)
|
||||
arg = token_buffer + arg_offset;
|
||||
|
||||
/* table lookup % directive */
|
||||
for (tx = percent_table; tx->name; tx++)
|
||||
@@ -676,7 +677,7 @@ parse_percent_token (void)
|
||||
precedence. Side effect: if this %-option is used
|
||||
several times, only the first is honored. Bah. */
|
||||
if (!*((char **) (tx->set_flag)))
|
||||
*((char **) (tx->set_flag)) = arg;
|
||||
*((char **) (tx->set_flag)) = xstrdup (arg);
|
||||
}
|
||||
else
|
||||
fatal (_("`%s' requires an argument"), token_buffer);
|
||||
|
||||
@@ -55,7 +55,7 @@ typedef enum token_e
|
||||
tok_obsolete
|
||||
} token_t;
|
||||
|
||||
extern char *token_buffer;
|
||||
extern const char *token_buffer;
|
||||
extern bucket *symval;
|
||||
extern int numval;
|
||||
|
||||
|
||||
+12
-9
@@ -62,15 +62,16 @@ main (int argc, char *argv[])
|
||||
if (complain_message_count)
|
||||
exit (1);
|
||||
|
||||
/* find useless nonterminals and productions and reduce the grammar. In
|
||||
file reduce.c */
|
||||
/* Find useless nonterminals and productions and reduce the grammar.
|
||||
In file reduce.c. */
|
||||
reduce_grammar ();
|
||||
|
||||
/* record other info about the grammar. In files derives and nullable. */
|
||||
/* Record other info about the grammar. In files derives and
|
||||
nullable. */
|
||||
set_derives ();
|
||||
set_nullable ();
|
||||
|
||||
/* convert to nondeterministic finite state machine. In file LR0.
|
||||
/* Convert to nondeterministic finite state machine. In file LR0.
|
||||
See state.h for more info. */
|
||||
generate_states ();
|
||||
|
||||
@@ -82,6 +83,7 @@ main (int argc, char *argv[])
|
||||
conflicts. Also resolve s/r conflicts based on precedence
|
||||
declarations. */
|
||||
solve_conflicts ();
|
||||
conflicts_print ();
|
||||
|
||||
/* Output file names. */
|
||||
compute_output_file_names ();
|
||||
@@ -91,7 +93,7 @@ main (int argc, char *argv[])
|
||||
if (complain_message_count)
|
||||
exit (1);
|
||||
|
||||
/* Print information about results, if requested. */
|
||||
/* Output the detailed report on the grammar. */
|
||||
print_results ();
|
||||
|
||||
/* Output the VCG graph. */
|
||||
@@ -100,21 +102,22 @@ main (int argc, char *argv[])
|
||||
/* Output the tables and the parser to ftable. In file output. */
|
||||
output ();
|
||||
|
||||
/* Close the input files. */
|
||||
close_files ();
|
||||
|
||||
/* Free the symbol table data structure. */
|
||||
free_symtab ();
|
||||
|
||||
lex_free ();
|
||||
|
||||
/* Close the input files. */
|
||||
close_files ();
|
||||
|
||||
reduce_free ();
|
||||
free_conflicts ();
|
||||
free_nullable ();
|
||||
free_derives ();
|
||||
|
||||
output_files ();
|
||||
|
||||
exit (complain_message_count ? 1 : 0);
|
||||
return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
/* Abort for an internal error denoted by string S. */
|
||||
|
||||
+27
-18
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -24,32 +24,39 @@
|
||||
do so. */
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "reader.h"
|
||||
#include "types.h"
|
||||
#include "gram.h"
|
||||
#include "nullable.h"
|
||||
|
||||
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
|
||||
set_nullable (void)
|
||||
{
|
||||
short *r;
|
||||
short *s1;
|
||||
short *s2;
|
||||
int ruleno;
|
||||
int symbol;
|
||||
shorts *p;
|
||||
|
||||
short *squeue;
|
||||
short *rcount;
|
||||
shorts **rsets;
|
||||
shorts *relts;
|
||||
char any_tokens;
|
||||
short *r1;
|
||||
|
||||
#ifdef TRACE
|
||||
fprintf (stderr, _("Entering set_nullable"));
|
||||
#endif
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Entering set_nullable\n");
|
||||
|
||||
nullable = XCALLOC (char, nvars) - ntokens;
|
||||
|
||||
@@ -69,7 +76,7 @@ set_nullable (void)
|
||||
{
|
||||
if (*r < 0)
|
||||
{
|
||||
symbol = rlhs[-(*r++)];
|
||||
int symbol = rule_table[-(*r++)].lhs;
|
||||
if (symbol >= 0 && !nullable[symbol])
|
||||
{
|
||||
nullable[symbol] = 1;
|
||||
@@ -78,17 +85,16 @@ set_nullable (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
r1 = r;
|
||||
any_tokens = 0;
|
||||
int any_tokens = 0;
|
||||
int symbol;
|
||||
short *r1 = r;
|
||||
for (symbol = *r++; symbol > 0; symbol = *r++)
|
||||
{
|
||||
if (ISTOKEN (symbol))
|
||||
any_tokens = 1;
|
||||
}
|
||||
if (ISTOKEN (symbol))
|
||||
any_tokens = 1;
|
||||
|
||||
if (!any_tokens)
|
||||
{
|
||||
ruleno = -symbol;
|
||||
int ruleno = -symbol;
|
||||
r = r1;
|
||||
for (symbol = *r++; symbol > 0; symbol = *r++)
|
||||
{
|
||||
@@ -107,11 +113,11 @@ set_nullable (void)
|
||||
p = rsets[*s1++];
|
||||
while (p)
|
||||
{
|
||||
ruleno = p->value;
|
||||
int ruleno = p->value;
|
||||
p = p->next;
|
||||
if (--rcount[ruleno] == 0)
|
||||
{
|
||||
symbol = rlhs[ruleno];
|
||||
int symbol = rule_table[ruleno].lhs;
|
||||
if (symbol >= 0 && !nullable[symbol])
|
||||
{
|
||||
nullable[symbol] = 1;
|
||||
@@ -125,6 +131,9 @@ set_nullable (void)
|
||||
XFREE (rcount);
|
||||
XFREE (rsets + ntokens);
|
||||
XFREE (relts);
|
||||
|
||||
if (trace_flag)
|
||||
nullable_print (stderr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+50
-72
@@ -319,8 +319,15 @@ output_gram (void)
|
||||
if (!semantic_parser && !no_parser_flag)
|
||||
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;
|
||||
@@ -347,7 +354,13 @@ output_gram (void)
|
||||
static 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);
|
||||
}
|
||||
|
||||
@@ -362,10 +375,16 @@ output_rule_data (void)
|
||||
obstack_sgrow (&table_obstack, "\n\
|
||||
#if YYDEBUG != 0\n");
|
||||
|
||||
output_short_table (&table_obstack,
|
||||
"YYRLINE[YYN] -- source line where rule number YYN was defined",
|
||||
"yyrline", rline,
|
||||
0, 1, nrules + 1);
|
||||
{
|
||||
short *values = XCALLOC (short, nrules + 1);
|
||||
for (i = 0; i < nrules + 1; ++i)
|
||||
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");
|
||||
|
||||
@@ -449,19 +468,24 @@ output_rule_data (void)
|
||||
}
|
||||
|
||||
/* 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", rlhs,
|
||||
0, 1, nrules + 1);
|
||||
XFREE (rlhs + 1);
|
||||
"yyr1", values,
|
||||
0, 1, nrules + 1);
|
||||
XFREE (values);
|
||||
}
|
||||
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
/* Output YYR2. */
|
||||
short_tab = XMALLOC (short, nrules + 1);
|
||||
for (i = 1; i < nrules; i++)
|
||||
short_tab[i] = rrhs[i + 1] - rrhs[i] - 1;
|
||||
short_tab[nrules] = nitems - rrhs[nrules] - 1;
|
||||
short_tab[i] = rule_table[i + 1].rhs - rule_table[i].rhs - 1;
|
||||
short_tab[nrules] = nitems - rule_table[nrules].rhs - 1;
|
||||
output_short_table (&table_obstack,
|
||||
"YYR2[YYN] -- Number of symbols composing right hand side of rule YYN",
|
||||
"yyr2", short_tab,
|
||||
@@ -470,7 +494,7 @@ output_rule_data (void)
|
||||
|
||||
XFREE (short_tab);
|
||||
|
||||
XFREE (rrhs + 1);
|
||||
XFREE (rule_table + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -524,7 +548,7 @@ action_row (int state)
|
||||
|
||||
default_rule = 0;
|
||||
nreds = 0;
|
||||
redp = reduction_table[state];
|
||||
redp = state_table[state].reduction_table;
|
||||
|
||||
if (redp)
|
||||
{
|
||||
@@ -534,13 +558,13 @@ action_row (int state)
|
||||
{
|
||||
/* loop over all the rules available here which require
|
||||
lookahead */
|
||||
m = lookaheads[state];
|
||||
n = lookaheads[state + 1];
|
||||
m = state_table[state].lookaheads;
|
||||
n = state_table[state + 1].lookaheads;
|
||||
|
||||
for (i = n - 1; i >= m; i--)
|
||||
{
|
||||
rule = -LAruleno[i];
|
||||
wordp = LA + i * tokensetsize;
|
||||
wordp = LA (i);
|
||||
mask = 1;
|
||||
|
||||
/* and find each token which the rule finds acceptable
|
||||
@@ -563,7 +587,7 @@ action_row (int state)
|
||||
}
|
||||
}
|
||||
|
||||
shiftp = shift_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
|
||||
/* 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
|
||||
@@ -579,7 +603,7 @@ action_row (int state)
|
||||
if (!shift_state)
|
||||
continue;
|
||||
|
||||
symbol = accessing_symbol[shift_state];
|
||||
symbol = state_table[shift_state].accessing_symbol;
|
||||
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
@@ -614,7 +638,7 @@ action_row (int state)
|
||||
|
||||
if (nreds >= 1 && !nodefault)
|
||||
{
|
||||
if (consistent[state])
|
||||
if (state_table[state].consistent)
|
||||
default_rule = redp->rules[0];
|
||||
else
|
||||
{
|
||||
@@ -736,37 +760,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
|
||||
save_column (int symbol, int default_state)
|
||||
{
|
||||
@@ -1116,12 +1109,10 @@ output_actions (void)
|
||||
width = XCALLOC (short, nvectors);
|
||||
|
||||
token_actions ();
|
||||
free_shifts ();
|
||||
free_reductions ();
|
||||
XFREE (lookaheads);
|
||||
LIST_FREE (shifts, first_shift);
|
||||
LIST_FREE (reductions, first_reduction);
|
||||
XFREE (LA);
|
||||
XFREE (LAruleno);
|
||||
XFREE (accessing_symbol);
|
||||
|
||||
goto_actions ();
|
||||
XFREE (goto_map + ntokens);
|
||||
@@ -1288,21 +1279,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. |
|
||||
`----------------------------------------------------------*/
|
||||
@@ -1334,7 +1310,7 @@ output (void)
|
||||
if (!no_parser_flag)
|
||||
obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n");
|
||||
|
||||
free_itemsets ();
|
||||
LIST_FREE (core, first_state);
|
||||
output_defines ();
|
||||
output_token_translations ();
|
||||
/* if (semantic_parser) */
|
||||
@@ -1345,6 +1321,8 @@ output (void)
|
||||
output_stos ();
|
||||
output_rule_data ();
|
||||
output_actions ();
|
||||
XFREE (state_table);
|
||||
|
||||
if (!no_parser_flag)
|
||||
output_parser ();
|
||||
output_program ();
|
||||
|
||||
+46
-59
@@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "state.h"
|
||||
#include "reader.h"
|
||||
#include "print.h"
|
||||
#include "reduce.h"
|
||||
|
||||
#if 0
|
||||
static void
|
||||
@@ -47,40 +48,32 @@ static void
|
||||
print_core (FILE *out, int state)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
int rule;
|
||||
core *statep;
|
||||
short *sp;
|
||||
short *sp1;
|
||||
core *statep = state_table[state].state;
|
||||
|
||||
statep = state_table[state];
|
||||
k = statep->nitems;
|
||||
|
||||
if (k == 0)
|
||||
if (!statep->nitems)
|
||||
return;
|
||||
|
||||
for (i = 0; i < k; i++)
|
||||
for (i = 0; i < statep->nitems; i++)
|
||||
{
|
||||
short *sp;
|
||||
short *sp1;
|
||||
int rule;
|
||||
|
||||
sp1 = sp = ritem + statep->items[i];
|
||||
|
||||
while (*sp > 0)
|
||||
sp++;
|
||||
|
||||
rule = -(*sp);
|
||||
fprintf (out, " %s -> ", tags[rlhs[rule]]);
|
||||
fprintf (out, " %s -> ", tags[rule_table[rule].lhs]);
|
||||
|
||||
for (sp = ritem + rrhs[rule]; sp < sp1; sp++)
|
||||
{
|
||||
fprintf (out, "%s ", tags[*sp]);
|
||||
}
|
||||
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
|
||||
fprintf (out, "%s ", tags[*sp]);
|
||||
|
||||
fputc ('.', out);
|
||||
|
||||
while (*sp > 0)
|
||||
{
|
||||
fprintf (out, " %s", tags[*sp]);
|
||||
sp++;
|
||||
}
|
||||
for (/* Nothing */; *sp > 0; ++sp)
|
||||
fprintf (out, " %s", tags[*sp]);
|
||||
|
||||
fprintf (out, _(" (rule %d)"), rule);
|
||||
fputc ('\n', out);
|
||||
@@ -94,16 +87,10 @@ print_actions (FILE *out, int state)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
int state1;
|
||||
int symbol;
|
||||
shifts *shiftp;
|
||||
errs *errp;
|
||||
reductions *redp;
|
||||
int rule;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
redp = reduction_table[state];
|
||||
errp = err_table[state];
|
||||
shifts *shiftp = state_table[state].shift_table;
|
||||
reductions *redp = state_table[state].reduction_table;
|
||||
errs *errp = err_table[state];
|
||||
|
||||
if (!shiftp && !redp)
|
||||
{
|
||||
@@ -120,10 +107,11 @@ print_actions (FILE *out, int state)
|
||||
|
||||
for (i = 0; i < k; i++)
|
||||
{
|
||||
if (!shiftp->shifts[i])
|
||||
int symbol;
|
||||
int state1 = shiftp->shifts[i];
|
||||
if (!state1)
|
||||
continue;
|
||||
state1 = shiftp->shifts[i];
|
||||
symbol = accessing_symbol[state1];
|
||||
symbol = state_table[state1].accessing_symbol;
|
||||
/* The following line used to be turned off. */
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
@@ -147,15 +135,12 @@ print_actions (FILE *out, int state)
|
||||
|
||||
if (errp)
|
||||
{
|
||||
int j, nerrs;
|
||||
|
||||
nerrs = errp->nerrs;
|
||||
|
||||
for (j = 0; j < nerrs; j++)
|
||||
int j;
|
||||
for (j = 0; j < errp->nerrs; j++)
|
||||
{
|
||||
if (!errp->errs[j])
|
||||
int symbol = errp->errs[j];
|
||||
if (!symbol)
|
||||
continue;
|
||||
symbol = errp->errs[j];
|
||||
fprintf (out, _(" %-4s\terror (nonassociative)\n"),
|
||||
tags[symbol]);
|
||||
}
|
||||
@@ -164,26 +149,27 @@ print_actions (FILE *out, int state)
|
||||
fputc ('\n', out);
|
||||
}
|
||||
|
||||
if (consistent[state] && redp)
|
||||
if (state_table[state].consistent && redp)
|
||||
{
|
||||
rule = redp->rules[0];
|
||||
symbol = rlhs[rule];
|
||||
int rule = redp->rules[0];
|
||||
int symbol = rule_table[rule].lhs;
|
||||
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
|
||||
rule, tags[symbol]);
|
||||
}
|
||||
else if (redp)
|
||||
{
|
||||
print_reductions (state);
|
||||
print_reductions (out, state);
|
||||
}
|
||||
|
||||
if (i < k)
|
||||
{
|
||||
for (; i < k; i++)
|
||||
{
|
||||
if (!shiftp->shifts[i])
|
||||
int symbol;
|
||||
int state1 = shiftp->shifts[i];
|
||||
if (!state1)
|
||||
continue;
|
||||
state1 = shiftp->shifts[i];
|
||||
symbol = accessing_symbol[state1];
|
||||
symbol = state_table[state1].accessing_symbol;
|
||||
fprintf (out, _(" %-4s\tgo to state %d\n"),
|
||||
tags[symbol], state1);
|
||||
}
|
||||
@@ -226,18 +212,19 @@ print_grammar (FILE *out)
|
||||
int column = 0;
|
||||
|
||||
/* rule # : LHS -> RHS */
|
||||
fprintf (out, "\n%s\n", _("Grammar"));
|
||||
fprintf (out, "\n%s\n\n", _("Grammar"));
|
||||
for (i = 1; i <= nrules; i++)
|
||||
/* Don't print rules disabled in reduce_grammar_tables. */
|
||||
if (rlhs[i] >= 0)
|
||||
if (rule_table[i].lhs >= 0)
|
||||
{
|
||||
fprintf (out, _("rule %-4d %s ->"), i, tags[rlhs[i]]);
|
||||
rule = &ritem[rrhs[i]];
|
||||
fprintf (out, _("rule %-4d %s ->"), i, tags[rule_table[i].lhs]);
|
||||
rule = &ritem[rule_table[i].rhs];
|
||||
if (*rule > 0)
|
||||
while (*rule > 0)
|
||||
fprintf (out, " %s", tags[*rule++]);
|
||||
else
|
||||
fprintf (out, " /* %s */\n", _("empty"));
|
||||
fprintf (out, " /* %s */", _("empty"));
|
||||
fputc ('\n', out);
|
||||
}
|
||||
|
||||
/* TERMINAL (type #) : rule #s terminal is on RHS */
|
||||
@@ -254,7 +241,7 @@ print_grammar (FILE *out)
|
||||
sprintf (buffer, " (%d)", i);
|
||||
|
||||
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])
|
||||
{
|
||||
END_TEST (65);
|
||||
@@ -272,9 +259,9 @@ print_grammar (FILE *out)
|
||||
|
||||
for (j = 1; j <= nrules; j++)
|
||||
{
|
||||
if (rlhs[j] == i)
|
||||
if (rule_table[j].lhs == i)
|
||||
left_count++;
|
||||
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
|
||||
for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
|
||||
if (*rule == i)
|
||||
{
|
||||
right_count++;
|
||||
@@ -296,7 +283,7 @@ print_grammar (FILE *out)
|
||||
for (j = 1; j <= nrules; j++)
|
||||
{
|
||||
END_TEST (65);
|
||||
if (rlhs[j] == i)
|
||||
if (rule_table[j].lhs == i)
|
||||
sprintf (buffer + strlen (buffer), " %d", j);
|
||||
}
|
||||
}
|
||||
@@ -309,7 +296,7 @@ print_grammar (FILE *out)
|
||||
sprintf (buffer + strlen (buffer), _(" on right:"));
|
||||
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)
|
||||
{
|
||||
END_TEST (65);
|
||||
@@ -336,8 +323,8 @@ print_results (void)
|
||||
size_t size = obstack_object_size (&output_obstack);
|
||||
fwrite (obstack_finish (&output_obstack), 1, size, out);
|
||||
|
||||
if (any_conflicts)
|
||||
print_conflicts (out);
|
||||
reduce_output (out);
|
||||
conflicts_output (out);
|
||||
|
||||
print_grammar (out);
|
||||
|
||||
|
||||
+58
-72
@@ -31,42 +31,25 @@
|
||||
#include "obstack.h"
|
||||
#include "print_graph.h"
|
||||
#include "vcg.h"
|
||||
#include "quotearg.h"
|
||||
|
||||
static graph_t graph;
|
||||
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. */
|
||||
static void
|
||||
print_core (int state, struct obstack *node_obstack)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
int rule;
|
||||
core *statep;
|
||||
short *sp;
|
||||
short *sp1;
|
||||
core *statep = state_table[state].state;
|
||||
|
||||
statep = state_table[state];
|
||||
k = statep->nitems;
|
||||
|
||||
if (k == 0)
|
||||
if (!statep->nitems)
|
||||
return;
|
||||
|
||||
for (i = 0; i < k; i++)
|
||||
for (i = 0; i < statep->nitems; i++)
|
||||
{
|
||||
if (i)
|
||||
obstack_sgrow (node_obstack, "\\n");
|
||||
short *sp;
|
||||
short *sp1;
|
||||
int rule;
|
||||
|
||||
sp1 = sp = ritem + statep->items[i];
|
||||
|
||||
@@ -75,23 +58,30 @@ print_core (int state, struct obstack *node_obstack)
|
||||
|
||||
rule = -(*sp);
|
||||
|
||||
if (i)
|
||||
obstack_1grow (node_obstack, '\n');
|
||||
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++)
|
||||
obstack_fgrow1 (node_obstack, "%s ", quote (tags[*sp]));
|
||||
for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
|
||||
obstack_fgrow1 (node_obstack, "%s ", tags[*sp]);
|
||||
|
||||
obstack_1grow (node_obstack, '.');
|
||||
|
||||
while (*sp > 0)
|
||||
obstack_fgrow1 (node_obstack, " %s", quote (tags[*sp++]));
|
||||
for (/* Nothing */; *sp > 0; ++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
|
||||
print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
print_actions (int state, const char *node_name)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
@@ -104,16 +94,18 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
static char buff[10];
|
||||
edge_t edge;
|
||||
|
||||
shiftp = shift_table[state];
|
||||
redp = reduction_table[state];
|
||||
shiftp = state_table[state].shift_table;
|
||||
redp = state_table[state].reduction_table;
|
||||
errp = err_table[state];
|
||||
|
||||
if (!shiftp && !redp)
|
||||
{
|
||||
#if 0
|
||||
if (final_state == state)
|
||||
obstack_sgrow (node_obstack, "$default: accept");
|
||||
else
|
||||
obstack_sgrow (node_obstack, "NO ACTIONS");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -126,7 +118,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
if (!shiftp->shifts[i])
|
||||
continue;
|
||||
state1 = shiftp->shifts[i];
|
||||
symbol = accessing_symbol[state1];
|
||||
symbol = state_table[state1].accessing_symbol;
|
||||
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
@@ -142,9 +134,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
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;
|
||||
edge.label = tags[symbol];
|
||||
output_edge (&edge, fgraph);
|
||||
close_edge (fgraph);
|
||||
}
|
||||
@@ -156,6 +146,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
k = 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (errp)
|
||||
{
|
||||
int j, nerrs;
|
||||
@@ -168,25 +159,29 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
continue;
|
||||
symbol = errp->errs[j];
|
||||
/* 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)
|
||||
obstack_sgrow (node_obstack, "\\n");
|
||||
obstack_sgrow (node_obstack, "\n");
|
||||
*/
|
||||
obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"),
|
||||
tags[symbol]);
|
||||
}
|
||||
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];
|
||||
symbol = rlhs[rule];
|
||||
symbol = rule_table[rule].lhs;
|
||||
/*
|
||||
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)"),
|
||||
rule, tags[symbol]);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (i < k)
|
||||
{
|
||||
@@ -195,7 +190,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
if (!shiftp->shifts[i])
|
||||
continue;
|
||||
state1 = shiftp->shifts[i];
|
||||
symbol = accessing_symbol[state1];
|
||||
symbol = state_table[state1].accessing_symbol;
|
||||
|
||||
new_edge (&edge);
|
||||
open_edge (&edge, fgraph);
|
||||
@@ -203,15 +198,19 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
sprintf (buff, "%d", state1);
|
||||
edge.targetname = buff;
|
||||
edge.color = red;
|
||||
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
|
||||
edge.label = tags[symbol];
|
||||
output_edge (&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
|
||||
print_state (int state)
|
||||
{
|
||||
@@ -219,35 +218,22 @@ print_state (int state)
|
||||
struct obstack node_obstack;
|
||||
node_t node;
|
||||
|
||||
/* The labels of the nodes are their the items. */
|
||||
obstack_init (&node_obstack);
|
||||
new_node (&node); /* Set node attributs default value. */
|
||||
new_node (&node);
|
||||
sprintf (name, "%d", state);
|
||||
node.title = name; /* Give a name to the node. */
|
||||
|
||||
{
|
||||
/* Here we begin to compute the node label. */
|
||||
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. */
|
||||
}
|
||||
node.title = name;
|
||||
print_core (state, &node_obstack);
|
||||
obstack_1grow (&node_obstack, '\0');
|
||||
node.label = obstack_finish (&node_obstack);
|
||||
|
||||
open_node (fgraph);
|
||||
/* Output a VCG formatted attributs list. */
|
||||
output_node (&node, fgraph);
|
||||
/* Save the node label. */
|
||||
fwrite (obstack_base (&node_obstack),
|
||||
obstack_object_size (&node_obstack), 1, fgraph);
|
||||
close_node (fgraph);
|
||||
|
||||
/* Output the edges. */
|
||||
print_actions (state, name);
|
||||
|
||||
obstack_free (&node_obstack, 0);
|
||||
}
|
||||
|
||||
@@ -256,7 +242,7 @@ void
|
||||
print_graph (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
if (!graph_flag)
|
||||
return;
|
||||
|
||||
@@ -267,7 +253,7 @@ print_graph (void)
|
||||
|
||||
#if 0
|
||||
graph.smanhattan_edges = yes;
|
||||
graph.manhattan_edges = yes;
|
||||
graph.manhattan_edges = yes;
|
||||
#endif
|
||||
|
||||
graph.display_edge_labels = yes;
|
||||
@@ -285,8 +271,8 @@ print_graph (void)
|
||||
open_graph (fgraph);
|
||||
output_graph (&graph, fgraph);
|
||||
|
||||
/* Output nodes and edges. */
|
||||
for (i = 0; i < nstates; i++)
|
||||
/* Output nodes & edges. */
|
||||
print_state (i);
|
||||
|
||||
/* Close graph. */
|
||||
|
||||
+56
-66
@@ -1215,20 +1215,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 |
|
||||
| with the user's names. |
|
||||
@@ -1371,8 +1357,6 @@ readgram (void)
|
||||
nrules++;
|
||||
nitems++;
|
||||
|
||||
record_rule_line ();
|
||||
|
||||
p = XCALLOC (symbol_list, 1);
|
||||
p->sym = lhs;
|
||||
|
||||
@@ -1450,7 +1434,6 @@ readgram (void)
|
||||
just read can belong to it. */
|
||||
nrules++;
|
||||
nitems++;
|
||||
record_rule_line ();
|
||||
p = XCALLOC (symbol_list, 1);
|
||||
if (crule1)
|
||||
crule1->next = p;
|
||||
@@ -1458,9 +1441,10 @@ readgram (void)
|
||||
grammar = p;
|
||||
p->sym = sdummy;
|
||||
crule1 = XCALLOC (symbol_list, 1);
|
||||
p->next = crule1;
|
||||
crule1->next = crule;
|
||||
|
||||
p->next = crule1;
|
||||
|
||||
/* Insert the dummy generated by that rule into this
|
||||
rule. */
|
||||
nitems++;
|
||||
@@ -1672,6 +1656,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 |
|
||||
| number. |
|
||||
@@ -1813,40 +1840,6 @@ packsymbols (void)
|
||||
fatal (_("the start symbol %s is a token"), startval->tag);
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1865,11 +1858,7 @@ packgram (void)
|
||||
bucket *ruleprec;
|
||||
|
||||
ritem = XCALLOC (short, nitems + 1);
|
||||
rlhs = XCALLOC (short, nrules) - 1;
|
||||
rrhs = XCALLOC (short, nrules) - 1;
|
||||
rprec = XCALLOC (short, nrules) - 1;
|
||||
rprecsym = XCALLOC (short, nrules) - 1;
|
||||
rassoc = XCALLOC (short, nrules) - 1;
|
||||
rule_table = XCALLOC (rule_t, nrules) - 1;
|
||||
|
||||
itemno = 0;
|
||||
ruleno = 1;
|
||||
@@ -1877,8 +1866,9 @@ packgram (void)
|
||||
p = grammar;
|
||||
while (p)
|
||||
{
|
||||
rlhs[ruleno] = p->sym->value;
|
||||
rrhs[ruleno] = itemno;
|
||||
rule_table[ruleno].lhs = p->sym->value;
|
||||
rule_table[ruleno].rhs = itemno;
|
||||
rule_table[ruleno].line = p->sym->line;
|
||||
ruleprec = p->ruleprec;
|
||||
|
||||
p = p->next;
|
||||
@@ -1889,8 +1879,8 @@ packgram (void)
|
||||
of the last token in it. */
|
||||
if (p->sym->class == token_sym)
|
||||
{
|
||||
rprec[ruleno] = p->sym->prec;
|
||||
rassoc[ruleno] = p->sym->assoc;
|
||||
rule_table[ruleno].prec = p->sym->prec;
|
||||
rule_table[ruleno].assoc = p->sym->assoc;
|
||||
}
|
||||
if (p)
|
||||
p = p->next;
|
||||
@@ -1900,9 +1890,9 @@ packgram (void)
|
||||
the specified symbol's precedence replaces the default. */
|
||||
if (ruleprec)
|
||||
{
|
||||
rprec[ruleno] = ruleprec->prec;
|
||||
rassoc[ruleno] = ruleprec->assoc;
|
||||
rprecsym[ruleno] = ruleprec->value;
|
||||
rule_table[ruleno].prec = ruleprec->prec;
|
||||
rule_table[ruleno].assoc = ruleprec->assoc;
|
||||
rule_table[ruleno].precsym = ruleprec->value;
|
||||
}
|
||||
|
||||
ritem[itemno++] = -ruleno;
|
||||
@@ -1933,8 +1923,6 @@ reader (void)
|
||||
nvars = 0;
|
||||
nrules = 0;
|
||||
nitems = 0;
|
||||
rline_allocated = 10;
|
||||
rline = XCALLOC (short, rline_allocated);
|
||||
|
||||
typed = 0;
|
||||
lastprec = 0;
|
||||
@@ -1990,6 +1978,8 @@ reader (void)
|
||||
packsymbols ();
|
||||
/* Convert the grammar into the format described in gram.h. */
|
||||
packgram ();
|
||||
/* Output the headers. */
|
||||
symbols_output ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
+109
-114
@@ -1,5 +1,5 @@
|
||||
/* Grammar reduction for Bison.
|
||||
Copyright 1988, 1989, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1988, 1989, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of Bison, the GNU Compiler Compiler.
|
||||
|
||||
@@ -100,7 +100,7 @@ useful_production (int i, BSet N0)
|
||||
/* A production is useful if all of the nonterminals in its appear
|
||||
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 (!BITISSET (N0, n - ntokens))
|
||||
return FALSE;
|
||||
@@ -149,7 +149,7 @@ useless_nonterminals (void)
|
||||
{
|
||||
if (useful_production (i, N))
|
||||
{
|
||||
SETBIT (Np, rlhs[i] - ntokens);
|
||||
SETBIT (Np, rule_table[i].lhs - ntokens);
|
||||
SETBIT (P, i);
|
||||
}
|
||||
}
|
||||
@@ -200,38 +200,33 @@ inaccessable_symbols (void)
|
||||
Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1));
|
||||
|
||||
/* If the start symbol isn't useful, then nothing will be useful. */
|
||||
if (!BITISSET (N, start_symbol - ntokens))
|
||||
goto end_iteration;
|
||||
|
||||
SETBIT (V, start_symbol);
|
||||
|
||||
while (1)
|
||||
if (BITISSET (N, start_symbol - ntokens))
|
||||
{
|
||||
for (i = WORDSIZE (nsyms) - 1; i >= 0; i--)
|
||||
Vp[i] = V[i];
|
||||
for (i = 1; i <= nrules; i++)
|
||||
SETBIT (V, start_symbol);
|
||||
|
||||
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 (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);
|
||||
V = Vp;
|
||||
@@ -255,8 +250,8 @@ end_iteration:
|
||||
|
||||
/* A token that was used in %prec should not be warned about. */
|
||||
for (i = 1; i < nrules; i++)
|
||||
if (rprecsym[i] != 0)
|
||||
SETBIT (V1, rprecsym[i]);
|
||||
if (rule_table[i].precsym != 0)
|
||||
SETBIT (V1, rule_table[i].precsym);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -279,15 +274,15 @@ reduce_grammar_tables (void)
|
||||
np++;
|
||||
if (pn != np)
|
||||
{
|
||||
rlhs[np] = rlhs[pn];
|
||||
rule_table[np].lhs = rule_table[pn].lhs;
|
||||
rline[np] = rline[pn];
|
||||
rprec[np] = rprec[pn];
|
||||
rassoc[np] = rassoc[pn];
|
||||
rrhs[np] = rrhs[pn];
|
||||
if (rrhs[np] != ni)
|
||||
rule_table[np].prec = rule_table[pn].prec;
|
||||
rule_table[np].assoc = rule_table[pn].assoc;
|
||||
rule_table[np].rhs = rule_table[pn].rhs;
|
||||
if (rule_table[np].rhs != ni)
|
||||
{
|
||||
pi = rrhs[np];
|
||||
rrhs[np] = ni;
|
||||
pi = rule_table[np].rhs;
|
||||
rule_table[np].rhs = ni;
|
||||
while (ritem[pi] >= 0)
|
||||
ritem[ni++] = ritem[pi++];
|
||||
ritem[ni++] = -np;
|
||||
@@ -319,7 +314,7 @@ reduce_grammar_tables (void)
|
||||
{
|
||||
if (!BITISSET (P, pn))
|
||||
{
|
||||
rlhs[pn] = -1;
|
||||
rule_table[pn].lhs = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -368,11 +363,11 @@ reduce_grammar_tables (void)
|
||||
for (i = 1; i <= nrules; i++)
|
||||
{
|
||||
/* Ignore the rules disabled above. */
|
||||
if (rlhs[i] >= 0)
|
||||
rlhs[i] = nontermmap[rlhs[i]];
|
||||
if (ISVAR (rprecsym[i]))
|
||||
if (rule_table[i].lhs >= 0)
|
||||
rule_table[i].lhs = nontermmap[rule_table[i].lhs];
|
||||
if (ISVAR (rule_table[i].precsym))
|
||||
/* Can this happen? */
|
||||
rprecsym[i] = nontermmap[rprecsym[i]];
|
||||
rule_table[i].precsym = nontermmap[rule_table[i].precsym];
|
||||
}
|
||||
|
||||
for (r = ritem; *r; r++)
|
||||
@@ -388,21 +383,25 @@ reduce_grammar_tables (void)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_results (void)
|
||||
|
||||
/*-----------------------------------------------------------------.
|
||||
| Ouput the detailed results of the reductions. For FILE.output. |
|
||||
`-----------------------------------------------------------------*/
|
||||
|
||||
void
|
||||
reduce_output (FILE *out)
|
||||
{
|
||||
int i;
|
||||
/* short j; JF unused */
|
||||
rule r;
|
||||
bool b;
|
||||
|
||||
if (nuseless_nonterminals > 0)
|
||||
{
|
||||
obstack_sgrow (&output_obstack, _("Useless nonterminals:"));
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
fprintf (out, _("Useless nonterminals:"));
|
||||
fprintf (out, "\n\n");
|
||||
for (i = ntokens; i < nsyms; i++)
|
||||
if (!BITISSET (V, i))
|
||||
obstack_fgrow1 (&output_obstack, " %s\n", tags[i]);
|
||||
fprintf (out, " %s\n", tags[i]);
|
||||
}
|
||||
b = FALSE;
|
||||
for (i = 0; i < ntokens; i++)
|
||||
@@ -411,81 +410,82 @@ print_results (void)
|
||||
{
|
||||
if (!b)
|
||||
{
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Terminals which are not used:"));
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
fprintf (out, "\n\n");
|
||||
fprintf (out, _("Terminals which are not used:"));
|
||||
fprintf (out, "\n\n");
|
||||
b = TRUE;
|
||||
}
|
||||
obstack_fgrow1 (&output_obstack, " %s\n", tags[i]);
|
||||
fprintf (out, " %s\n", tags[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (nuseless_productions > 0)
|
||||
{
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_sgrow (&output_obstack, _("Useless rules:"));
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
fprintf (out, "\n\n");
|
||||
fprintf (out, _("Useless rules:"));
|
||||
fprintf (out, "\n\n");
|
||||
for (i = 1; i <= nrules; i++)
|
||||
{
|
||||
if (!BITISSET (P, i))
|
||||
{
|
||||
obstack_fgrow1 (&output_obstack, "#%-4d ", i);
|
||||
obstack_fgrow1 (&output_obstack, "%s :\t", tags[rlhs[i]]);
|
||||
for (r = &ritem[rrhs[i]]; *r >= 0; r++)
|
||||
obstack_fgrow1 (&output_obstack, " %s", tags[*r]);
|
||||
obstack_sgrow (&output_obstack, ";\n");
|
||||
}
|
||||
}
|
||||
if (!BITISSET (P, i))
|
||||
{
|
||||
fprintf (out, "#%-4d ", i);
|
||||
fprintf (out, "%s :\t", tags[rule_table[i].lhs]);
|
||||
for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
|
||||
fprintf (out, " %s", tags[*r]);
|
||||
fprintf (out, ";\n");
|
||||
}
|
||||
}
|
||||
if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b)
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
fprintf (out, "\n\n");
|
||||
}
|
||||
|
||||
#if 0 /* XXX currently unused. */
|
||||
static void
|
||||
dump_grammar (void)
|
||||
dump_grammar (FILE *out)
|
||||
{
|
||||
int i;
|
||||
rule r;
|
||||
|
||||
obstack_fgrow5 (&output_obstack,
|
||||
fprintf (out, "REDUCED GRAMMAR\n\n");
|
||||
fprintf (out,
|
||||
"ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n",
|
||||
ntokens, nvars, nsyms, nrules, nitems);
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Variables\n---------\n\n"));
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Value Sprec Sassoc Tag\n"));
|
||||
fprintf (out, _("Variables\n---------\n\n"));
|
||||
fprintf (out, _("Value Sprec Sassoc Tag\n"));
|
||||
for (i = ntokens; i < nsyms; i++)
|
||||
obstack_fgrow4 (&output_obstack,
|
||||
"%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]);
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_sgrow (&output_obstack, _("Rules\n-----\n\n"));
|
||||
fprintf (out, "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]);
|
||||
fprintf (out, "\n\n");
|
||||
fprintf (out, _("Rules\n-----\n\n"));
|
||||
for (i = 1; i <= nrules; i++)
|
||||
{
|
||||
obstack_fgrow5 (&output_obstack, "%-5d(%5d%5d)%5d : (@%-5d)",
|
||||
i, rprec[i], rassoc[i], rlhs[i], rrhs[i]);
|
||||
for (r = &ritem[rrhs[i]]; *r > 0; r++)
|
||||
obstack_fgrow1 (&output_obstack, "%5d", *r);
|
||||
obstack_fgrow1 (&output_obstack, " [%d]\n", -(*r));
|
||||
fprintf (out, "%-5d(%5d%5d)%5d : (@%-5d)",
|
||||
i,
|
||||
rule_table[i].prec,
|
||||
rule_table[i].assoc,
|
||||
rule_table[i].lhs,
|
||||
rule_table[i].rhs);
|
||||
for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
|
||||
fprintf (out, "%5d", *r);
|
||||
fprintf (out, " [%d]\n", -(*r));
|
||||
}
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Rules interpreted\n-----------------\n\n"));
|
||||
fprintf (out, "\n\n");
|
||||
fprintf (out, _("Rules interpreted\n-----------------\n\n"));
|
||||
for (i = 1; i <= nrules; i++)
|
||||
{
|
||||
obstack_fgrow2 (&output_obstack, "%-5d %s :", i, tags[rlhs[i]]);
|
||||
for (r = &ritem[rrhs[i]]; *r > 0; r++)
|
||||
obstack_fgrow1 (&output_obstack, " %s", tags[*r]);
|
||||
obstack_grow1 (&output_obstack, '\n');
|
||||
fprintf (out, "%-5d %s :", i, tags[rule_table[i].lhs]);
|
||||
for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
|
||||
fprintf (out, " %s", tags[*r]);
|
||||
fputc ('\n', out);
|
||||
}
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
fprintf (out, "\n\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*-------------------------------.
|
||||
| Report the results to STDERR. |
|
||||
`-------------------------------*/
|
||||
|
||||
static void
|
||||
print_notices (void)
|
||||
reduce_print (void)
|
||||
{
|
||||
if (yacc_flag && nuseless_productions)
|
||||
fprintf (stderr, _("%d rules never reduced\n"), nuseless_productions);
|
||||
@@ -527,42 +527,37 @@ reduce_grammar (void)
|
||||
|
||||
reduced = (bool) (nuseless_nonterminals + nuseless_productions > 0);
|
||||
|
||||
if (verbose_flag)
|
||||
print_results ();
|
||||
if (!reduced)
|
||||
return;
|
||||
|
||||
if (reduced == FALSE)
|
||||
goto done_reducing;
|
||||
|
||||
print_notices ();
|
||||
reduce_print ();
|
||||
|
||||
if (!BITISSET (N, start_symbol - ntokens))
|
||||
fatal (_("Start symbol %s does not derive any sentence"),
|
||||
tags[start_symbol]);
|
||||
|
||||
reduce_grammar_tables ();
|
||||
#if 0
|
||||
if (verbose_flag)
|
||||
|
||||
if (trace_flag)
|
||||
{
|
||||
obstack_fgrow1 (&output_obstack, "REDUCED GRAMMAR\n\n");
|
||||
dump_grammar ();
|
||||
dump_grammar (stderr);
|
||||
|
||||
fprintf (stderr, "reduced %s defines %d terminals, %d nonterminals\
|
||||
, and %d productions.\n",
|
||||
infile, ntokens, nvars, nrules);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (statistics_flag)
|
||||
fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\
|
||||
, and %d production%s.\n"),
|
||||
infile,
|
||||
ntokens,
|
||||
(ntokens == 1 ? "" : "s"),
|
||||
nvars,
|
||||
(nvars == 1 ? "" : "s"),
|
||||
nrules,
|
||||
(nrules == 1 ? "" : "s"));
|
||||
|
||||
done_reducing:
|
||||
/* Free the global sets used to compute the reduced grammar */
|
||||
/*-----------------------------------------------------------.
|
||||
| Free the global sets used to compute the reduced grammar. |
|
||||
`-----------------------------------------------------------*/
|
||||
|
||||
void
|
||||
reduce_free (void)
|
||||
{
|
||||
XFREE (N);
|
||||
XFREE (V);
|
||||
XFREE (V1);
|
||||
XFREE (P);
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,5 +1,5 @@
|
||||
/* Grammar reduction 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.
|
||||
|
||||
@@ -22,5 +22,6 @@
|
||||
# define REDUCE_H_
|
||||
|
||||
void reduce_grammar PARAMS ((void));
|
||||
|
||||
void reduce_output PARAMS ((FILE *out));
|
||||
void reduce_free PARAMS ((void));
|
||||
#endif /* !REDUCE_H_ */
|
||||
|
||||
+14
-1
@@ -99,7 +99,9 @@ typedef struct core
|
||||
}
|
||||
core;
|
||||
|
||||
|
||||
#define CORE_ALLOC(Nitems) \
|
||||
(core *) xcalloc ((unsigned) (sizeof (core) \
|
||||
+ (Nitems - 1) * sizeof (short)), 1)
|
||||
|
||||
typedef struct shifts
|
||||
{
|
||||
@@ -110,6 +112,9 @@ typedef struct shifts
|
||||
}
|
||||
shifts;
|
||||
|
||||
#define SHIFTS_ALLOC(Nshifts) \
|
||||
(shifts *) xcalloc ((unsigned) (sizeof (shifts) \
|
||||
+ (Nshifts - 1) * sizeof (short)), 1)
|
||||
|
||||
|
||||
typedef struct errs
|
||||
@@ -119,6 +124,10 @@ typedef struct errs
|
||||
}
|
||||
errs;
|
||||
|
||||
#define ERRS_ALLOC(Nerrs) \
|
||||
(errs *) xcalloc ((unsigned) (sizeof (errs) \
|
||||
+ (Nerrs - 1) * sizeof (short)), 1)
|
||||
|
||||
|
||||
|
||||
typedef struct reductions
|
||||
@@ -130,4 +139,8 @@ typedef struct reductions
|
||||
}
|
||||
reductions;
|
||||
|
||||
#define REDUCTIONS_ALLOC(Nreductions) \
|
||||
(reductions *) xcalloc ((unsigned) (sizeof (reductions) \
|
||||
+ (Nreductions - 1) * sizeof (short)), 1)
|
||||
|
||||
#endif /* !STATE_H_ */
|
||||
|
||||
@@ -49,6 +49,9 @@ hash (const char *key)
|
||||
static bucket *
|
||||
bucket_new (const char *tag, int hashval)
|
||||
{
|
||||
/* Hack, until we have a Bison parser. */
|
||||
extern int lineno;
|
||||
|
||||
bucket *res = XMALLOC (bucket, 1);
|
||||
|
||||
res->link = symtab[hashval];
|
||||
@@ -61,6 +64,7 @@ bucket_new (const char *tag, int hashval)
|
||||
res->user_token_number = SUNDEF;
|
||||
res->alias = NULL;
|
||||
res->class = unknown_sym;
|
||||
res->line = lineno;
|
||||
|
||||
nsyms++;
|
||||
|
||||
|
||||
@@ -42,6 +42,9 @@ typedef struct bucket
|
||||
struct bucket *link;
|
||||
struct bucket *next;
|
||||
|
||||
/* The line it was found in. */
|
||||
short line;
|
||||
|
||||
/* The key, name of the symbol. */
|
||||
char *tag;
|
||||
/* Its type. */
|
||||
|
||||
+32
-2
@@ -40,6 +40,18 @@
|
||||
# include <stdlib.h>
|
||||
#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
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
@@ -126,10 +138,13 @@ size_t strnlen PARAMS ((const char *s, size_t maxlen));
|
||||
# include <libintl.h>
|
||||
# define _(Text) gettext (Text)
|
||||
#else
|
||||
# undef bindtextdomain
|
||||
# undef bindtextdomain
|
||||
# define bindtextdomain(Domain, Directory)
|
||||
# undef textdomain
|
||||
# undef textdomain
|
||||
# define textdomain(Domain)
|
||||
# undef ngettext
|
||||
# define ngettext(Singular, Plural, Number) \
|
||||
((Number == 1) ? Singular : Plural)
|
||||
# define _(Text) Text
|
||||
#endif
|
||||
#define N_(Text) Text
|
||||
@@ -264,6 +279,21 @@ do { \
|
||||
#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. |
|
||||
`---------------------------------*/
|
||||
|
||||
@@ -21,6 +21,16 @@
|
||||
#include "system.h"
|
||||
#include "vcg.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. */
|
||||
void
|
||||
@@ -429,7 +439,7 @@ void
|
||||
add_classname (graph_t *g, int val, const char *name)
|
||||
{
|
||||
struct classname_s *classname;
|
||||
|
||||
|
||||
classname = XMALLOC (struct classname_s, 1);
|
||||
classname->no = val;
|
||||
classname->name = name;
|
||||
@@ -441,7 +451,7 @@ void
|
||||
add_infoname (graph_t *g, int integer, const char *string)
|
||||
{
|
||||
struct infoname_s *infoname;
|
||||
|
||||
|
||||
infoname = XMALLOC (struct infoname_s, 1);
|
||||
infoname->integer = integer;
|
||||
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. */
|
||||
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)
|
||||
{
|
||||
struct colorentry_s *ce;
|
||||
|
||||
|
||||
ce = XMALLOC (struct colorentry_s, 1);
|
||||
ce->color_index = color_idx;
|
||||
ce->red_cp = red_cp;
|
||||
@@ -556,9 +566,9 @@ void
|
||||
output_node (node_t *node, FILE *fout)
|
||||
{
|
||||
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)
|
||||
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))
|
||||
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",
|
||||
get_color_str (node->bordercolor));
|
||||
|
||||
if (node->infos[0])
|
||||
fprintf (fout, "\t\tinfo1:\t\"%s\"\n", node->infos[0]);
|
||||
if (node->infos[1])
|
||||
fprintf (fout, "\t\tinfo2:\t\"%s\"\n", node->infos[1]);
|
||||
if (node->infos[2])
|
||||
fprintf (fout, "\t\tinfo3:\t\"%s\"\n", node->infos[2]);
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 3; ++i)
|
||||
if (node->infos[i])
|
||||
fprintf (fout, "\t\tinfo%d:\t%s\n",
|
||||
i, quote (node->infos[i]));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -614,16 +625,16 @@ output_edge (edge_t *edge, FILE *fout)
|
||||
/* FIXME: SOURCENAME and TARGETNAME are mandatory
|
||||
so it has to be fatal not to give these informations. */
|
||||
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)
|
||||
fprintf (fout, "\t\ttargetname:\t\"%s\"\n", edge->targetname);
|
||||
fprintf (fout, "\t\ttargetname:\t%s\n", quote (edge->targetname));
|
||||
|
||||
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)
|
||||
fprintf (fout, "\t\tlinestyle:\t\"%s\"\n",
|
||||
get_linestyle_str(edge->linestyle));
|
||||
fprintf (fout, "\t\tlinestyle:\t%s\n",
|
||||
quote (get_linestyle_str(edge->linestyle)));
|
||||
|
||||
if (edge->thickness != E_THICKNESS)
|
||||
fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness);
|
||||
@@ -666,16 +677,16 @@ void
|
||||
output_graph (graph_t *graph, FILE *fout)
|
||||
{
|
||||
if (graph->title)
|
||||
fprintf (fout, "\ttitle:\t\"%s\"\n", graph->title);
|
||||
fprintf (fout, "\ttitle:\t%s\n", quote (graph->title));
|
||||
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]);
|
||||
if (graph->infos[1])
|
||||
fprintf (fout, "\tinfo2:\t\"%s\"\n", graph->infos[1]);
|
||||
if (graph->infos[2])
|
||||
fprintf (fout, "\tinfo3:\t\"%s\"\n", graph->infos[2]);
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 3; ++i)
|
||||
if (graph->infos[i])
|
||||
fprintf (fout, "\tinfo%d:\t%s\n", i, quote (graph->infos[i]));
|
||||
}
|
||||
|
||||
if (graph->color != G_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)
|
||||
fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape));
|
||||
|
||||
|
||||
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)
|
||||
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)
|
||||
fprintf (fout, "\txmax:\t%d\n", graph->xmax);
|
||||
@@ -743,8 +754,8 @@ output_graph (graph_t *graph, FILE *fout)
|
||||
|
||||
if (graph->hidden != G_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. */
|
||||
if (graph->classname != G_CLASSNAME)
|
||||
{
|
||||
@@ -765,15 +776,15 @@ output_graph (graph_t *graph, FILE *fout)
|
||||
if (graph->colorentry != G_COLORENTRY)
|
||||
{
|
||||
struct colorentry_s *ite;
|
||||
|
||||
|
||||
for (ite = graph->colorentry; ite; ite = ite->next)
|
||||
{
|
||||
fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
|
||||
ite->color_index,
|
||||
{
|
||||
fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
|
||||
ite->color_index,
|
||||
ite->red_cp,
|
||||
ite->green_cp,
|
||||
ite->blue_cp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at calc.at regression.at
|
||||
output.at calc.at torture.at regression.at
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
|
||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||
|
||||
+2
-2
@@ -84,8 +84,8 @@ INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIB = @LIB@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
@@ -108,7 +108,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at calc.at regression.at
|
||||
output.at calc.at torture.at regression.at
|
||||
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
|
||||
|
||||
+1
-1
@@ -10,4 +10,4 @@ CFLAGS='@CFLAGS@'
|
||||
GCC='@GCC@'
|
||||
|
||||
# We need `config.h'.
|
||||
CPPFLAGS="-I $top_builddir @CPPFLAGS@"
|
||||
CPPFLAGS="-I $top_buildpath @CPPFLAGS@"
|
||||
|
||||
+14
-8
@@ -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
|
||||
# warnings, but this place is not the right one for that.
|
||||
# So let's keep only GCC warnings, which we know are sane.
|
||||
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [stderr])
|
||||
AT_CHECK([if test "$GCC" = yes; then cat stderr; else true; fi])
|
||||
# Well, that's only part of the story: some assemblers issue warnings
|
||||
# which can be totally useless, and actually polluting. It seems that
|
||||
# the best bet be to completely ignore stderr, but to pass -Werror
|
||||
# to GCC.
|
||||
if test "$GCC" = yes; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [ignore])
|
||||
|
||||
# Test the priorities.
|
||||
_AT_CHECK_CALC([$1],
|
||||
@@ -360,24 +366,24 @@ _AT_CHECK_CALC([$1],
|
||||
# Some parse errors.
|
||||
_AT_CHECK_CALC_ERROR([$1], [+1], [8],
|
||||
[1.0:1.1],
|
||||
[unexpected `'+''])
|
||||
[unexpected '+'])
|
||||
_AT_CHECK_CALC_ERROR([$1], [1//2], [17],
|
||||
[1.2:1.3],
|
||||
[unexpected `'/'', expecting `NUM' or `'-'' or `'(''])
|
||||
[unexpected '/', expecting NUM or '-' or '('])
|
||||
_AT_CHECK_CALC_ERROR([$1], [error], [8],
|
||||
[1.0:1.1],
|
||||
[unexpected `$undefined.'])
|
||||
[unexpected $undefined.])
|
||||
_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [23],
|
||||
[1.6:1.7],
|
||||
[unexpected `'=''])
|
||||
[unexpected '='])
|
||||
_AT_CHECK_CALC_ERROR([$1],
|
||||
[
|
||||
+1],
|
||||
[16],
|
||||
[2.0:2.1],
|
||||
[unexpected `'+''])
|
||||
[unexpected '+'])
|
||||
|
||||
AT_CLEANUP(calc calc.c calc.h calc.output)
|
||||
AT_CLEANUP
|
||||
])# AT_CHECK_CALC
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ foo: {}
|
||||
|
||||
AT_CHECK([bison $3 $1], 0)
|
||||
AT_CHECK([ls $4], [], [ignore])
|
||||
AT_CLEANUP($4)
|
||||
AT_CLEANUP
|
||||
])
|
||||
|
||||
AT_CHECK_OUTPUT([foo.y], [], [-dv],
|
||||
|
||||
+261
-28
@@ -40,9 +40,264 @@ exp: '(' exp ')' | NUM ;
|
||||
|
||||
AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore)
|
||||
|
||||
AT_CLEANUP([duplicate.*])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------------- ##
|
||||
## Unresolved SR Conflicts. ##
|
||||
## ------------------------- ##
|
||||
|
||||
AT_SETUP([Unresolved SR Conflicts])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%token NUM OP
|
||||
%%
|
||||
exp: exp OP exp | NUM;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y -o input.c -v], 0, [],
|
||||
[input.y contains 1 shift/reduce conflict.
|
||||
])
|
||||
|
||||
# Check the contents of the report.
|
||||
AT_CHECK([cat input.output], [],
|
||||
[[State 4 contains 1 shift/reduce conflict.
|
||||
|
||||
Grammar
|
||||
|
||||
rule 1 exp -> exp OP exp
|
||||
rule 2 exp -> NUM
|
||||
|
||||
Terminals, with rules where they appear
|
||||
|
||||
$ (-1)
|
||||
error (256)
|
||||
NUM (257) 2
|
||||
OP (258) 1
|
||||
|
||||
Nonterminals, with rules where they appear
|
||||
|
||||
exp (5)
|
||||
on left: 1 2, on right: 1
|
||||
|
||||
|
||||
state 0
|
||||
|
||||
NUM shift, and go to state 1
|
||||
|
||||
exp go to state 2
|
||||
|
||||
|
||||
|
||||
state 1
|
||||
|
||||
exp -> NUM . (rule 2)
|
||||
|
||||
$default reduce using rule 2 (exp)
|
||||
|
||||
|
||||
|
||||
state 2
|
||||
|
||||
exp -> exp . OP exp (rule 1)
|
||||
|
||||
$ go to state 5
|
||||
OP shift, and go to state 3
|
||||
|
||||
|
||||
|
||||
state 3
|
||||
|
||||
exp -> exp OP . exp (rule 1)
|
||||
|
||||
NUM shift, and go to state 1
|
||||
|
||||
exp go to state 4
|
||||
|
||||
|
||||
|
||||
state 4
|
||||
|
||||
exp -> exp . OP exp (rule 1)
|
||||
exp -> exp OP exp . (rule 1)
|
||||
|
||||
OP shift, and go to state 3
|
||||
|
||||
OP [reduce using rule 1 (exp)]
|
||||
$default reduce using rule 1 (exp)
|
||||
|
||||
|
||||
|
||||
state 5
|
||||
|
||||
$ go to state 6
|
||||
|
||||
|
||||
|
||||
state 6
|
||||
|
||||
$default accept
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------------- ##
|
||||
## Solved SR Conflicts. ##
|
||||
## --------------------- ##
|
||||
|
||||
AT_SETUP([Solved SR Conflicts])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%token NUM OP
|
||||
%right OP
|
||||
%%
|
||||
exp: exp OP exp | NUM;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y -o input.c -v], 0, [], [])
|
||||
|
||||
# Check the contents of the report.
|
||||
AT_CHECK([cat input.output], [],
|
||||
[[Conflict in state 4 between rule 1 and token OP resolved as shift.
|
||||
|
||||
Grammar
|
||||
|
||||
rule 1 exp -> exp OP exp
|
||||
rule 2 exp -> NUM
|
||||
|
||||
Terminals, with rules where they appear
|
||||
|
||||
$ (-1)
|
||||
error (256)
|
||||
NUM (257) 2
|
||||
OP (258) 1
|
||||
|
||||
Nonterminals, with rules where they appear
|
||||
|
||||
exp (5)
|
||||
on left: 1 2, on right: 1
|
||||
|
||||
|
||||
state 0
|
||||
|
||||
NUM shift, and go to state 1
|
||||
|
||||
exp go to state 2
|
||||
|
||||
|
||||
|
||||
state 1
|
||||
|
||||
exp -> NUM . (rule 2)
|
||||
|
||||
$default reduce using rule 2 (exp)
|
||||
|
||||
|
||||
|
||||
state 2
|
||||
|
||||
exp -> exp . OP exp (rule 1)
|
||||
|
||||
$ go to state 5
|
||||
OP shift, and go to state 3
|
||||
|
||||
|
||||
|
||||
state 3
|
||||
|
||||
exp -> exp OP . exp (rule 1)
|
||||
|
||||
NUM shift, and go to state 1
|
||||
|
||||
exp go to state 4
|
||||
|
||||
|
||||
|
||||
state 4
|
||||
|
||||
exp -> exp . OP exp (rule 1)
|
||||
exp -> exp OP exp . (rule 1)
|
||||
|
||||
OP shift, and go to state 3
|
||||
|
||||
$default reduce using rule 1 (exp)
|
||||
|
||||
|
||||
|
||||
state 5
|
||||
|
||||
$ go to state 6
|
||||
|
||||
|
||||
|
||||
state 6
|
||||
|
||||
$default accept
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
## -------------------- ##
|
||||
## %expect not enough. ##
|
||||
## -------------------- ##
|
||||
|
||||
AT_SETUP([%expect not enough])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%token NUM OP
|
||||
%expect 0
|
||||
%%
|
||||
exp: exp OP exp | NUM;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y -o input.c], 1, [],
|
||||
[input.y contains 1 shift/reduce conflict.
|
||||
expected 0 shift/reduce conflicts
|
||||
])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------- ##
|
||||
## %expect right. ##
|
||||
## --------------- ##
|
||||
|
||||
AT_SETUP([%expect right])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%token NUM OP
|
||||
%expect 1
|
||||
%%
|
||||
exp: exp OP exp | NUM;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y -o input.c], 0, [],
|
||||
[input.y contains 1 shift/reduce conflict.
|
||||
])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------ ##
|
||||
## %expect too much. ##
|
||||
## ------------------ ##
|
||||
|
||||
AT_SETUP([%expect too much])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%token NUM OP
|
||||
%expect 2
|
||||
%%
|
||||
exp: exp OP exp | NUM;
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y -o input.c], 1, [],
|
||||
[input.y contains 1 shift/reduce conflict.
|
||||
expected 2 shift/reduce conflicts
|
||||
])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ---------------------- ##
|
||||
## Mixing %token styles. ##
|
||||
@@ -63,7 +318,7 @@ exp: ;
|
||||
|
||||
AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore)
|
||||
|
||||
AT_CLEANUP([input.*])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
@@ -86,7 +341,7 @@ exp: {};
|
||||
|
||||
AT_CHECK([bison --defines union.y])
|
||||
|
||||
AT_CLEANUP([union.*])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------------------------------- ##
|
||||
@@ -109,26 +364,6 @@ exp: {};
|
||||
AT_CHECK([bison union-comment.y])
|
||||
AT_CHECK([fgrep '//*' union-comment.tab.c], [1], [])
|
||||
|
||||
AT_CLEANUP([union-comment.*])
|
||||
|
||||
|
||||
## --------------- ##
|
||||
## invalid input. ##
|
||||
## --------------- ##
|
||||
|
||||
|
||||
AT_SETUP([Invalid input])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
?
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y], [1], [],
|
||||
[input.y:2: invalid input: `?'
|
||||
input.y:3: fatal error: no rules in the input grammar
|
||||
])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
@@ -181,11 +416,9 @@ AT_CLEANUP
|
||||
m4_define([AT_TEST_CPP_GUARD_H],
|
||||
[AT_SETUP([Invalid CPP guards: $1])
|
||||
|
||||
# possibly create and nuke inner directories.
|
||||
m4_bmatch([$1], [[/]],
|
||||
[dirname=`AS_DIRNAME([$1])`
|
||||
# Possibly create inner directories.
|
||||
dirname=`AS_DIRNAME([$1])`
|
||||
AS_MKDIR_P([$dirname])
|
||||
AT_CLEANUP_FILES([$dirname])])
|
||||
|
||||
AT_DATA([$1.y],
|
||||
[%%
|
||||
@@ -197,7 +430,7 @@ AT_CHECK([bison --defines=$1.h $1.y])
|
||||
# CPP should be happy with it.
|
||||
AT_CHECK([$CC -E $1.h], 0, [ignore])
|
||||
|
||||
AT_CLEANUP($1.*)
|
||||
AT_CLEANUP
|
||||
])
|
||||
|
||||
AT_TEST_CPP_GUARD_H([input/input])
|
||||
|
||||
+2
-1
@@ -19,7 +19,7 @@
|
||||
# 02111-1307, USA.
|
||||
|
||||
# We need a recent Autotest.
|
||||
m4_version_prereq([2.52e])
|
||||
m4_version_prereq([2.52g])
|
||||
|
||||
AT_INIT
|
||||
|
||||
@@ -27,4 +27,5 @@ AT_TESTED([bison])
|
||||
|
||||
m4_include([output.at])
|
||||
m4_include([calc.at])
|
||||
m4_include([torture.at])
|
||||
m4_include([regression.at])
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# Torturing Bison. -*- 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([[Torture Tests.]])
|
||||
|
||||
|
||||
# AT_DATA_STACK_TORTURE(C-PROLOGUE)
|
||||
# ---------------------------------
|
||||
# A parser specialized in torturing the stack size.
|
||||
m4_define([AT_DATA_STACK_TORTURE],
|
||||
[# A grammar of parens growing the stack thanks to right recursion.
|
||||
# exp:
|
||||
AT_DATA([input.y],
|
||||
[[%{
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
]$1[
|
||||
static int yylex (void);
|
||||
static void yyerror (const char *msg);
|
||||
#define YYERROR_VERBOSE 1
|
||||
#define YYPRINT(File, Type, Value) \
|
||||
fprintf (File, " (%d, stack size = %d, max = %d)", \
|
||||
Value, yyssp - yyss + 1, yystacksize);
|
||||
%}
|
||||
%debug
|
||||
%token WAIT_FOR_EOF
|
||||
%%
|
||||
exp: WAIT_FOR_EOF exp | ;
|
||||
%%
|
||||
static void
|
||||
yyerror (const char *msg)
|
||||
{
|
||||
fprintf (stderr, "%s\n", msg);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* There are YYLVAL_MAX of WAIT_FOR_EOFs. */
|
||||
unsigned int yylval_max;
|
||||
|
||||
static int
|
||||
yylex (void)
|
||||
{
|
||||
if (yylval--)
|
||||
return WAIT_FOR_EOF;
|
||||
else
|
||||
return EOF;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, const char **argv)
|
||||
{
|
||||
assert (argc == 2);
|
||||
yylval = atoi (argv[1]);
|
||||
yydebug = 1;
|
||||
return yyparse ();
|
||||
}
|
||||
]])
|
||||
AT_CHECK([bison input.y -o input.c])
|
||||
AT_CHECK([$CC $CFLAGS $CPPFLAGS input.c -o input], 0, [], [ignore])
|
||||
])
|
||||
|
||||
|
||||
## -------------------------------------- ##
|
||||
## Exploding the Stack Size with Alloca. ##
|
||||
## -------------------------------------- ##
|
||||
|
||||
AT_SETUP([Exploding the Stack Size with Alloca])
|
||||
|
||||
AT_DATA_STACK_TORTURE
|
||||
|
||||
# Below the limit of 200.
|
||||
AT_CHECK([input 20], 0, [], [ignore])
|
||||
# Two enlargements: 2 * 2 * 200.
|
||||
AT_CHECK([input 900], 0, [], [ignore])
|
||||
# Fails: beyond the limit of 10,000 (which we don't reach anyway since we
|
||||
# multiply by two starting at 200 => 5120 is the last possible).
|
||||
AT_CHECK([input 10000], 1, [], [ignore])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
|
||||
## -------------------------------------- ##
|
||||
## Exploding the Stack Size with Malloc. ##
|
||||
## -------------------------------------- ##
|
||||
|
||||
AT_SETUP([Exploding the Stack Size with Malloc])
|
||||
|
||||
AT_DATA_STACK_TORTURE([[#define YYSTACK_USE_ALLOCA_ALLOCA 0]])
|
||||
|
||||
# Below the limit of 200.
|
||||
AT_CHECK([input 20], 0, [], [ignore])
|
||||
# Two enlargements: 2 * 2 * 200.
|
||||
AT_CHECK([input 900], 0, [], [ignore])
|
||||
# Fails: beyond the limit of 10,000 (which we don't reach anyway since we
|
||||
# multiply by two starting at 200 => 5120 is the possible).
|
||||
AT_CHECK([input 10000], 1, [], [ignore])
|
||||
|
||||
AT_CLEANUP
|
||||
Reference in New Issue
Block a user