Compare commits

...
85 Commits
Author SHA1 Message Date
Akim Demaille adb4edee47 Version 1.30d. 2001-11-20 13:26:58 +00:00
Akim Demaille 65490badba . 2001-11-20 13:21:23 +00:00
Akim Demaille 8b044b8540 Adjust. 2001-11-20 13:14:13 +00:00
Akim Demaille 0704bc9b8e * po/sv.po: New.
* configure.in (ALL_LINGUAS): Adjust.
* po/POTFILE.in: Remove `nullable.c' and `derives.c' which no
longer contains strings to translate.
2001-11-20 13:10:12 +00:00
Akim Demaille 2b7c2ef124 * src/conflicts.c (conflicts_print): Add a missing n. 2001-11-19 11:07:50 +00:00
Akim Demaille 48e38d301e Formatting changes. 2001-11-19 10:28:25 +00:00
Akim Demaille 560757768c * src/nullable.c (nullable_print): New.
(set_nullable): Call it when tracing.
Better locality of variables.
2001-11-19 09:27:37 +00:00
Akim Demaille 238b8134ec * src/print.c (print_actions): Better locality of variables. 2001-11-19 09:27:24 +00:00
Akim Demaille 483642486d * src/derives.c (print_derives): Fix and enrich.
* src/closure.c (print_fderives): Likewise.
2001-11-19 09:27:11 +00:00
Akim Demaille 146ad4c8d0 * src/closure.c (itemsetend): Remove, replaced with...
(itemsetsize): new.
2001-11-19 09:26:57 +00:00
Akim Demaille f2a4c94506 * src/LR0.c (kernel_end): Remove, replaced with...
(kernel_size): new.
2001-11-19 09:26:43 +00:00
Akim Demaille 65fae038b9 * src/conflicts.c (set_conflicts): Use arrays instead of pointers
to clarify.
2001-11-19 09:26:30 +00:00
Akim Demaille e1cb5fb523 * src/closure.c (closure): Use arrays instead of pointers to clarify. 2001-11-19 09:26:17 +00:00
Akim Demaille 64fabbb49f * src/closure.c, src/derives.c, src/nullable.c: Adjust various
trace messages.
* src/LR0.c: Likewise.
(allocate_itemsets): Use arrays instead of pointers to clarify.
2001-11-19 09:25:36 +00:00
Akim Demaille 3b2925a060 * src/getargs.c (statistics_flag): Replace with...
(trace_flag): New.
(longopts): Accept --trace instead of --statistics.
* src/getargs.h: Adjust.
* src/LR0.c, src/closure.c, src/derives.c, src/nullable.c,
* src/reduce.c: Use trace_flags instead of the CPP conditional TRACE.
2001-11-19 09:21:26 +00:00
Akim Demaille 83bcf86639 * src/LR0.c (new_itemsets, get_state): Use more arrays and less
pointers to clarify the code.
(save_reductions, save_shifts): Factor common parts of alternatives.
2001-11-19 09:17:53 +00:00
Akim Demaille 8639df64a6 * src/LR0.c (new_state, get_state): Complete TRACE code.
* src/closure.c: Include `reader.h' to get `tags', needed by the
trace code.
Rename the conditional DEBUG as TRACE.
Output consistently TRACEs to stderr, not stdout.
* src/derives.c: Likewise.
* src/reduce.c: (inaccessable_symbols): Using if is better style
than goto.
Use `#if TRACE' instead of `#if 0' for tracing code.
2001-11-19 09:16:24 +00:00
Akim Demaille 377bd7c9a2 * src/system.h (LIST_FREE, shortcpy): New.
* src/LR0.c: Use them.
* src/output.c (free_itemsets, free_reductions, free_shifts):
Remove, replaced by LIST_FREE.
2001-11-19 09:14:54 +00:00
Akim Demaille b4a7a230f1 * src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC)
(REDUCTIONS_ALLOC):  New.
* src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory
allocation.
2001-11-19 09:14:26 +00:00
Akim Demaille c1586e58fe * src/LR0.c (new_state): Complete trace code.
* src/nullable.c (set_nullable): Don't translate traces.
2001-11-19 09:14:07 +00:00
Akim Demaille 50766eee39 * src/print_graph.c (print_core): Better locality of variables.
* src/print.c (print_core): Likewise.
2001-11-19 09:13:53 +00:00
Akim Demaille dc3b81cd67 * src/vcg.c: You do the output, so you are responsible of the
handling of VCG syntax, in particular: use quotearg.
* src/print_graph.c: Don't.
(print_actions): Don't output the actions as part of the nodes,
since that's the job of the edges.
(print_state): Don't output by hand: fill the node description,
and ask for its output.
2001-11-19 09:13:40 +00:00
Akim Demaille c555896775 * src/bison.simple (yyparse): When reporting verbosely an error,
no longer issue additional quotes around token names.
* tests/calc.at: Adjust.
2001-11-19 09:13:26 +00:00
Akim Demaille 35f61cb998 * src/symtab.h, src/symtab.c: line' is a new member of bucket'.
* src/reader.c (record_rule_lines, rline, rline_allocated): Remove.
* src/output.c: Adjust.
2001-11-19 09:13:12 +00:00
Akim Demaille 9291f914de * src/gram.h (rprec, rprecsym, rassoc): Remove, now part of...
(rule_t): this.
* src/conflicts.c, src/reader.c, src/reduce.c: Adjust.
2001-11-19 09:12:49 +00:00
Akim Demaille ff1581dddb * src/gram.h (rule_t): New.
(rule_table): New.
(rrhs, rlhs): Remove, part of state_t.
* src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c,
* src/lalr.c, src/nullable.c, src/output.c, src/print.c,
* src/reader.c, src/reduce.c: Adjust.
2001-11-19 09:12:25 +00:00
Akim Demaille 4b9170b2c0 * src/reader.c (symbols_output): New, extracted from...
(packsymbols): Here.
(reader): Call it.
2001-11-19 09:12:02 +00:00
Akim Demaille 523a9eafdc * src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with...
(maxrhs): this new function.
2001-11-19 09:11:47 +00:00
Akim Demaille bcdf932ed9 * src/lalr.c (F): New macro to access to the variable F.
Adjust.
2001-11-19 09:11:34 +00:00
Akim Demaille e2aabb3dc6 * src/lalr.h (LA): New macro to access to the variable LA.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
* src/lalr.c: Adjust.
2001-11-19 09:11:21 +00:00
Akim Demaille e8ebe4b0c7 * src/lalr.c (initialize_LA): Only initialize LA. Let...
(set_state_table): handle the `lookaheads' members.
2001-11-19 09:11:03 +00:00
Akim Demaille 9043475828 * src/lalr.h (lookaheads): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:47 +00:00
Akim Demaille d80a86e0b5 * src/lalr.h (consistent): Removed array, which contents is now
member of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:30 +00:00
Akim Demaille cfc3acf242 * src/lalr.h (reduction_table, shift_table): Removed arrays, which
contents is now members of...
(state_t): this structure.
* src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c:
Adjust.
2001-11-19 09:10:12 +00:00
Akim Demaille 93337ac41c * src/lalr.h (state_t): New.
(state_table): Be a state_t * instead of a core **.
(accessing_symbol): Remove, part of state_t.
* src/lalr.c: Adjust.
(set_accessing_symbol): Merge into...
(set_state_table): this.
* src/print_graph.c, src/conflicts.c: Adjust.
2001-11-19 09:08:44 +00:00
Akim Demaille 0d7803637b Bump to 1.30d. 2001-11-14 17:52:37 +00:00
Akim Demaille a62c863ec3 . 2001-11-14 15:35:09 +00:00
Akim Demaille 1e883de90c Version 1.30c. 2001-11-14 15:25:51 +00:00
Akim Demaille efcff8cd5c * tests/calc.at, tests/output.at, tests/regression.at,
* tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g:
now the tests are run in private dirs, therefore AC_CLEANUP and
family can be simplified to 0-ary.
* tests/atlocal.in: Now that we run `elsewhere' than in tests/,
use abs. path to find config.h.
2001-11-14 15:16:40 +00:00
Akim Demaille 3e85a00236 * src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be
defined only if yyoverflow is defined, to avoid `warning: unused
variable `yyvs1''.
Reported by The Test Suite.
2001-11-14 14:57:06 +00:00
Akim Demaille f85c981ac1 * src/print.c: Include reduce.h.
Reported by Hans Aberg.
2001-11-14 14:43:29 +00:00
Akim Demaille 5cb10dae3c * src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer):
Revert a previous patch:  these are really const.
* src/conflicts.c (conflict_report): Additional useless pair of
braces to pacify GCC's warnings for `if () if () {} else {}'.
* src/lex.c (parse_percent_token): Replace equal_offset with
arg_offset.
arg is const.
Be sure to strdup `arg' when used, since there is no reason for
token_buffer not to change.
2001-11-14 14:42:14 +00:00
Akim Demaille 26e1ca45ba * src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper
definition.
* src/main.c (main): Use them.
Suggested by Hans Aberg.
2001-11-14 14:14:48 +00:00
Akim Demaille 8888e43b2c Bump to 1.30c. 2001-11-12 10:31:00 +00:00
Akim Demaille d9ca2df2aa . 2001-11-12 10:21:45 +00:00
Akim Demaille e8def3ff6e Version 1.30b. 2001-11-12 10:16:50 +00:00
Akim Demaille 76e734e5ed Adjust ngettext default. 2001-11-12 10:11:49 +00:00
Akim Demaille b8b4a730a0 Typo. 2001-11-12 09:58:30 +00:00
Akim Demaille b9d2d2a881 Version 1.30b.
* config/config.guess, config/config.sub, po/*.po: Update.
* src/system.h (ngettext): Now that we use ngettext, be sure to
provide a default definition when NLS are not used.
2001-11-12 09:56:20 +00:00
Akim Demaille 78986eff74 Version 1.30b.
* config/config.guess, config/config.sub, po/*.po: Update.
2001-11-12 09:42:14 +00:00
Akim Demaille 1393a78454 Typos. 2001-11-12 09:36:17 +00:00
Akim Demaille de11686376 * 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 09:20:35 +00:00
Akim Demaille badfc69c26 %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 09:19:48 +00:00
Akim Demaille fb28699f95 * tests/regression.at (Conflicts): Rename as...
(Unresolved SR Conflicts): this.
(Solved SR Conflicts): New.
2001-11-12 09:16:10 +00:00
Akim Demaille 6b307af66c * 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 09:15:57 +00:00
Akim Demaille dad56b10d3 * 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 09:15:43 +00:00
Akim Demaille 5f1ff7cd74 * 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 09:15:25 +00:00
Akim Demaille b6cac93afa * tests/regression.at (Invalid input): Remove, duplicate with
``Invalid input: 1''.
2001-11-12 09:15:03 +00:00
Akim Demaille 86d5a1ed5c * tests/torture.at (AT_DATA_STACK_TORTURE)
(Exploding the Stack Size with Alloca)
(Exploding the Stack Size with Malloc): New.
2001-11-12 09:14:50 +00:00
Akim Demaille 97e9ee3ad5 * src/bison.simple (YYSTACK_REALLOC): New.
(yyparse) [!yyoverflow]: Use it and free the old stack.
Reported by FIXME: Who.
2001-11-12 09:14:35 +00:00
Akim Demaille d81e5db73f Bump to 1.30b. 2001-11-05 15:15:47 +00:00
Akim Demaille 029806c785 . 2001-11-05 10:15:57 +00:00
Akim Demaille a2874a4e5d Regen. 2001-11-05 10:12:42 +00:00
Akim Demaille d54387b4bc Version 1.30a.
* src/lex.c (parse_percent_token): s/quotearg/quote/.
2001-11-05 10:06:27 +00:00
Akim Demaille a4c22fa4bf Version 1.30a. 2001-11-05 09:55:38 +00:00
Akim Demaille 0d214b93b0 Regen. 2001-11-05 09:29:10 +00:00
Akim Demaille 3c5d71ca8b * tests/regression.at (AT_TEST_CPP_GUARD_H): Adjust the clean up
pattern.
2001-11-05 09:18:31 +00:00
Akim Demaille d61c57b70c * src/reader.c (parse_union_decl): Output yystype/YYSTYPE as we do
with yyltype/YYLTYPE.  This allows inclusion of the generated
header within the parser if the compiler, such as GGC, accepts
multiple equivalent #defines.
2001-11-05 09:12:38 +00:00
Akim Demaille ea57e0a3c4 * src/getargs.c (longopts): Support `--output'. getopt is now
able to understand that `--out' is OK: the two racing long options
are aliases.
(usage): Adjust.
* src/lex.h (tok_setopt): Remove, replaced with...
(tok_intopt, tok_stropt): these new guys.
* src/lex.c (getopt.h): Not needed.
(token_buffer, unlexed_token_buffer): Not const.
(percent_table): Promote `-' over `_' in directive names.
Active `%name-prefix', `file-prefix', and `output'.
(parse_percent_token): Accept possible arguments to directives.
Promote `-' over `_' in directive names.
* doc/bison.texinfo (Decl Summary): Split the list into
`directives for grammars' and `directives for bison'.
Sort'em.
Add description of `%name-prefix', `file-prefix', and `output'.
Promote `-' over `_' in directive names.
(Bison Options): s/%locactions/%locations/.  Nice Freudian slip.
Simplify the description of `--name-prefix'.
Promote `-' over `_' in directive names.
Promote `--output' over `--output-file'.
Fix the description of `--defines'.
* tests/output.at: Exercise %file-prefix and %output.
2001-11-04 16:26:59 +00:00
Akim Demaille 57c429f305 * doc/refcard.tex: Update. 2001-11-02 17:18:52 +00:00
Akim Demaille 239e5c1a9a * src/symtab.h (SUNDEF): New.
* src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
stand for `uninitialized', instead of 0.
* src/reader.c (packsymbols, parse_thong_decl): Adjust.
* src/lex.c (lex): Adjust.
* tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
Number it 0.
Let yylex return it instead of a plain 0.
Reported by Dick Streefland.
2001-11-02 15:26:33 +00:00
Akim Demaille ae9b5e5a4f * tests/regression.at (Mixing %token styles): New test. 2001-11-02 14:12:42 +00:00
Akim Demaille 7ae1c5929e * src/reader.c (parse_thong_decl): Formatting changes.
(token_translations_init): New, extracted from...
(packsymbols): Here.
Adjust.
2001-11-02 14:02:31 +00:00
Akim Demaille 1d708336d4 * tests/regression.at (AT_TEST_CPP_GUARD_H): New.
Check that `9foo.y' produces correct cpp guards.
* src/files.c (compute_header_macro): Prepend `BISON_' to CPP
guards.
Reported by Wwp.
2001-11-01 18:29:36 +00:00
Akim Demaille 705131d1de * tests/regression.at (Invalid input: 2): New.
* src/lex.c (unlexed_token_buffer): New.
(lex, unlex): Adjust: when unlexing, be sure to save token_buffer
too.
Reported by Wwp.
2001-11-01 18:03:46 +00:00
Akim Demaille 5c2a5a8970 Update. 2001-11-01 14:35:28 +00:00
Akim Demaille 6b784f8552 * configure.in: Bump to 1.30a.
Adjust to newer Autotest.
2001-11-01 14:27:42 +00:00
Akim Demaille 32a1edfccd . 2001-10-29 09:01:49 +00:00
Akim Demaille 63cf44e7ac Update and Regen. 2001-10-29 08:51:57 +00:00
Akim Demaille 9507085cf3 Regen. 2001-10-26 14:33:02 +00:00
Akim Demaille 8d3c8c3643 Version 1.30. 2001-10-26 13:43:20 +00:00
Akim Demaille 16c9da79ef Update. 2001-10-26 13:29:29 +00:00
Akim Demaille d0132d6bec Regen. 2001-10-26 13:10:17 +00:00
Paul Eggert 1306676ce3 Sync with fileutils 4.1.1. 2001-10-26 07:04:29 +00:00
Akim Demaille e18cda8b5e . 2001-10-18 16:21:33 +00:00
100 changed files with 6856 additions and 4455 deletions
+447
View File
@@ -1,3 +1,450 @@
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.
* src/lex.c (parse_percent_token): s/quotearg/quote/.
2001-11-05 Akim Demaille <[email protected]>
* tests/regression.at (AT_TEST_CPP_GUARD_H): Adjust the clean up
pattern.
2001-11-05 Akim Demaille <[email protected]>
* src/reader.c (parse_union_decl): Output yystype/YYSTYPE as we do
with yyltype/YYLTYPE. This allows inclusion of the generated
header within the parser if the compiler, such as GGC, accepts
multiple equivalent #defines.
2001-11-04 Akim Demaille <[email protected]>
* src/getargs.c (longopts): Support `--output'. getopt is now
able to understand that `--out' is OK: the two racing long options
are aliases.
(usage): Adjust.
* src/lex.h (tok_setopt): Remove, replaced with...
(tok_intopt, tok_stropt): these new guys.
* src/lex.c (getopt.h): Not needed.
(token_buffer, unlexed_token_buffer): Not const.
(percent_table): Promote `-' over `_' in directive names.
Active `%name-prefix', `file-prefix', and `output'.
(parse_percent_token): Accept possible arguments to directives.
Promote `-' over `_' in directive names.
* doc/bison.texinfo (Decl Summary): Split the list into
`directives for grammars' and `directives for bison'.
Sort'em.
Add description of `%name-prefix', `file-prefix', and `output'.
Promote `-' over `_' in directive names.
(Bison Options): s/%locactions/%locations/. Nice Freudian slip.
Simplify the description of `--name-prefix'.
Promote `-' over `_' in directive names.
Promote `--output' over `--output-file'.
Fix the description of `--defines'.
* tests/output.at: Exercise %file-prefix and %output.
2001-11-02 Akim Demaille <[email protected]>
* doc/refcard.tex: Update.
2001-11-02 Akim Demaille <[email protected]>
* src/symtab.h (SUNDEF): New.
* src/symtab.c (bucket_new): Init user_token_number to SUNDEF to
stand for `uninitialized', instead of 0.
* src/reader.c (packsymbols, parse_thong_decl): Adjust.
* src/lex.c (lex): Adjust.
* tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF.
Number it 0.
Let yylex return it instead of a plain 0.
Reported by Dick Streefland.
2001-11-02 Akim Demaille <[email protected]>
* tests/regression.at (Mixing %token styles): New test.
2001-11-02 Akim Demaille <[email protected]>
* src/reader.c (parse_thong_decl): Formatting changes.
(token_translations_init): New, extracted from...
(packsymbols): Here.
Adjust.
2001-11-01 Akim Demaille <[email protected]>
* tests/regression.at (AT_TEST_CPP_GUARD_H): New.
Check that `9foo.y' produces correct cpp guards.
* src/files.c (compute_header_macro): Prepend `BISON_' to CPP
guards.
Reported by Wwp.
2001-11-01 Akim Demaille <[email protected]>
* tests/regression.at (Invalid input: 2): New.
* src/lex.c (unlexed_token_buffer): New.
(lex, unlex): Adjust: when unlexing, be sure to save token_buffer
too.
Reported by Wwp.
2001-11-01 Akim Demaille <[email protected]>
* configure.in: Bump to 1.30a.
Adjust to newer Autotest.
2001-10-26 Akim Demaille <[email protected]>
Version 1.30.
2001-10-26 Paul Eggert <[email protected]>
* lib/error.c, lib/error.h, lib/getopt.c, lib/getopt.h,
lib/getopt1.c, lib/obstack.c, lib/obstack.h, lib/quote.c,
lib/strnlen.c, lib/xmalloc.c, m4/c-bs-a.m4, m4/error.m4,
m4/gettext.m4, m4/lcmessage.m4, m4/malloc.m4, m4/mbstate_t.m4,
m4/progtest.m4, m4/realloc.m4, m4/strerror_r.m4:
Sync with fileutils 4.1.1.
2001-10-18 Akim Demaille <[email protected]> 2001-10-18 Akim Demaille <[email protected]>
Version 1.29f. Version 1.29f.
+19 -28
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -136,9 +137,9 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
uninstall-info-recursive all-recursive install-data-recursive \ uninstall-info-recursive all-recursive install-data-recursive \
install-exec-recursive installdirs-recursive install-recursive \ install-exec-recursive installdirs-recursive install-recursive \
uninstall-recursive check-recursive installcheck-recursive uninstall-recursive check-recursive installcheck-recursive
DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS \ Makefile.am Makefile.in NEWS README-alpha THANKS aclocal.m4 \
aclocal.m4 config.hin configure configure.in config.hin configure configure.in
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
all: config.h all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive $(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -148,9 +149,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile $(AUTOMAKE) --gnu Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$@ $(SHELL) ./config.status
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck $(SHELL) ./config.status --recheck
@@ -159,33 +158,25 @@ $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENC
$(ACLOCAL_M4): configure.in m4/c-bs-a.m4 m4/codeset.m4 m4/dmalloc.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4 $(ACLOCAL_M4): configure.in m4/c-bs-a.m4 m4/codeset.m4 m4/dmalloc.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h
config.h: stamp-h1
@if test ! -f $@; then \ @if test ! -f $@; then \
rm -f stamp-h; \ rm -f stamp-h1; \
$(MAKE) stamp-h; \ $(MAKE) stamp-h1; \
else :; fi else :; fi
stamp-h: $(srcdir)/config.hin $(top_builddir)/config.status
@rm -f stamp-h stamp-hT stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
@echo timestamp > stamp-hT 2> /dev/null @rm -f stamp-h1
cd $(top_builddir) \ cd $(top_builddir) && $(SHELL) ./config.status config.h
&& CONFIG_FILES= CONFIG_HEADERS=config.h:config.hin \
$(SHELL) ./config.status $(srcdir)/config.hin: $(top_srcdir)/configure.in $(ACLOCAL_M4)
@mv stamp-hT stamp-h
$(srcdir)/config.hin: $(srcdir)/./stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/./stamp-h.in; \
$(MAKE) $(srcdir)/./stamp-h.in; \
else :; fi
$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
@rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT
@echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null
cd $(top_srcdir) && $(AUTOHEADER) cd $(top_srcdir) && $(AUTOHEADER)
@mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in touch $(srcdir)/config.hin
distclean-hdr: distclean-hdr:
-rm -f config.h -rm -f config.h
intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status cd $(top_builddir) && $(SHELL) ./config.status $@
uninstall-info-am: uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd # This directory's subdirectories are mostly independent; you can cd
+65 -8
View File
@@ -1,7 +1,59 @@
Bison News Bison News
---------- ----------
Changes in version 1.29f: 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.
* Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
* Fixed some typos in the documentation.
* %token MY_EOF 0 is supported.
Before, MY_EOF was silently renumbered as 257.
* doc/refcard.tex is updated.
* %output, %file-prefix, %name-prefix.
New.
* --output
New, aliasing `--output-file'.
Changes in version 1.30, 2001-10-26:
* `--defines' and `--graph' have now an optionnal argument which is the * `--defines' and `--graph' have now an optionnal argument which is the
output file name. `-d' and `-g' do not change, they do not take any output file name. `-d' and `-g' do not change, they do not take any
@@ -10,11 +62,9 @@ Changes in version 1.29f:
* `%source_extension' and `%header_extension' are removed, failed * `%source_extension' and `%header_extension' are removed, failed
experiment. experiment.
* The test suite is more portable. * Portability fixes.
* Better portability. Changes in version 1.29, 2001-09-07:
Changes in version 1.29:
* The output file does not define const, as this caused problems when used * The output file does not define const, as this caused problems when used
with common autoconfiguration schemes. If you still use ancient compilers with common autoconfiguration schemes. If you still use ancient compilers
@@ -45,8 +95,11 @@ Changes in version 1.29:
* New directives. * New directives.
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose', `%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
`%debug', `%source_extension' and `%header_extension'. `%debug', `%source_extension' and `%header_extension'.
* @$
Automatic location tracking.
Changes in version 1.28: Changes in version 1.28, 1999-07-06:
* Should compile better now with K&R compilers. * Should compile better now with K&R compilers.
@@ -78,7 +131,7 @@ Changes in version 1.26:
* Generated parsers should now work even on operating systems which do * Generated parsers should now work even on operating systems which do
not provide alloca(). not provide alloca().
Changes in version 1.25: Changes in version 1.25, 1995-10-16:
* Errors in the input grammar are not fatal; Bison keeps reading * Errors in the input grammar are not fatal; Bison keeps reading
the grammar file, and reports all the errors found in it. the grammar file, and reports all the errors found in it.
@@ -119,3 +172,7 @@ Changes in version 1.22:
Changes in version 1.20: Changes in version 1.20:
Output file does not redefine const for C++. Output file does not redefine const for C++.
Local Variables:
mode: outline
End:
+6 -1
View File
@@ -2,11 +2,12 @@ Bison was originally written by Robert Corbett. It would not be what
it is today without the invaluable help of these people: it is today without the invaluable help of these people:
Airy Andre [email protected] Airy Andre [email protected]
Akim Demaille akim@epita.fr Akim Demaille akim@freefriends.org
Albert Chin-A-Young [email protected] Albert Chin-A-Young [email protected]
Alexander Belopolsky [email protected] Alexander Belopolsky [email protected]
Daniel Hagerty [email protected] Daniel Hagerty [email protected]
David J. MacKenzie [email protected] David J. MacKenzie [email protected]
Dick Streefland [email protected]
Fabrice Bauzac [email protected] Fabrice Bauzac [email protected]
Hans Aberg [email protected] Hans Aberg [email protected]
Jesse Thilo [email protected] Jesse Thilo [email protected]
@@ -19,10 +20,14 @@ Neil Booth [email protected]
Noah Friedman [email protected] Noah Friedman [email protected]
Pascal Bart [email protected] Pascal Bart [email protected]
Paul Eggert [email protected] Paul Eggert [email protected]
Per Allansson [email protected]
Piotr Gackiewicz [email protected] Piotr Gackiewicz [email protected]
Richard Stallman [email protected] Richard Stallman [email protected]
Robert Anisko [email protected] Robert Anisko [email protected]
Shura [email protected] Shura [email protected]
Tom Lane [email protected]
Wolfram Wagner [email protected]
Wwp [email protected]
Many people are not named here because we lost track of them. We Many people are not named here because we lost track of them. We
thank them! Please, help us keeping this list up to date. thank them! Please, help us keeping this list up to date.
Vendored
+152 -128
View File
@@ -1,4 +1,4 @@
# aclocal.m4 generated automatically by aclocal 1.5a # aclocal.m4 generated automatically by aclocal 1.5a -*- Autoconf -*-
# Copyright 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -157,6 +157,8 @@ Check your system clock])
fi fi
AC_MSG_RESULT(yes)]) AC_MSG_RESULT(yes)])
# -*- Autoconf -*-
# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. # Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
@@ -353,7 +355,7 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
# _AM_DEPENDENCIES(NAME) # _AM_DEPENDENCIES(NAME)
# --------------------- # ----------------------
# See how the compiler implements dependency checking. # See how the compiler implements dependency checking.
# NAME is "CC", "CXX" or "OBJC". # NAME is "CC", "CXX" or "OBJC".
# We try a few techniques and use that to set a single cache variable. # We try a few techniques and use that to set a single cache variable.
@@ -432,8 +434,7 @@ else
am_cv_$1_dependencies_compiler_type=none am_cv_$1_dependencies_compiler_type=none
fi fi
]) ])
$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type" AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AC_SUBST([$1DEPMODE])
]) ])
@@ -451,7 +452,7 @@ else
DEPDIR=_deps DEPDIR=_deps
fi fi
rmdir .deps 2>/dev/null rmdir .deps 2>/dev/null
AC_SUBST(DEPDIR) AC_SUBST([DEPDIR])
]) ])
@@ -466,12 +467,10 @@ if test "x$enable_dependency_tracking" != xno; then
AMDEPBACKSLASH='\' AMDEPBACKSLASH='\'
fi fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
pushdef([subst], defn([AC_SUBST])) AC_SUBST([AMDEPBACKSLASH])
subst(AMDEPBACKSLASH)
popdef([subst])
]) ])
# Generate code to set up dependency tracking. # Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. # Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
@@ -490,24 +489,18 @@ popdef([subst])
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# This macro should only be invoked once -- use via AC_REQUIRE. #serial 2
# Usage:
# AM_OUTPUT_DEPENDENCY_COMMANDS
# # _AM_OUTPUT_DEPENDENCY_COMMANDS
# This code is only required when automatic dependency tracking # ------------------------------
# is enabled. FIXME. This creates each `.P' file that we will AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# need in order to bootstrap the dependency handling code. [for mf in $CONFIG_FILES; do
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[ case $mf in
AC_OUTPUT_COMMANDS([
test x"$AMDEP_TRUE" != x"" ||
for mf in $CONFIG_FILES; do
case "$mf" in
Makefile) dirpart=.;; Makefile) dirpart=.;;
*/Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; */Makefile) dirpart=`AS_DIRNAME("$mf")`;;
*) continue;; *) continue;;
esac esac
grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
# Extract the definition of DEP_FILES from the Makefile without # Extract the definition of DEP_FILES from the Makefile without
# running `make'. # running `make'.
DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
@@ -531,14 +524,27 @@ for mf in $CONFIG_FILES; do
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists. # Make sure the directory exists.
test -f "$dirpart/$file" && continue test -f "$dirpart/$file" && continue
fdir=`echo "$file" | sed -e 's|/[^/]*$||'` fdir=`AS_DIRNAME(["$file"])`
$ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file" # echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file" echo '# dummy' > "$dirpart/$file"
done done
done done
], [AMDEP_TRUE="$AMDEP_TRUE" ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
ac_aux_dir="$ac_aux_dir"])])
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# AM_MAKE_INCLUDE() # AM_MAKE_INCLUDE()
# ----------------- # -----------------
@@ -657,32 +663,15 @@ fi])
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# serial 4 AC_PREREQ([2.52])
# serial 6
# When config.status generates a header, we must update the stamp-h file. # When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header # This file resides in the same directory as the config header
# that is generated. We must strip everything past the first ":", # that is generated. We must strip everything past the first ":",
# and everything past the last "/". # and everything past the last "/".
AC_PREREQ([2.52])
AC_DEFUN([AM_CONFIG_HEADER],
[dnl init our file count if it isn't already
m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0]))
dnl prepare to store our destination file list for use in config.status
AC_FOREACH([_AM_File], [$1],
[m4_pushdef([_AM_Dest], m4_patsubst(_AM_File, [:.*]))
m4_define([_AM_Config_Header_Index],
m4_incr(_AM_Config_Header_Index))
dnl and add it to the list of files AC keeps track of, along
dnl with our hook
AC_CONFIG_HEADERS(_AM_File,
[# update the timestamp
echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index["
][$2]m4_ifval([$3], [, [$3]]))
m4_popdef([_AM_Dest])])
]) # AM_CONFIG_HEADER
# _AM_DIRNAME(PATH) # _AM_DIRNAME(PATH)
# ----------------- # -----------------
# Like AS_DIRNAME, only do it during macro expansion # Like AS_DIRNAME, only do it during macro expansion
@@ -694,7 +683,44 @@ AC_DEFUN([_AM_DIRNAME],
patsubst([$1], [^\(/\).*], [\1])), patsubst([$1], [^\(/\).*], [\1])),
patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])),
patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl
]) # _AM_DIRNAME ])# _AM_DIRNAME
# The stamp files are numbered to have different names.
# We could number them on a directory basis, but that's additional
# complications, let's have a unique counter.
m4_define([_AM_STAMP_Count], [0])
# _AM_STAMP(HEADER)
# -----------------
# The name of the stamp file for HEADER.
AC_DEFUN([_AM_STAMP],
[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl
AS_ESCAPE(_AM_DIRNAME(patsubst([$1],
[:.*])))/stamp-h[]_AM_STAMP_Count])
# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS)
# ------------------------------------------------------------
# We used to try to get a real timestamp in stamp-h. But the fear is that
# that will cause unnecessary cvs conflicts.
AC_DEFUN([_AM_CONFIG_HEADER],
[# Add the stamp file to the list of files AC keeps track of,
# along with our hook.
AC_CONFIG_HEADERS([$1],
[# update the timestamp
echo 'timestamp for $1' >"_AM_STAMP([$1])"
$2],
[$3])
])# _AM_CONFIG_HEADER
# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS)
# --------------------------------------------------------------
AC_DEFUN([AM_CONFIG_HEADER],
[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])])
])# AM_CONFIG_HEADER
#serial 1 #serial 1
# This test replaces the one in autoconf. # This test replaces the one in autoconf.
@@ -871,19 +897,19 @@ AC_SUBST(U)dnl
AC_SUBST(ANSI2KNR)dnl AC_SUBST(ANSI2KNR)dnl
]) ])
#serial 3 #serial 5
dnl From Jim Meyering. dnl From Jim Meyering.
dnl Determine whether malloc accepts 0 as its argument. dnl Determine whether malloc accepts 0 as its argument.
dnl If it doesn't, arrange to use the replacement function. dnl If it doesn't, arrange to use the replacement function.
dnl dnl
AC_DEFUN(jm_FUNC_MALLOC, AC_DEFUN([jm_FUNC_MALLOC],
[ [
dnl xmalloc.c requires that this symbol be defined so it doesn't dnl xmalloc.c requires that this symbol be defined so it doesn't
dnl mistakenly use a broken malloc -- as it might if this test were omitted. dnl mistakenly use a broken malloc -- as it might if this test were omitted.
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1,
[Define if the malloc check has been performed. ]) [Define if the malloc check has been performed. ])
AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc,
[AC_TRY_RUN([ [AC_TRY_RUN([
@@ -900,26 +926,25 @@ AC_DEFUN(jm_FUNC_MALLOC,
jm_cv_func_working_malloc=no) jm_cv_func_working_malloc=no)
]) ])
if test $jm_cv_func_working_malloc = no; then if test $jm_cv_func_working_malloc = no; then
AC_SUBST(LIBOBJS) AC_LIBOBJ(malloc)
LIBOBJS="$LIBOBJS malloc.$ac_objext" AC_DEFINE(malloc, rpl_malloc,
AC_DEFINE_UNQUOTED(malloc, rpl_malloc,
[Define to rpl_malloc if the replacement function should be used.]) [Define to rpl_malloc if the replacement function should be used.])
fi fi
]) ])
#serial 3 #serial 5
dnl From Jim Meyering. dnl From Jim Meyering.
dnl Determine whether realloc works when both arguments are 0. dnl Determine whether realloc works when both arguments are 0.
dnl If it doesn't, arrange to use the replacement function. dnl If it doesn't, arrange to use the replacement function.
dnl dnl
AC_DEFUN(jm_FUNC_REALLOC, AC_DEFUN([jm_FUNC_REALLOC],
[ [
dnl xmalloc.c requires that this symbol be defined so it doesn't dnl xmalloc.c requires that this symbol be defined so it doesn't
dnl mistakenly use a broken realloc -- as it might if this test were omitted. dnl mistakenly use a broken realloc -- as it might if this test were omitted.
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1,
[Define if the realloc check has been performed. ]) [Define if the realloc check has been performed. ])
AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc,
[AC_TRY_RUN([ [AC_TRY_RUN([
@@ -936,9 +961,8 @@ AC_DEFUN(jm_FUNC_REALLOC,
jm_cv_func_working_realloc=no) jm_cv_func_working_realloc=no)
]) ])
if test $jm_cv_func_working_realloc = no; then if test $jm_cv_func_working_realloc = no; then
AC_SUBST(LIBOBJS) AC_LIBOBJ(realloc)
LIBOBJS="$LIBOBJS realloc.$ac_objext" AC_DEFINE(realloc, rpl_realloc,
AC_DEFINE_UNQUOTED(realloc, rpl_realloc,
[Define to rpl_realloc if the replacement function should be used.]) [Define to rpl_realloc if the replacement function should be used.])
fi fi
]) ])
@@ -978,11 +1002,11 @@ AC_DEFUN([jm_FUNC_MBRTOWC],
fi fi
]) ])
#serial 3 #serial 4
dnl From Paul Eggert. dnl From Paul Eggert.
AC_DEFUN(AC_C_BACKSLASH_A, AC_DEFUN([AC_C_BACKSLASH_A],
[ [
AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a,
[AC_TRY_COMPILE([], [AC_TRY_COMPILE([],
@@ -1002,7 +1026,7 @@ AC_DEFUN(AC_C_BACKSLASH_A,
fi fi
]) ])
# serial 8 # serial 9
# From Paul Eggert. # From Paul Eggert.
@@ -1014,7 +1038,7 @@ AC_DEFUN(AC_C_BACKSLASH_A,
# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits # (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits
# a syntax error in wchar.h due to the use of undefined __int32_t. # a syntax error in wchar.h due to the use of undefined __int32_t.
AC_DEFUN(AC_MBSTATE_T, AC_DEFUN([AC_MBSTATE_T],
[ [
AC_CHECK_HEADERS(stdlib.h) AC_CHECK_HEADERS(stdlib.h)
@@ -1032,25 +1056,40 @@ AC_DEFUN(AC_MBSTATE_T,
[Define to a type if <wchar.h> does not define.]) [Define to a type if <wchar.h> does not define.])
fi]) fi])
#serial 1 #serial 4
dnl FIXME: put these prerequisite-only *.m4 files in a separate dnl FIXME: put these prerequisite-only *.m4 files in a separate
dnl directory -- otherwise, they'll conflict with existing files. dnl directory -- otherwise, they'll conflict with existing files.
dnl These are the prerequisite macros for GNU's error.c file. dnl These are the prerequisite macros for GNU's error.c file.
AC_DEFUN(jm_PREREQ_ERROR, AC_DEFUN([jm_PREREQ_ERROR],
[ [
AC_CHECK_FUNCS(strerror strerror_r vprintf doprnt) AC_CHECK_FUNCS(strerror vprintf doprnt)
AC_HEADER_STDC AC_CHECK_DECLS([strerror])
AC_FUNC_STRERROR_R AC_FUNC_STRERROR_R
AC_HEADER_STDC
]) ])
#serial 1002 #serial 1003
# Experimental replacement for the function in the latest CVS autoconf. # Experimental replacement for the function in the latest CVS autoconf.
# If the compile-test says strerror_r doesn't work, then resort to a
# `run'-test that works on BeOS and segfaults on DEC Unix.
# Use with the error.c file in ../lib. # Use with the error.c file in ../lib.
# 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. */
undefine([AC_FUNC_STRERROR_R]) undefine([AC_FUNC_STRERROR_R])
# AC_FUNC_STRERROR_R # AC_FUNC_STRERROR_R
@@ -1058,57 +1097,36 @@ undefine([AC_FUNC_STRERROR_R])
AC_DEFUN([AC_FUNC_STRERROR_R], AC_DEFUN([AC_FUNC_STRERROR_R],
[AC_CHECK_DECLS([strerror_r]) [AC_CHECK_DECLS([strerror_r])
AC_CHECK_FUNCS([strerror_r]) AC_CHECK_FUNCS([strerror_r])
if test $ac_cv_func_strerror_r = yes; then AC_CACHE_CHECK([whether strerror_r returns char *],
AC_CHECK_HEADERS(string.h) ac_cv_func_strerror_r_char_p,
AC_CACHE_CHECK([for working strerror_r],
ac_cv_func_strerror_r_works,
[ [
AC_TRY_COMPILE( ac_cv_func_strerror_r_char_p=no
[ if test $ac_cv_have_decl_strerror_r = yes; then
# include <stdio.h> AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
# if HAVE_STRING_H [[
# include <string.h> char buf[100];
# endif char x = *strerror_r (0, buf, sizeof buf);
], char *p = strerror_r (0, buf, sizeof buf);
[ ]])],
char buf[100]; ac_cv_func_strerror_r_char_p=yes)
char x = *strerror_r (0, buf, sizeof buf); else
], # strerror_r is not declared. Choose between
ac_cv_func_strerror_r_works=yes,
ac_cv_func_strerror_r_works=no
)
if test $ac_cv_func_strerror_r_works = no; then
# strerror_r seems not to work, but now we have to choose between
# systems that have relatively inaccessible declarations for the # systems that have relatively inaccessible declarations for the
# function. BeOS and DEC UNIX 4.0 fall in this category, but the # function. BeOS and DEC UNIX 4.0 fall in this category, but the
# former has a strerror_r that returns char*, while the latter # former has a strerror_r that returns char*, while the latter
# has a strerror_r that returns `int'. # has a strerror_r that returns `int'.
# This test should segfault on the DEC system. # This test should segfault on the DEC system.
AC_TRY_RUN( AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
[ extern char *strerror_r ();],
# include <stdio.h> [[char buf[100];
# include <string.h>
# include <ctype.h>
extern char *strerror_r ();
int
main ()
{
char buf[100];
char x = *strerror_r (0, buf, sizeof buf); char x = *strerror_r (0, buf, sizeof buf);
exit (!isalpha (x)); exit (!isalpha (x));]])],
} ac_cv_func_strerror_r_char_p=yes, , :)
],
ac_cv_func_strerror_r_works=yes,
ac_cv_func_strerror_r_works=no,
ac_cv_func_strerror_r_works=no)
fi fi
]) ])
if test $ac_cv_func_strerror_r_works = yes; then if test $ac_cv_func_strerror_r_char_p = yes; then
AC_DEFINE_UNQUOTED(HAVE_WORKING_STRERROR_R, 1, AC_DEFINE([STRERROR_R_CHAR_P], 1,
[Define to 1 if `strerror_r' returns a string.]) [Define to 1 if strerror_r returns char *.])
fi
fi fi
])# AC_FUNC_STRERROR_R ])# AC_FUNC_STRERROR_R
@@ -1136,10 +1154,12 @@ fi], [AC_MSG_RESULT(no)])
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 10 # serial 10
@@ -1374,7 +1394,7 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", ""
dnl Found it, now check the version. dnl Found it, now check the version.
AC_MSG_CHECKING([version of bison]) AC_MSG_CHECKING([version of bison])
changequote(<<,>>)dnl changequote(<<,>>)dnl
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
@@ -1505,10 +1525,12 @@ strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 2 # serial 2
@@ -1670,10 +1692,12 @@ AC_DEFUN([AM_LANGINFO_CODESET],
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 2 # serial 2
+71 -66
View File
@@ -5,29 +5,30 @@
*/ */
#undef CRAY_STACKSEG_END #undef CRAY_STACKSEG_END
/* Define if using `alloca.c'. */ /* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA #undef C_ALLOCA
/* Define to 1 if translation of program messages to the user's native /* Define to 1 if translation of program messages to the user's native
language is requested. */ language is requested. */
#undef ENABLE_NLS #undef ENABLE_NLS
/* Define if you have `alloca', as a function or macro. */ /* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA #undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */ /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H #undef HAVE_ALLOCA_H
/* Define if you have the <argz.h> header file. */ /* Define to 1 if you have the <argz.h> header file. */
#undef HAVE_ARGZ_H #undef HAVE_ARGZ_H
/* Define if you have the <ctype.h> header file. */ /* Define to 1 if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H #undef HAVE_CTYPE_H
/* Define if backslash-a works in C strings. */ /* Define if backslash-a works in C strings. */
#undef HAVE_C_BACKSLASH_A #undef HAVE_C_BACKSLASH_A
/* Define if you have the `dcgettext' function. */ /* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT #undef HAVE_DCGETTEXT
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't. /* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
@@ -38,6 +39,10 @@
*/ */
#undef HAVE_DECL_STPCPY #undef HAVE_DECL_STPCPY
/* Define to 1 if you have the declaration of `strerror', and to 0 if you
don't. */
#undef HAVE_DECL_STRERROR
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
don't. */ don't. */
#undef HAVE_DECL_STRERROR_R #undef HAVE_DECL_STRERROR_R
@@ -56,46 +61,46 @@
/* Define if the realloc check has been performed. */ /* Define if the realloc check has been performed. */
#undef HAVE_DONE_WORKING_REALLOC_CHECK #undef HAVE_DONE_WORKING_REALLOC_CHECK
/* Define if you have the `doprnt' function. */ /* Define to 1 if you have the `doprnt' function. */
#undef HAVE_DOPRNT #undef HAVE_DOPRNT
/* Define if you have the `feof_unlocked' function. */ /* Define to 1 if you have the `feof_unlocked' function. */
#undef HAVE_FEOF_UNLOCKED #undef HAVE_FEOF_UNLOCKED
/* Define if you have the `fgets_unlocked' function. */ /* Define to 1 if you have the `fgets_unlocked' function. */
#undef HAVE_FGETS_UNLOCKED #undef HAVE_FGETS_UNLOCKED
/* Define if you have the `getcwd' function. */ /* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD #undef HAVE_GETCWD
/* Define if you have the `getegid' function. */ /* Define to 1 if you have the `getegid' function. */
#undef HAVE_GETEGID #undef HAVE_GETEGID
/* Define if you have the `geteuid' function. */ /* Define to 1 if you have the `geteuid' function. */
#undef HAVE_GETEUID #undef HAVE_GETEUID
/* Define if you have the `getgid' function. */ /* Define to 1 if you have the `getgid' function. */
#undef HAVE_GETGID #undef HAVE_GETGID
/* Define if you have the `getpagesize' function. */ /* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE #undef HAVE_GETPAGESIZE
/* Define if the GNU gettext() function is already present or preinstalled. */ /* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT #undef HAVE_GETTEXT
/* Define if you have the `getuid' function. */ /* Define to 1 if you have the `getuid' function. */
#undef HAVE_GETUID #undef HAVE_GETUID
/* Define if you have the iconv() function. */ /* Define if you have the iconv() function. */
#undef HAVE_ICONV #undef HAVE_ICONV
/* Define if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H #undef HAVE_INTTYPES_H
/* Define if you have the `isascii' function. */ /* Define to 1 if you have the `isascii' function. */
#undef HAVE_ISASCII #undef HAVE_ISASCII
/* Define if you have the `iswprint' function. */ /* Define to 1 if you have the `iswprint' function. */
#undef HAVE_ISWPRINT #undef HAVE_ISWPRINT
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */ /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
@@ -104,130 +109,127 @@
/* Define if your <locale.h> file defines LC_MESSAGES. */ /* Define if your <locale.h> file defines LC_MESSAGES. */
#undef HAVE_LC_MESSAGES #undef HAVE_LC_MESSAGES
/* Define if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H #undef HAVE_LIMITS_H
/* Define if you have the <locale.h> header file. */ /* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H #undef HAVE_LOCALE_H
/* Define if you have the <malloc.h> header file. */ /* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H #undef HAVE_MALLOC_H
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ /* Define to 1 if mbrtowc and mbstate_t are properly declared. */
#undef HAVE_MBRTOWC #undef HAVE_MBRTOWC
/* Define if you have the `mbsinit' function. */ /* Define to 1 if you have the `mbsinit' function. */
#undef HAVE_MBSINIT #undef HAVE_MBSINIT
/* Define if you have the `memchr' function. */ /* Define to 1 if you have the `memchr' function. */
#undef HAVE_MEMCHR #undef HAVE_MEMCHR
/* Define if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H #undef HAVE_MEMORY_H
/* Define if you have the `mempcpy' function. */ /* Define to 1 if you have the `mempcpy' function. */
#undef HAVE_MEMPCPY #undef HAVE_MEMPCPY
/* Define if you have the `mkstemp' function. */ /* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP #undef HAVE_MKSTEMP
/* Define if you have a working `mmap' system call. */ /* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP #undef HAVE_MMAP
/* Define if you have the `munmap' function. */ /* Define to 1 if you have the `munmap' function. */
#undef HAVE_MUNMAP #undef HAVE_MUNMAP
/* Define if you have the <nl_types.h> header file. */ /* Define to 1 if you have the <nl_types.h> header file. */
#undef HAVE_NL_TYPES_H #undef HAVE_NL_TYPES_H
/* Define if you have the `putenv' function. */ /* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV #undef HAVE_PUTENV
/* Define if you have the `setenv' function. */ /* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV #undef HAVE_SETENV
/* Define if you have the `setlocale' function. */ /* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE #undef HAVE_SETLOCALE
/* Define if you have the <stddef.h> header file. */ /* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H #undef HAVE_STDDEF_H
/* Define if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H #undef HAVE_STDINT_H
/* Define if you have the <stdlib.h> header file. */ /* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H #undef HAVE_STDLIB_H
/* Define if you have the `stpcpy' function. */ /* Define to 1 if you have the `stpcpy' function. */
#undef HAVE_STPCPY #undef HAVE_STPCPY
/* Define if you have the `strcasecmp' function. */ /* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP #undef HAVE_STRCASECMP
/* Define if you have the `strchr' function. */ /* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR #undef HAVE_STRCHR
/* Define if you have the `strdup' function. */ /* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP #undef HAVE_STRDUP
/* Define if you have the `strerror' function. */ /* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR #undef HAVE_STRERROR
/* Define if you have the `strerror_r' function. */ /* Define to 1 if you have the `strerror_r' function. */
#undef HAVE_STRERROR_R #undef HAVE_STRERROR_R
/* Define if you have the <strings.h> header file. */ /* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H #undef HAVE_STRINGS_H
/* Define if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H #undef HAVE_STRING_H
/* Define if you have the `strndup' function. */ /* Define to 1 if you have the `strndup' function. */
#undef HAVE_STRNDUP #undef HAVE_STRNDUP
/* Define if you have the `strnlen' function. */ /* Define to 1 if you have the `strnlen' function. */
#undef HAVE_STRNLEN #undef HAVE_STRNLEN
/* Define if you have the `strspn' function. */ /* Define to 1 if you have the `strspn' function. */
#undef HAVE_STRSPN #undef HAVE_STRSPN
/* Define if you have the `strtoul' function. */ /* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL #undef HAVE_STRTOUL
/* Define if you have the <sys/param.h> header file. */ /* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H #undef HAVE_SYS_PARAM_H
/* Define if you have the <sys/stat.h> header file. */ /* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H #undef HAVE_SYS_STAT_H
/* Define if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H #undef HAVE_SYS_TYPES_H
/* Define if you have the `tsearch' function. */ /* Define to 1 if you have the `tsearch' function. */
#undef HAVE_TSEARCH #undef HAVE_TSEARCH
/* Define if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
/* Define if you have the `vprintf' function. */ /* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF #undef HAVE_VPRINTF
/* Define if you have the <wchar.h> header file. */ /* Define to 1 if you have the <wchar.h> header file. */
#undef HAVE_WCHAR_H #undef HAVE_WCHAR_H
/* Define if you have the <wctype.h> header file. */ /* Define to 1 if you have the <wctype.h> header file. */
#undef HAVE_WCTYPE_H #undef HAVE_WCTYPE_H
/* Define to 1 if `strerror_r' returns a string. */ /* Define to 1 if you have the `__argz_count' function. */
#undef HAVE_WORKING_STRERROR_R
/* Define if you have the `__argz_count' function. */
#undef HAVE___ARGZ_COUNT #undef HAVE___ARGZ_COUNT
/* Define if you have the `__argz_next' function. */ /* Define to 1 if you have the `__argz_next' function. */
#undef HAVE___ARGZ_NEXT #undef HAVE___ARGZ_NEXT
/* Define if you have the `__argz_stringify' function. */ /* Define to 1 if you have the `__argz_stringify' function. */
#undef HAVE___ARGZ_STRINGIFY #undef HAVE___ARGZ_STRINGIFY
/* Define as const if the declaration of iconv() needs const. */ /* Define as const if the declaration of iconv() needs const. */
@@ -247,9 +249,12 @@
STACK_DIRECTION = 0 => direction of growth unknown */ STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION #undef STACK_DIRECTION
/* Define if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #undef STDC_HEADERS
/* Define to 1 if strerror_r returns char *. */
#undef STRERROR_R_CHAR_P
/* Version number of package */ /* Version number of package */
#undef VERSION #undef VERSION
@@ -259,14 +264,14 @@
/* Define to 1 for GNU C library extensions. */ /* Define to 1 for GNU C library extensions. */
#undef _GNU_SOURCE #undef _GNU_SOURCE
/* Define if on MINIX. */ /* Define to 1 if on MINIX. */
#undef _MINIX #undef _MINIX
/* Define if the system does not provide POSIX.1 features except with this /* Define to 2 if the system does not provide POSIX.1 features except with
defined. */ this defined. */
#undef _POSIX_1_SOURCE #undef _POSIX_1_SOURCE
/* Define if you need to in order for `stat' and other things to work. */ /* Define to 1 if you need to in order for `stat' and other things to work. */
#undef _POSIX_SOURCE #undef _POSIX_SOURCE
/* Define to empty if `const' does not conform to ANSI C. */ /* Define to empty if `const' does not conform to ANSI C. */
+4 -5
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -115,9 +116,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu config/Makefile $(AUTOMAKE) --gnu config/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
+2 -2
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
timestamp='2001-10-05' timestamp='2001-11-08'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
@@ -947,7 +947,7 @@ EOF
exit 0 ;; exit 0 ;;
M68*:*:R3V[567]*:*) M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 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='' OS_REL=''
test -r /etc/.relid \ test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+13 -9
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
timestamp='2001-10-05' timestamp='2001-11-16'
# This file is (in principle) common to ALL GNU software. # This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software # The presence of a machine in this file suggests that SOME GNU software
@@ -245,14 +245,13 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \ | pyramid \
| s390 | s390x \
| sh | sh[34] | sh[34]eb | shbe | shle \ | sh | sh[34] | sh[34]eb | shbe | shle \
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
| stormy16 | strongarm \ | strongarm \
| tahoe | thumb | tic80 | tron \ | tahoe | thumb | tic80 | tron \
| v850 \ | v850 \
| we32k \ | we32k \
| x86 | xscale \ | x86 | xscale | xstormy16 \
| z8k) | z8k)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
@@ -304,14 +303,13 @@ case $basic_machine in
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \ | pyramid-* \
| romp-* | rs6000-* \ | romp-* | rs6000-* \
| s390-* | s390x-* \
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
| sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | vax-* \ | v850-* | vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-*)
;; ;;
@@ -786,6 +784,12 @@ case $basic_machine in
rtpc | rtpc-*) rtpc | rtpc-*)
basic_machine=romp-ibm basic_machine=romp-ibm
;; ;;
s390 | s390-*)
basic_machine=s390-ibm
;;
s390x | s390x-*)
basic_machine=s390x-ibm
;;
sa29200) sa29200)
basic_machine=a29k-amd basic_machine=a29k-amd
os=-udi os=-udi
@@ -1057,7 +1061,7 @@ case $os in
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \ | -aos* | -atheos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
@@ -1070,7 +1074,7 @@ case $os in
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos*) | -os2* | -vos* | -palmos* | -uclinux*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
+1 -1
View File
@@ -1 +1 @@
1.29e 1.30d
Vendored
+843 -535
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -16,17 +16,18 @@
# 02111-1307 USA # 02111-1307 USA
# We need a recent Autoconf to run a recent Autotest. # We need a recent Autoconf to run a recent Autotest.
AC_PREREQ(2.52e) AC_PREREQ(2.52g)
AC_INIT([GNU Bison], [1.29f], [[email protected]]) AC_INIT([GNU Bison], [1.30e], [[email protected]])
AC_CONFIG_AUX_DIR(config) AC_CONFIG_AUX_DIR(config)
AM_INIT_AUTOMAKE([bison], [1.29f]) AM_INIT_AUTOMAKE([bison], [1.30e])
AM_CONFIG_HEADER(config.h:config.hin) AM_CONFIG_HEADER(config.h:config.hin)
# Initialize the test suite. # Initialize the test suite.
AC_CONFIG_TESTDIR(tests) AC_CONFIG_TESTDIR(tests)
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison]) AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
# Needed by tests/atlocal.in. # Needed by tests/atlocal.in.
AC_SUBST([GCC]) AC_SUBST([GCC])
@@ -88,17 +89,16 @@ jm_PREREQ_QUOTEARG
jm_PREREQ_ERROR jm_PREREQ_ERROR
AM_WITH_DMALLOC AM_WITH_DMALLOC
ALL_LINGUAS="de es et fr ja nl tr ru" ALL_LINGUAS="de es et fr ja nl ru sv tr"
AM_GNU_GETTEXT AM_GNU_GETTEXT(, need-ngettext)
# This is necessary so that .o files in LIBOBJS are also built via # This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules. # the ANSI2KNR-filtering rules.
LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'` LIB@&t@OBJS=`echo $LIB@&t@OBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
AC_SUBST(LIBOBJS) AC_SUBST(LIB@&t@OBJS)
AC_OUTPUT([Makefile AC_OUTPUT([Makefile
config/Makefile config/Makefile
intl/Makefile po/Makefile.in intl/Makefile po/Makefile.in
lib/Makefile src/Makefile doc/Makefile lib/Makefile src/Makefile doc/Makefile
m4/Makefile m4/Makefile])
tests/Makefile])
+4 -5
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -131,9 +132,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile $(AUTOMAKE) --gnu doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
$(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/version.texi: $(srcdir)/stamp-vti
@: @:
+106 -106
View File
@@ -31,115 +31,115 @@ instead of in the original English.
 
Indirect: Indirect:
bison.info-1: 1313 bison.info-1: 1313
bison.info-2: 50691 bison.info-2: 50632
bison.info-3: 100581 bison.info-3: 100395
bison.info-4: 150131 bison.info-4: 147417
bison.info-5: 197908 bison.info-5: 197287
 
Tag Table: Tag Table:
(Indirect) (Indirect)
Node: Top1313 Node: Top1313
Node: Introduction8969 Node: Introduction8968
Node: Conditions10244 Node: Conditions10243
Node: Copying11708 Node: Copying11707
Node: Concepts30911 Node: Concepts30910
Node: Language and Grammar31990 Node: Language and Grammar31989
Node: Grammar in Bison37006 Node: Grammar in Bison36947
Node: Semantic Values38930 Node: Semantic Values38871
Node: Semantic Actions41031 Node: Semantic Actions40972
Node: Locations Overview42220 Node: Locations Overview42161
Node: Bison Parser43667 Node: Bison Parser43608
Node: Stages45979 Node: Stages45920
Node: Grammar Layout47262 Node: Grammar Layout47203
Node: Examples48519 Node: Examples48460
Node: RPN Calc49717 Node: RPN Calc49658
Node: Rpcalc Decls50691 Node: Rpcalc Decls50632
Node: Rpcalc Rules52278 Node: Rpcalc Rules52219
Node: Rpcalc Input54078 Node: Rpcalc Input54019
Node: Rpcalc Line55539 Node: Rpcalc Line55480
Node: Rpcalc Expr56654 Node: Rpcalc Expr56595
Node: Rpcalc Lexer58599 Node: Rpcalc Lexer58540
Node: Rpcalc Main61171 Node: Rpcalc Main61112
Node: Rpcalc Error61569 Node: Rpcalc Error61510
Node: Rpcalc Gen62577 Node: Rpcalc Gen62518
Node: Rpcalc Compile63726 Node: Rpcalc Compile63667
Node: Infix Calc64601 Node: Infix Calc64542
Node: Simple Error Recovery67308 Node: Simple Error Recovery67249
Node: Location Tracking Calc69197 Node: Location Tracking Calc69138
Node: Ltcalc Decls69927 Node: Ltcalc Decls69820
Node: Ltcalc Rules70836 Node: Ltcalc Rules70713
Node: Ltcalc Lexer72897 Node: Ltcalc Lexer72723
Node: Multi-function Calc75235 Node: Multi-function Calc75049
Node: Mfcalc Decl76802 Node: Mfcalc Decl76616
Node: Mfcalc Rules78825 Node: Mfcalc Rules78639
Node: Mfcalc Symtab80205 Node: Mfcalc Symtab80019
Node: Exercises86578 Node: Exercises86392
Node: Grammar File87084 Node: Grammar File86898
Node: Grammar Outline87932 Node: Grammar Outline87746
Node: C Declarations88666 Node: C Declarations88480
Node: Bison Declarations89246 Node: Bison Declarations89060
Node: Grammar Rules89658 Node: Grammar Rules89472
Node: C Code90118 Node: C Code89932
Node: Symbols91048 Node: Symbols90862
Node: Rules96129 Node: Rules95943
Node: Recursion97768 Node: Recursion97582
Node: Semantics99487 Node: Semantics99301
Node: Value Type100581 Node: Value Type100395
Node: Multiple Types101253 Node: Multiple Types101067
Node: Actions102270 Node: Actions102084
Node: Action Types105055 Node: Action Types104869
Node: Mid-Rule Actions106358 Node: Mid-Rule Actions106172
Node: Locations111928 Node: Locations111742
Node: Location Type112576 Node: Location Type112390
Node: Actions and Locations113134 Node: Actions and Locations112948
Node: Location Default Action115290 Node: Location Default Action115104
Node: Declarations116753 Node: Declarations116567
Node: Token Decl118072 Node: Token Decl117886
Node: Precedence Decl120085 Node: Precedence Decl119899
Node: Union Decl121636 Node: Union Decl121450
Node: Type Decl122480 Node: Type Decl122294
Node: Expect Decl123386 Node: Expect Decl123200
Node: Start Decl124932 Node: Start Decl124768
Node: Pure Decl125310 Node: Pure Decl125146
Node: Decl Summary126987 Node: Decl Summary126823
Node: Multiple Parsers132370 Node: Multiple Parsers132951
Node: Interface133864 Node: Interface134445
Node: Parser Function134736 Node: Parser Function135317
Node: Lexical135571 Node: Lexical136152
Node: Calling Convention136977 Node: Calling Convention137558
Node: Token Values139748 Node: Token Values140329
Node: Token Positions140897 Node: Token Positions141478
Node: Pure Calling141782 Node: Pure Calling142363
Node: Error Reporting144714 Node: Error Reporting145295
Node: Action Features146836 Node: Action Features147417
Node: Algorithm150131 Node: Algorithm150712
Node: Look-Ahead152424 Node: Look-Ahead153005
Node: Shift/Reduce154556 Node: Shift/Reduce155137
Node: Precedence157468 Node: Precedence158049
Node: Why Precedence158119 Node: Why Precedence158700
Node: Using Precedence159984 Node: Using Precedence160565
Node: Precedence Examples160952 Node: Precedence Examples161533
Node: How Precedence161653 Node: How Precedence162234
Node: Contextual Precedence162802 Node: Contextual Precedence163383
Node: Parser States164593 Node: Parser States165174
Node: Reduce/Reduce165836 Node: Reduce/Reduce166417
Node: Mystery Conflicts169397 Node: Mystery Conflicts169978
Node: Stack Overflow172783 Node: Stack Overflow173364
Node: Error Recovery174156 Node: Error Recovery174737
Node: Context Dependency179292 Node: Context Dependency179873
Node: Semantic Tokens180140 Node: Semantic Tokens180721
Node: Lexical Tie-ins183157 Node: Lexical Tie-ins183738
Node: Tie-in Recovery184705 Node: Tie-in Recovery185286
Node: Debugging186877 Node: Debugging187458
Node: Invocation190178 Node: Invocation190759
Node: Bison Options191430 Node: Bison Options192011
Node: Environment Variables195398 Node: Environment Variables195561
Node: Option Cross Key196246 Node: Option Cross Key196409
Node: VMS Invocation197124 Node: VMS Invocation197287
Node: Table of Symbols197908 Node: Table of Symbols198071
Node: Glossary205547 Node: Glossary206039
Node: Copying This Manual211851 Node: Copying This Manual212343
Node: GNU Free Documentation License212060 Node: GNU Free Documentation License212552
Node: Index231925 Node: Index232417
 
End Tag Table End Tag Table
+6 -7
View File
@@ -34,7 +34,7 @@ File: bison.info, Node: Top, Next: Introduction, Up: (dir)
Bison Bison
***** *****
This manual documents version 1.29f of Bison, updated 20 September This manual documents version 1.30e of Bison, updated 12 November
2001. 2001.
* Menu: * Menu:
@@ -238,7 +238,7 @@ Bison in detail.
it Yacc-compatible. Wilfred Hansen of Carnegie Mellon University added it Yacc-compatible. Wilfred Hansen of Carnegie Mellon University added
multi-character string literals and other features. multi-character string literals and other features.
This edition corresponds to version 1.29f of Bison. This edition corresponds to version 1.30e of Bison.
 
File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top 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: Here is a simple C function subdivided into tokens:
int /* keyword `int' */ int /* keyword `int' */
square (x) /* identifier, open-paren, */ square (int x) /* identifier, open-paren, identifier,
/* identifier, close-paren */ identifier, close-paren */
int x; /* keyword `int', identifier, semicolon */
{ /* open-brace */ { /* open-brace */
return x * x; /* keyword `return', identifier, */ return x * x; /* keyword `return', identifier, asterisk,
/* asterisk, identifier, semicolon */ identifier, semicolon */
} /* close-brace */ } /* close-brace */
The syntactic groupings of C include the expression, the statement, The syntactic groupings of C include the expression, the statement,
+43 -47
View File
@@ -385,21 +385,21 @@ Compiling the Parser File
Here is how to compile and run the parser file: Here is how to compile and run the parser file:
# List files in current directory. # List files in current directory.
% ls $ ls
rpcalc.tab.c rpcalc.y rpcalc.tab.c rpcalc.y
# Compile the Bison parser. # Compile the Bison parser.
# `-lm' tells compiler to search math library for `pow'. # `-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. # List files again.
% ls $ ls
rpcalc rpcalc.tab.c rpcalc.y rpcalc rpcalc.tab.c rpcalc.y
The file `rpcalc' now contains the executable code. Here is an The file `rpcalc' now contains the executable code. Here is an
example session using `rpcalc'. example session using `rpcalc'.
% rpcalc $ rpcalc
4 9 + 4 9 +
13 13
3 7 + 3 4 5 *+- 3 7 + 3 4 5 *+-
@@ -411,7 +411,7 @@ example session using `rpcalc'.
3 4 ^ Exponentiation 3 4 ^ Exponentiation
81 81
^D End-of-file indicator ^D End-of-file indicator
% $
 
File: bison.info, Node: Infix Calc, Next: Simple Error Recovery, Prev: RPN Calc, Up: Examples 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': Here is a sample run of `calc.y':
% calc $ calc
4 + 4.5 - (34/(8*3+-3)) 4 + 4.5 - (34/(8*3+-3))
6.880952381 6.880952381
-56 + 2 -56 + 2
@@ -539,12 +539,10 @@ Location Tracking Calculator: `ltcalc'
====================================== ======================================
This example extends the infix notation calculator with location This example extends the infix notation calculator with location
tracking. This feature will be used to improve error reporting, and tracking. This feature will be used to improve the error messages. For
provide better error messages. 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
For the sake of clarity, we will switch for this example to an analyser.
integer calculator, since most of the work needed to use locations will
be done in the lexical analyser.
* Menu: * Menu:
@@ -558,8 +556,8 @@ File: bison.info, Node: Ltcalc Decls, Next: Ltcalc Rules, Up: Location Tracki
Declarations for `ltcalc' Declarations for `ltcalc'
------------------------- -------------------------
The C and Bison declarations for the location tracking calculator The C and Bison declarations for the location tracking calculator are
are the same as the declarations for the infix notation calculator. the same as the declarations for the infix notation calculator.
/* Location tracking calculator. */ /* Location tracking calculator. */
@@ -578,11 +576,11 @@ are the same as the declarations for the infix notation calculator.
%% /* Grammar follows */ %% /* Grammar follows */
In the code above, there are no declarations specific to locations. Note there are no declarations specific to locations. Defining a data
Defining a data type for storing locations is not needed: we will use type for storing locations is not needed: we will use the type provided
the type provided by default (*note Data Types of Locations: Location by default (*note Data Types of Locations: Location Type.), which is a
Type.), which is a four member structure with the following integer four member structure with the following integer fields: `first_line',
fields: `first_line', `first_column', `last_line' and `last_column'. `first_column', `last_line' and `last_column'.
 
File: bison.info, Node: Ltcalc Rules, Next: Ltcalc Lexer, Prev: Ltcalc Decls, Up: Location Tracking Calc 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' Grammar Rules for `ltcalc'
-------------------------- --------------------------
Whether you choose to handle locations or not has no effect on the Whether handling locations or not has no effect on the syntax of your
syntax of your language. Therefore, grammar rules for this example language. Therefore, grammar rules for this example will be very close
will be very close to those of the previous example: we will only to those of the previous example: we will only modify them to benefit
modify them to benefit from the new informations we will have. from the new information.
Here, we will use locations to report divisions by zero, and locate Here, we will use locations to report divisions by zero, and locate
the wrong expressions or subexpressions. the wrong expressions or subexpressions.
@@ -617,9 +615,9 @@ the wrong expressions or subexpressions.
else else
{ {
$$ = 1; $$ = 1;
printf("Division by zero, l%d,c%d-l%d,c%d", fprintf (stderr, "%d.%d-%d.%d: division by zero",
@3.first_line, @3.first_column, @3.first_line, @3.first_column,
@3.last_line, @3.last_column); @3.last_line, @3.last_column);
} }
} }
| '-' exp %preg NEG { $$ = -$2; } | '-' exp %preg NEG { $$ = -$2; }
@@ -630,14 +628,12 @@ the wrong expressions or subexpressions.
using the pseudo-variables `@N' for rule components, and the using the pseudo-variables `@N' for rule components, and the
pseudo-variable `@$' for groupings. pseudo-variable `@$' for groupings.
In this example, we never assign a value to `@$', because the output We don't need to assign a value to `@$': the output parser does it
parser can do this automatically. By default, before executing the C automatically. By default, before executing the C code of each action,
code of each action, `@$' is set to range from the beginning of `@1' to `@$' is set to range from the beginning of `@1' to the end of `@N', for
the end of `@N', for a rule with N components. a rule with N components. This behavior can be redefined (*note
Default Action for Locations: Location Default Action.), and for very
Of course, this behavior can be redefined (*note Default Action for specific rules, `@$' can be computed by hand.
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 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 Until now, we relied on Bison's defaults to enable location
tracking. The next step is to rewrite the lexical analyser, and make it 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 able to feed the parser with the token locations, as it already does for
for semantic values. 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: input text, to avoid the computed locations of being fuzzy or wrong:
int int
@@ -695,14 +691,14 @@ input text, to avoid the computed locations of being fuzzy or wrong:
return c; return c;
} }
Basically, the lexical analyzer does the same processing as before: Basically, the lexical analyzer performs the same processing as
it skips blanks and tabs, and reads numbers or single-character tokens. before: it skips blanks and tabs, and reads numbers or single-character
In addition to this, it updates the `yylloc' global variable (of type tokens. In addition, it updates `yylloc', the global variable (of type
`YYLTYPE'), where the location of tokens is stored. `YYLTYPE') containing the token's location.
Now, each time this function returns a token, the parser has it's Now, each time this function returns a token, the parser has its
number as well as it's semantic value, and it's position in the text. number as well as its semantic value, and its location in the text. The
The last needed change is to initialize `yylloc', for example in the last needed change is to initialize `yylloc', for example in the
controlling function: controlling function:
int int
@@ -715,7 +711,7 @@ controlling function:
Remember that computing locations is not a matter of syntax. Every Remember that computing locations is not a matter of syntax. Every
character must be associated to a location update, whether it is in 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 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. to create named variables, store values in them, and use them later.
Here is a sample session with the multi-function calculator: Here is a sample session with the multi-function calculator:
% mfcalc $ mfcalc
pi = 3.141592653589 pi = 3.141592653589
3.1415926536 3.1415926536
sin(pi) sin(pi)
@@ -754,7 +750,7 @@ Here is a sample session with the multi-function calculator:
0.8329091229 0.8329091229
exp(ln(beta1)) exp(ln(beta1))
2.3000000000 2.3000000000
% $
Note that multiple assignment and nested function calls are Note that multiple assignment and nested function calls are
permitted. permitted.
+71 -140
View File
@@ -623,19 +623,20 @@ Suppressing Conflict Warnings
Bison normally warns if there are any conflicts in the grammar Bison normally warns if there are any conflicts in the grammar
(*note Shift/Reduce Conflicts: Shift/Reduce.), but most real grammars (*note Shift/Reduce Conflicts: Shift/Reduce.), but most real grammars
have harmless shift/reduce conflicts which are resolved in a have harmless shift/reduce conflicts which are resolved in a predictable
predictable way and would be difficult to eliminate. It is desirable way and would be difficult to eliminate. It is desirable to suppress
to suppress the warning about these conflicts unless the number of the warning about these conflicts unless the number of conflicts
conflicts changes. You can do this with the `%expect' declaration. changes. You can do this with the `%expect' declaration.
The declaration looks like this: The declaration looks like this:
%expect N %expect N
Here N is a decimal integer. The declaration says there should be no Here N is a decimal integer. The declaration says there should be
warning if there are N shift/reduce conflicts and no reduce/reduce 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. An error, instead of the usual warning, is given if there
conflicts, or if there are any reduce/reduce conflicts. are either more or fewer conflicts, or if there are any reduce/reduce
conflicts.
In general, using `%expect' involves these steps: In general, using `%expect' involves these steps:
@@ -710,7 +711,7 @@ File: bison.info, Node: Decl Summary, Prev: Pure Decl, Up: Declarations
Bison Declaration Summary Bison Declaration Summary
------------------------- -------------------------
Here is a summary of all Bison declarations: Here is a summary of the declarations used to define a grammar:
`%union' `%union'
Declare the collection of data types that semantic values may have Declare the collection of data types that semantic values may have
@@ -745,38 +746,9 @@ Bison Declaration Summary
Declare the expected number of shift-reduce conflicts (*note Declare the expected number of shift-reduce conflicts (*note
Suppressing Conflict Warnings: Expect Decl.). Suppressing Conflict Warnings: Expect Decl.).
`%yacc'
`%fixed_output_files'
Pretend the option `--yacc' was given, i.e., imitate Yacc,
including its naming conventions. *Note Bison Options::, for more.
`%locations' In order to change the behavior of `bison', use the following
Generate the code processing the locations (*note Special Features directives:
for Use in Actions: Action Features.). This mode is enabled as
soon as the grammar uses the special `@N' tokens, but if your
grammar does not use it, using `%locations' allows for more
accurate parse error messages.
`%pure_parser'
Request a pure (reentrant) parser program (*note A Pure
(Reentrant) Parser: Pure Decl.).
`%no_parser'
Do not include any C code in the parser file; generate tables
only. The parser file contains just `#define' directives and
static variable declarations.
This option also tells Bison to write the C code for the grammar
actions into a file named `FILENAME.act', in the form of a
brace-surrounded body fit for a `switch' statement.
`%no_lines'
Don't generate any `#line' preprocessor commands in the parser
file. Ordinarily Bison writes these commands in the parser file
so that the C compiler and debuggers will associate errors and
object code with your source file (the grammar file). This
directive causes them to associate errors with the parser file,
treating it an independent source file in its own right.
`%debug' `%debug'
Output a definition of the macro `YYDEBUG' into the parser file, so Output a definition of the macro `YYDEBUG' into the parser file, so
@@ -796,20 +768,48 @@ Bison Declaration Summary
able to refer to token type codes and the variable `yylval'. able to refer to token type codes and the variable `yylval'.
*Note Semantic Values of Tokens: Token Values. *Note Semantic Values of Tokens: Token Values.
`%verbose' `%file-prefix="PREFIX"'
Write an extra output file containing verbose descriptions of the Specify a prefix to use for all Bison output file names. The
parser states and what is done for each type of look-ahead token in names are chosen as if the input file were named `PREFIX.y'.
that state.
This file also describes all the conflicts, both those resolved by `%locations'
operator precedence and the unresolved ones. Generate the code processing the locations (*note Special Features
for Use in Actions: Action Features.). This mode is enabled as
soon as the grammar uses the special `@N' tokens, but if your
grammar does not use it, using `%locations' allows for more
accurate parse error messages.
The file's name is made by removing `.tab.c' or `.c' from the `%name-prefix="PREFIX"'
parser output file name, and adding `.output' instead. Rename the external symbols used in the parser so that they start
with PREFIX instead of `yy'. The precise list of symbols renamed
is `yyparse', `yylex', `yyerror', `yynerrs', `yylval', `yychar'
and `yydebug'. For example, if you use `%name-prefix="c_"', the
names become `c_parse', `c_lex', and so on. *Note Multiple
Parsers in the Same Program: Multiple Parsers.
Therefore, if the input file is `foo.y', then the parser file is `%no-parser'
called `foo.tab.c' by default. As a consequence, the verbose Do not include any C code in the parser file; generate tables
output file is called `foo.output'. only. The parser file contains just `#define' directives and
static variable declarations.
This option also tells Bison to write the C code for the grammar
actions into a file named `FILENAME.act', in the form of a
brace-surrounded body fit for a `switch' statement.
`%no-lines'
Don't generate any `#line' preprocessor commands in the parser
file. Ordinarily Bison writes these commands in the parser file
so that the C compiler and debuggers will associate errors and
object code with your source file (the grammar file). This
directive causes them to associate errors with the parser file,
treating it an independent source file in its own right.
`%output="FILENAME"'
Specify the FILENAME for the parser file.
`%pure-parser'
Request a pure (reentrant) parser program (*note A Pure
(Reentrant) Parser: Pure Decl.).
`%token_table' `%token_table'
Generate an array of token names in the parser file. The name of Generate an array of token names in the parser file. The name of
@@ -845,6 +845,26 @@ Bison Declaration Summary
`YYNSTATES' `YYNSTATES'
The number of parser states (*note Parser States::). The number of parser states (*note Parser States::).
`%verbose'
Write an extra output file containing verbose descriptions of the
parser states and what is done for each type of look-ahead token in
that state.
This file also describes all the conflicts, both those resolved by
operator precedence and the unresolved ones.
The file's name is made by removing `.tab.c' or `.c' from the
parser output file name, and adding `.output' instead.
Therefore, if the input file is `foo.y', then the parser file is
called `foo.tab.c' by default. As a consequence, the verbose
output file is called `foo.output'.
`%yacc'
`%fixed-output-files'
Pretend the option `--yacc' was given, i.e., imitate Yacc,
including its naming conventions. *Note Bison Options::, for more.
 
File: bison.info, Node: Multiple Parsers, Prev: Declarations, Up: Grammar File File: bison.info, Node: Multiple Parsers, Prev: Declarations, Up: Grammar File
@@ -1226,92 +1246,3 @@ encountered so far. Normally this variable is global; but if you
request a pure parser (*note A Pure (Reentrant) Parser: Pure Decl.) request a pure parser (*note A Pure (Reentrant) Parser: Pure Decl.)
then it is a local variable which only the actions can access. then it is a local variable which only the actions can access.

File: bison.info, Node: Action Features, Prev: Error Reporting, Up: Interface
Special Features for Use in Actions
===================================
Here is a table of Bison constructs, variables and macros that are
useful in actions.
`$$'
Acts like a variable that contains the semantic value for the
grouping made by the current rule. *Note Actions::.
`$N'
Acts like a variable that contains the semantic value for the Nth
component of the current rule. *Note Actions::.
`$<TYPEALT>$'
Like `$$' but specifies alternative TYPEALT in the union specified
by the `%union' declaration. *Note Data Types of Values in
Actions: Action Types.
`$<TYPEALT>N'
Like `$N' but specifies alternative TYPEALT in the union specified
by the `%union' declaration. *Note Data Types of Values in
Actions: Action Types.
`YYABORT;'
Return immediately from `yyparse', indicating failure. *Note The
Parser Function `yyparse': Parser Function.
`YYACCEPT;'
Return immediately from `yyparse', indicating success. *Note The
Parser Function `yyparse': Parser Function.
`YYBACKUP (TOKEN, VALUE);'
Unshift a token. This macro is allowed only for rules that reduce
a single value, and only when there is no look-ahead token. It
installs a look-ahead token with token type TOKEN and semantic
value VALUE; then it discards the value that was going to be
reduced by this rule.
If the macro is used when it is not valid, such as when there is a
look-ahead token already, then it reports a syntax error with a
message `cannot back up' and performs ordinary error recovery.
In either case, the rest of the action is not executed.
`YYEMPTY'
Value stored in `yychar' when there is no look-ahead token.
`YYERROR;'
Cause an immediate syntax error. This statement initiates error
recovery just as if the parser itself had detected an error;
however, it does not call `yyerror', and does not print any
message. If you want to print an error message, call `yyerror'
explicitly before the `YYERROR;' statement. *Note Error
Recovery::.
`YYRECOVERING'
This macro stands for an expression that has the value 1 when the
parser is recovering from a syntax error, and 0 the rest of the
time. *Note Error Recovery::.
`yychar'
Variable containing the current look-ahead token. (In a pure
parser, this is actually a local variable within `yyparse'.) When
there is no look-ahead token, the value `YYEMPTY' is stored in the
variable. *Note Look-Ahead Tokens: Look-Ahead.
`yyclearin;'
Discard the current look-ahead token. This is useful primarily in
error rules. *Note Error Recovery::.
`yyerrok;'
Resume generating error messages immediately for subsequent syntax
errors. This is useful primarily in error rules. *Note Error
Recovery::.
`@$'
Acts like a structure variable containing information on the
textual position of the grouping made by the current rule. *Note
Tracking Locations: Locations.
`@N'
Acts like a structure variable containing information on the
textual position of the Nth component of the current rule. *Note
Tracking Locations: Locations.
+105 -48
View File
@@ -28,6 +28,95 @@ License", "Conditions for Using Bison" and this permission notice may be
included in translations approved by the Free Software Foundation included in translations approved by the Free Software Foundation
instead of in the original English. instead of in the original English.

File: bison.info, Node: Action Features, Prev: Error Reporting, Up: Interface
Special Features for Use in Actions
===================================
Here is a table of Bison constructs, variables and macros that are
useful in actions.
`$$'
Acts like a variable that contains the semantic value for the
grouping made by the current rule. *Note Actions::.
`$N'
Acts like a variable that contains the semantic value for the Nth
component of the current rule. *Note Actions::.
`$<TYPEALT>$'
Like `$$' but specifies alternative TYPEALT in the union specified
by the `%union' declaration. *Note Data Types of Values in
Actions: Action Types.
`$<TYPEALT>N'
Like `$N' but specifies alternative TYPEALT in the union specified
by the `%union' declaration. *Note Data Types of Values in
Actions: Action Types.
`YYABORT;'
Return immediately from `yyparse', indicating failure. *Note The
Parser Function `yyparse': Parser Function.
`YYACCEPT;'
Return immediately from `yyparse', indicating success. *Note The
Parser Function `yyparse': Parser Function.
`YYBACKUP (TOKEN, VALUE);'
Unshift a token. This macro is allowed only for rules that reduce
a single value, and only when there is no look-ahead token. It
installs a look-ahead token with token type TOKEN and semantic
value VALUE; then it discards the value that was going to be
reduced by this rule.
If the macro is used when it is not valid, such as when there is a
look-ahead token already, then it reports a syntax error with a
message `cannot back up' and performs ordinary error recovery.
In either case, the rest of the action is not executed.
`YYEMPTY'
Value stored in `yychar' when there is no look-ahead token.
`YYERROR;'
Cause an immediate syntax error. This statement initiates error
recovery just as if the parser itself had detected an error;
however, it does not call `yyerror', and does not print any
message. If you want to print an error message, call `yyerror'
explicitly before the `YYERROR;' statement. *Note Error
Recovery::.
`YYRECOVERING'
This macro stands for an expression that has the value 1 when the
parser is recovering from a syntax error, and 0 the rest of the
time. *Note Error Recovery::.
`yychar'
Variable containing the current look-ahead token. (In a pure
parser, this is actually a local variable within `yyparse'.) When
there is no look-ahead token, the value `YYEMPTY' is stored in the
variable. *Note Look-Ahead Tokens: Look-Ahead.
`yyclearin;'
Discard the current look-ahead token. This is useful primarily in
error rules. *Note Error Recovery::.
`yyerrok;'
Resume generating error messages immediately for subsequent syntax
errors. This is useful primarily in error rules. *Note Error
Recovery::.
`@$'
Acts like a structure variable containing information on the
textual position of the grouping made by the current rule. *Note
Tracking Locations: Locations.
`@N'
Acts like a structure variable containing information on the
textual position of the Nth component of the current rule. *Note
Tracking Locations: Locations.
 
File: bison.info, Node: Algorithm, Next: Error Recovery, Prev: Interface, Up: Top File: bison.info, Node: Algorithm, Next: Error Recovery, Prev: Interface, Up: Top
@@ -1118,19 +1207,12 @@ Tuning the parser:
Parser: Debugging. Parser: Debugging.
`--locations' `--locations'
Pretend that `%locactions' was specified. *Note Decl Summary::. Pretend that `%locations' was specified. *Note Decl Summary::.
`-p PREFIX' `-p PREFIX'
`--name-prefix=PREFIX' `--name-prefix=PREFIX'
Rename the external symbols used in the parser so that they start Pretend that `%name-prefix="PREFIX"' was specified. *Note Decl
with PREFIX instead of `yy'. The precise list of symbols renamed Summary::.
is `yyparse', `yylex', `yyerror', `yynerrs', `yylval', `yychar'
and `yydebug'.
For example, if you use `-p c', the names become `cparse', `clex',
and so on.
*Note Multiple Parsers in the Same Program: Multiple Parsers.
`-l' `-l'
`--no-lines' `--no-lines'
@@ -1143,41 +1225,40 @@ Tuning the parser:
`-n' `-n'
`--no-parser' `--no-parser'
Pretend that `%no_parser' was specified. *Note Decl Summary::. Pretend that `%no-parser' was specified. *Note Decl Summary::.
`-k' `-k'
`--token-table' `--token-table'
Pretend that `%token_table' was specified. *Note Decl Summary::. Pretend that `%token-table' was specified. *Note Decl Summary::.
Adjust the output: Adjust the output:
`-d' `-d'
Pretend that `%verbose' was specified, i.e., write an extra output `--defines'
Pretend that `%defines' was specified, i.e., write an extra output
file containing macro definitions for the token type names defined file containing macro definitions for the token type names defined
in the grammar and the semantic value type `YYSTYPE', as well as a in the grammar and the semantic value type `YYSTYPE', as well as a
few `extern' variable declarations. *Note Decl Summary::. few `extern' variable declarations. *Note Decl Summary::.
`--defines=DEFINES-FILE' `--defines=DEFINES-FILE'
The behaviour of -DEFINES is the same than `-d'. The only Same as above, but save in the file DEFINES-FILE.
difference is that it has an optionnal argument which is the name
of the output filename.
`-b FILE-PREFIX' `-b FILE-PREFIX'
`--file-prefix=PREFIX' `--file-prefix=PREFIX'
Specify a prefix to use for all Bison output file names. The Pretend that `%verbose' was specified, i.e, specify prefix to use
names are chosen as if the input file were named `PREFIX.c'. for all Bison output file names. *Note Decl Summary::.
`-v' `-v'
`--verbose' `--verbose'
Pretend that `%verbose' was specified, i.e, write an extra output Pretend that `%verbose' was specified, i.e, write an extra output
file containing verbose descriptions of the grammar and parser. file containing verbose descriptions of the grammar and parser.
*Note Decl Summary::, for more. *Note Decl Summary::.
`-o OUTFILE' `-o FILENAME'
`--output-file=OUTFILE' `--output=FILENAME'
Specify the name OUTFILE for the parser file. Specify the FILENAME for the parser file.
The other output files' names are constructed from OUTFILE as The other output files' names are constructed from FILENAME as
described under the `-v' and `-d' options. described under the `-v' and `-d' options.
`-g' `-g'
@@ -1230,32 +1311,8 @@ find the corresponding short option.
--name-prefix=PREFIX -p NAME-PREFIX --name-prefix=PREFIX -p NAME-PREFIX
--no-lines -l --no-lines -l
--no-parser -n --no-parser -n
--output-file=OUTFILE -o OUTFILE --output=OUTFILE -o OUTFILE
--token-table -k --token-table -k
--verbose -v --verbose -v
--version -V --version -V

File: bison.info, Node: VMS Invocation, Prev: Option Cross Key, Up: Invocation
Invoking Bison under VMS
========================
The command line syntax for Bison on VMS is a variant of the usual
Bison command syntax--adapted to fit VMS conventions.
To find the VMS equivalent for any Bison option, start with the long
option, and substitute a `/' for the leading `--', and substitute a `_'
for each `-' in the name of the long option. For example, the
following invocation under VMS:
bison /debug/name_prefix=bar foo.y
is equivalent to the following command under POSIX.
bison --debug --name-prefix=bar foo.y
The VMS file system does not permit filenames such as `foo.tab.c'.
In the above example, the output file would instead be named
`foo_tab.c'.
+39 -3
View File
@@ -28,6 +28,30 @@ License", "Conditions for Using Bison" and this permission notice may be
included in translations approved by the Free Software Foundation included in translations approved by the Free Software Foundation
instead of in the original English. instead of in the original English.

File: bison.info, Node: VMS Invocation, Prev: Option Cross Key, Up: Invocation
Invoking Bison under VMS
========================
The command line syntax for Bison on VMS is a variant of the usual
Bison command syntax--adapted to fit VMS conventions.
To find the VMS equivalent for any Bison option, start with the long
option, and substitute a `/' for the leading `--', and substitute a `_'
for each `-' in the name of the long option. For example, the
following invocation under VMS:
bison /debug/name_prefix=bar foo.y
is equivalent to the following command under POSIX.
bison --debug --name-prefix=bar foo.y
The VMS file system does not permit filenames such as `foo.tab.c'.
In the above example, the output file would instead be named
`foo_tab.c'.
 
File: bison.info, Node: Table of Symbols, Next: Glossary, Prev: Invocation, Up: Top File: bison.info, Node: Table of Symbols, Next: Glossary, Prev: Invocation, Up: Top
@@ -172,11 +196,19 @@ Bison Symbols
Bison declaration to create a header file meant for the scanner. Bison declaration to create a header file meant for the scanner.
*Note Decl Summary::. *Note Decl Summary::.
`%file-prefix="PREFIX"'
Bison declaration to set tge prefix of the output files. *Note
Decl Summary::.
`%left' `%left'
Bison declaration to assign left associativity to token(s). *Note Bison declaration to assign left associativity to token(s). *Note
Operator Precedence: Precedence Decl. Operator Precedence: Precedence Decl.
`%no_lines' `%name-prefix="PREFIX"'
Bison declaration to rename the external symbols. *Note Decl
Summary::.
`%no-lines'
Bison declaration to avoid generating `#line' directives in the Bison declaration to avoid generating `#line' directives in the
parser file. *Note Decl Summary::. parser file. *Note Decl Summary::.
@@ -184,11 +216,15 @@ Bison Symbols
Bison declaration to assign non-associativity to token(s). *Note Bison declaration to assign non-associativity to token(s). *Note
Operator Precedence: Precedence Decl. Operator Precedence: Precedence Decl.
`%output="FILENAME"'
Bison declaration to set the name of the parser file. *Note Decl
Summary::.
`%prec' `%prec'
Bison declaration to assign a precedence to a specific rule. Bison declaration to assign a precedence to a specific rule.
*Note Context-Dependent Precedence: Contextual Precedence. *Note Context-Dependent Precedence: Contextual Precedence.
`%pure_parser' `%pure-parser'
Bison declaration to request a pure (reentrant) parser. *Note A Bison declaration to request a pure (reentrant) parser. *Note A
Pure (Reentrant) Parser: Pure Decl. Pure (Reentrant) Parser: Pure Decl.
@@ -204,7 +240,7 @@ Bison Symbols
Bison declaration to declare token(s) without specifying Bison declaration to declare token(s) without specifying
precedence. *Note Token Type Names: Token Decl. precedence. *Note Token Type Names: Token Decl.
`%token_table' `%token-table'
Bison declaration to include a token name table in the parser file. Bison declaration to include a token name table in the parser file.
*Note Decl Summary::. *Note Decl Summary::.
+226 -182
View File
@@ -447,16 +447,26 @@ lexicography, not grammar.)
Here is a simple C function subdivided into tokens: Here is a simple C function subdivided into tokens:
@ifinfo
@example @example
int /* @r{keyword `int'} */ int /* @r{keyword `int'} */
square (x) /* @r{identifier, open-paren,} */ square (int x) /* @r{identifier, open-paren, identifier,}
/* @r{identifier, close-paren} */ @r{identifier, close-paren} */
int x; /* @r{keyword `int', identifier, semicolon} */
@{ /* @r{open-brace} */ @{ /* @r{open-brace} */
return x * x; /* @r{keyword `return', identifier,} */ return x * x; /* @r{keyword `return', identifier, asterisk,
/* @r{asterisk, identifier, semicolon} */ identifier, semicolon} */
@} /* @r{close-brace} */ @} /* @r{close-brace} */
@end example @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 The syntactic groupings of C include the expression, the statement, the
declaration, and the function definition. These are represented in the declaration, and the function definition. These are represented in the
@@ -855,11 +865,12 @@ The C declarations section (@pxref{C Declarations, ,The C Declarations Section})
preprocessor directives. preprocessor directives.
The @code{#define} directive defines the macro @code{YYSTYPE}, thus The @code{#define} directive defines the macro @code{YYSTYPE}, thus
specifying the C data type for semantic values of both tokens and groupings specifying the C data type for semantic values of both tokens and
(@pxref{Value Type, ,Data Types of Semantic Values}). The Bison parser will use whatever type groupings (@pxref{Value Type, ,Data Types of Semantic Values}). The
@code{YYSTYPE} is defined as; if you don't define it, @code{int} is the Bison parser will use whatever type @code{YYSTYPE} is defined as; if you
default. Because we specify @code{double}, each token and each expression don't define it, @code{int} is the default. Because we specify
has an associated value, which is a floating point number. @code{double}, each token and each expression has an associated value,
which is a floating point number.
The @code{#include} directive is used to declare the exponentiation The @code{#include} directive is used to declare the exponentiation
function @code{pow}. function @code{pow}.
@@ -1066,10 +1077,11 @@ token type is an identifier, that identifier is defined by Bison as a C
macro whose definition is the appropriate number. In this example, macro whose definition is the appropriate number. In this example,
therefore, @code{NUM} becomes a macro for @code{yylex} to use. therefore, @code{NUM} becomes a macro for @code{yylex} to use.
The semantic value of the token (if it has one) is stored into the global The semantic value of the token (if it has one) is stored into the
variable @code{yylval}, which is where the Bison parser will look for it. global variable @code{yylval}, which is where the Bison parser will look
(The C data type of @code{yylval} is @code{YYSTYPE}, which was defined for it. (The C data type of @code{yylval} is @code{YYSTYPE}, which was
at the beginning of the grammar; @pxref{Rpcalc Decls, ,Declarations for @code{rpcalc}}.) defined at the beginning of the grammar; @pxref{Rpcalc Decls,
,Declarations for @code{rpcalc}}.)
A token type code of zero is returned if the end-of-file is encountered. A token type code of zero is returned if the end-of-file is encountered.
(Bison recognizes any nonpositive value as indicating the end of the (Bison recognizes any nonpositive value as indicating the end of the
@@ -1202,19 +1214,19 @@ Here is how to compile and run the parser file:
@example @example
@group @group
# @r{List files in current directory.} # @r{List files in current directory.}
% ls $ @kbd{ls}
rpcalc.tab.c rpcalc.y rpcalc.tab.c rpcalc.y
@end group @end group
@group @group
# @r{Compile the Bison parser.} # @r{Compile the Bison parser.}
# @r{@samp{-lm} tells compiler to search math library for @code{pow}.} # @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 @end group
@group @group
# @r{List files again.} # @r{List files again.}
% ls $ @kbd{ls}
rpcalc rpcalc.tab.c rpcalc.y rpcalc rpcalc.tab.c rpcalc.y
@end group @end group
@end example @end example
@@ -1223,19 +1235,19 @@ The file @file{rpcalc} now contains the executable code. Here is an
example session using @code{rpcalc}. example session using @code{rpcalc}.
@example @example
% rpcalc $ @kbd{rpcalc}
4 9 + @kbd{4 9 +}
13 13
3 7 + 3 4 5 *+- @kbd{3 7 + 3 4 5 *+-}
-13 -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 13
5 6 / 4 n + @kbd{5 6 / 4 n +}
-3.166666667 -3.166666667
3 4 ^ @r{Exponentiation} @kbd{3 4 ^} @r{Exponentiation}
81 81
^D @r{End-of-file indicator} @kbd{^D} @r{End-of-file indicator}
% $
@end example @end example
@node Infix Calc @node Infix Calc
@@ -1315,12 +1327,12 @@ Here is a sample run of @file{calc.y}:
@need 500 @need 500
@example @example
% calc $ @kbd{calc}
4 + 4.5 - (34/(8*3+-3)) @kbd{4 + 4.5 - (34/(8*3+-3))}
6.880952381 6.880952381
-56 + 2 @kbd{-56 + 2}
-54 -54
3 ^ 2 @kbd{3 ^ 2}
9 9
@end example @end example
@@ -1372,13 +1384,11 @@ Bison programs.
@cindex @code{ltcalc} @cindex @code{ltcalc}
@cindex calculator, location tracking @cindex calculator, location tracking
This example extends the infix notation calculator with location tracking. This example extends the infix notation calculator with location
This feature will be used to improve error reporting, and provide better tracking. This feature will be used to improve the error messages. For
error messages. 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
For the sake of clarity, we will switch for this example to an integer analyser.
calculator, since most of the work needed to use locations will be done
in the lexical analyser.
@menu @menu
* Decls: Ltcalc Decls. Bison and C declarations for ltcalc. * Decls: Ltcalc Decls. Bison and C declarations for ltcalc.
@@ -1389,8 +1399,8 @@ in the lexical analyser.
@node Ltcalc Decls @node Ltcalc Decls
@subsection Declarations for @code{ltcalc} @subsection Declarations for @code{ltcalc}
The C and Bison declarations for the location tracking calculator are the same The C and Bison declarations for the location tracking calculator are
as the declarations for the infix notation calculator. the same as the declarations for the infix notation calculator.
@example @example
/* Location tracking calculator. */ /* Location tracking calculator. */
@@ -1411,22 +1421,24 @@ as the declarations for the infix notation calculator.
%% /* Grammar follows */ %% /* Grammar follows */
@end example @end example
In the code above, there are no declarations specific to locations. Defining @noindent
a data type for storing locations is not needed: we will use the type provided Note there are no declarations specific to locations. Defining a data
by default (@pxref{Location Type, ,Data Types of Locations}), which is a four type for storing locations is not needed: we will use the type provided
member structure with the following integer fields: @code{first_line}, by default (@pxref{Location Type, ,Data Types of Locations}), which is a
@code{first_column}, @code{last_line} and @code{last_column}. four member structure with the following integer fields:
@code{first_line}, @code{first_column}, @code{last_line} and
@code{last_column}.
@node Ltcalc Rules @node Ltcalc Rules
@subsection Grammar Rules for @code{ltcalc} @subsection Grammar Rules for @code{ltcalc}
Whether you choose to handle locations or not has no effect on the syntax of Whether handling locations or not has no effect on the syntax of your
your language. Therefore, grammar rules for this example will be very close to language. Therefore, grammar rules for this example will be very close
those of the previous example: we will only modify them to benefit from the new to those of the previous example: we will only modify them to benefit
informations we will have. from the new information.
Here, we will use locations to report divisions by zero, and locate the wrong Here, we will use locations to report divisions by zero, and locate the
expressions or subexpressions. wrong expressions or subexpressions.
@example @example
@group @group
@@ -1447,17 +1459,17 @@ exp : NUM @{ $$ = $1; @}
| exp '-' exp @{ $$ = $1 - $3; @} | exp '-' exp @{ $$ = $1 - $3; @}
| exp '*' exp @{ $$ = $1 * $3; @} | exp '*' exp @{ $$ = $1 * $3; @}
@end group @end group
| exp '/' exp
@group @group
| exp '/' exp
@{ @{
if ($3) if ($3)
$$ = $1 / $3; $$ = $1 / $3;
else else
@{ @{
$$ = 1; $$ = 1;
printf("Division by zero, l%d,c%d-l%d,c%d", fprintf (stderr, "%d.%d-%d.%d: division by zero",
@@3.first_line, @@3.first_column, @@3.first_line, @@3.first_column,
@@3.last_line, @@3.last_column); @@3.last_line, @@3.last_column);
@} @}
@} @}
@end group @end group
@@ -1472,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 using the pseudo-variables @code{@@@var{n}} for rule components, and the
pseudo-variable @code{@@$} for groupings. pseudo-variable @code{@@$} for groupings.
In this example, we never assign a value to @code{@@$}, because the We don't need to assign a value to @code{@@$}: the output parser does it
output parser can do this automatically. By default, before executing automatically. By default, before executing the C code of each action,
the C code of each action, @code{@@$} is set to range from the beginning @code{@@$} is set to range from the beginning of @code{@@1} to the end
of @code{@@1} to the end of @code{@@@var{n}}, for a rule with @var{n} of @code{@@@var{n}}, for a rule with @var{n} components. This behavior
components. can be redefined (@pxref{Location Default Action, , Default Action for
Locations}), and for very specific rules, @code{@@$} can be computed by
Of course, this behavior can be redefined (@pxref{Location Default hand.
Action, , Default Action for Locations}), and for very specific rules,
@code{@@$} can be computed by hand.
@node Ltcalc Lexer @node Ltcalc Lexer
@subsection The @code{ltcalc} Lexical Analyzer. @subsection The @code{ltcalc} Lexical Analyzer.
Until now, we relied on Bison's defaults to enable location tracking. The next Until now, we relied on Bison's defaults to enable location
step is to rewrite the lexical analyser, and make it able to feed the parser tracking. The next step is to rewrite the lexical analyser, and make it
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 input text, To this end, we must take into account every single character of the
to avoid the computed locations of being fuzzy or wrong: input text, to avoid the computed locations of being fuzzy or wrong:
@example @example
@group @group
@@ -1540,17 +1551,18 @@ yylex (void)
@} @}
@end example @end example
Basically, the lexical analyzer does the same processing as before: it skips Basically, the lexical analyzer performs the same processing as before:
blanks and tabs, and reads numbers or single-character tokens. In addition it skips blanks and tabs, and reads numbers or single-character tokens.
to this, it updates the @code{yylloc} global variable (of type @code{YYLTYPE}), In addition, it updates @code{yylloc}, the global variable (of type
where the location of tokens is stored. @code{YYLTYPE}) containing the token's location.
Now, each time this function returns a token, the parser has it's number as Now, each time this function returns a token, the parser has its number
well as it's semantic value, and it's position in the text. The last needed as well as its semantic value, and its location in the text. The last
change is to initialize @code{yylloc}, for example in the controlling needed change is to initialize @code{yylloc}, for example in the
function: controlling function:
@example @example
@group
int int
main (void) main (void)
@{ @{
@@ -1558,11 +1570,12 @@ main (void)
yylloc.first_column = yylloc.last_column = 0; yylloc.first_column = yylloc.last_column = 0;
return yyparse (); return yyparse ();
@} @}
@end group
@end example @end example
Remember that computing locations is not a matter of syntax. Every character Remember that computing locations is not a matter of syntax. Every
must be associated to a location update, whether it is in valid input, in character must be associated to a location update, whether it is in
comments, in literal strings, and so on... valid input, in comments, in literal strings, and so on.
@node Multi-function Calc @node Multi-function Calc
@section Multi-Function Calculator: @code{mfcalc} @section Multi-Function Calculator: @code{mfcalc}
@@ -1592,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: Here is a sample session with the multi-function calculator:
@example @example
% mfcalc $ @kbd{mfcalc}
pi = 3.141592653589 @kbd{pi = 3.141592653589}
3.1415926536 3.1415926536
sin(pi) @kbd{sin(pi)}
0.0000000000 0.0000000000
alpha = beta1 = 2.3 @kbd{alpha = beta1 = 2.3}
2.3000000000 2.3000000000
alpha @kbd{alpha}
2.3000000000 2.3000000000
ln(alpha) @kbd{ln(alpha)}
0.8329091229 0.8329091229
exp(ln(beta1)) @kbd{exp(ln(beta1))}
2.3000000000 2.3000000000
% $
@end example @end example
Note that multiple assignment and nested function calls are permitted. Note that multiple assignment and nested function calls are permitted.
@@ -2374,7 +2387,8 @@ the numbers associated with @var{x} and @var{y}.
In a simple program it may be sufficient to use the same data type for In a simple program it may be sufficient to use the same data type for
the semantic values of all language constructs. This was true in the the semantic values of all language constructs. This was true in the
RPN and infix calculator examples (@pxref{RPN Calc, ,Reverse Polish Notation Calculator}). RPN and infix calculator examples (@pxref{RPN Calc, ,Reverse Polish
Notation Calculator}).
Bison's default is to use type @code{int} for all semantic values. To Bison's default is to use type @code{int} for all semantic values. To
specify some other type, define @code{YYSTYPE} as a macro, like this: specify some other type, define @code{YYSTYPE} as a macro, like this:
@@ -3067,11 +3081,11 @@ terminal symbol. All kinds of token declarations allow
@findex %expect @findex %expect
Bison normally warns if there are any conflicts in the grammar 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 (@pxref{Shift/Reduce, ,Shift/Reduce Conflicts}), but most real grammars
conflicts which are resolved in a predictable way and would be difficult to have harmless shift/reduce conflicts which are resolved in a predictable
eliminate. It is desirable to suppress the warning about these conflicts way and would be difficult to eliminate. It is desirable to suppress
unless the number of conflicts changes. You can do this with the the warning about these conflicts unless the number of conflicts
@code{%expect} declaration. changes. You can do this with the @code{%expect} declaration.
The declaration looks like this: The declaration looks like this:
@@ -3079,10 +3093,11 @@ The declaration looks like this:
%expect @var{n} %expect @var{n}
@end example @end example
Here @var{n} is a decimal integer. The declaration says there should be no Here @var{n} is a decimal integer. The declaration says there should be
warning if there are @var{n} shift/reduce conflicts and no reduce/reduce no warning if there are @var{n} shift/reduce conflicts and no
conflicts. The usual warning is given if there are either more or fewer reduce/reduce conflicts. An error, instead of the usual warning, is
conflicts, or if there are any reduce/reduce conflicts. 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: In general, using @code{%expect} involves these steps:
@@ -3167,7 +3182,7 @@ valid grammar.
@cindex declaration summary @cindex declaration summary
@cindex summary, Bison declaration @cindex summary, Bison declaration
Here is a summary of all Bison declarations: Here is a summary of the declarations used to define a grammar:
@table @code @table @code
@item %union @item %union
@@ -3202,40 +3217,14 @@ Start-Symbol}).
@item %expect @item %expect
Declare the expected number of shift-reduce conflicts Declare the expected number of shift-reduce conflicts
(@pxref{Expect Decl, ,Suppressing Conflict Warnings}). (@pxref{Expect Decl, ,Suppressing Conflict Warnings}).
@end table
@item %yacc @sp 1
@itemx %fixed_output_files @noindent
Pretend the option @option{--yacc} was given, i.e., imitate Yacc, In order to change the behavior of @command{bison}, use the following
including its naming conventions. @xref{Bison Options}, for more. directives:
@item %locations
Generate the code processing the locations (@pxref{Action Features,
,Special Features for Use in Actions}). This mode is enabled as soon as
the grammar uses the special @samp{@@@var{n}} tokens, but if your
grammar does not use it, using @samp{%locations} allows for more
accurate parse error messages.
@item %pure_parser
Request a pure (reentrant) parser program (@pxref{Pure Decl, ,A Pure
(Reentrant) Parser}).
@item %no_parser
Do not include any C code in the parser file; generate tables only. The
parser file contains just @code{#define} directives and static variable
declarations.
This option also tells Bison to write the C code for the grammar actions
into a file named @file{@var{filename}.act}, in the form of a
brace-surrounded body fit for a @code{switch} statement.
@item %no_lines
Don't generate any @code{#line} preprocessor commands in the parser
file. Ordinarily Bison writes these commands in the parser file so that
the C compiler and debuggers will associate errors and object code with
your source file (the grammar file). This directive causes them to
associate errors with the parser file, treating it an independent source
file in its own right.
@table @code
@item %debug @item %debug
Output a definition of the macro @code{YYDEBUG} into the parser file, so Output a definition of the macro @code{YYDEBUG} into the parser file, so
that the debugging facilities are compiled. @xref{Debugging, ,Debugging that the debugging facilities are compiled. @xref{Debugging, ,Debugging
@@ -3254,35 +3243,64 @@ This output file is essential if you wish to put the definition of
be able to refer to token type codes and the variable be able to refer to token type codes and the variable
@code{yylval}. @xref{Token Values, ,Semantic Values of Tokens}.@refill @code{yylval}. @xref{Token Values, ,Semantic Values of Tokens}.@refill
@item %file-prefix="@var{prefix}"
Specify a prefix to use for all Bison output file names. The names are
chosen as if the input file were named @file{@var{prefix}.y}.
@c @item %header_extension
@c Specify the extension of the parser header file generated when
@c @code{%define} or @samp{-d} are used.
@c
@c For example, a grammar file named @file{foo.ypp} and containing a
@c @code{%header_extension .hh} directive will produce a header file
@c named @file{foo.tab.hh}
@item %locations
Generate the code processing the locations (@pxref{Action Features,
,Special Features for Use in Actions}). This mode is enabled as soon as
the grammar uses the special @samp{@@@var{n}} tokens, but if your
grammar does not use it, using @samp{%locations} allows for more
accurate parse error messages.
@item %name-prefix="@var{prefix}"
Rename the external symbols used in the parser so that they start with
@var{prefix} instead of @samp{yy}. The precise list of symbols renamed
is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
@code{yylval}, @code{yychar} and @code{yydebug}. For example, if you
use @samp{%name-prefix="c_"}, the names become @code{c_parse},
@code{c_lex}, and so on. @xref{Multiple Parsers, ,Multiple Parsers in
the Same Program}.
@item %no-parser
Do not include any C code in the parser file; generate tables only. The
parser file contains just @code{#define} directives and static variable
declarations.
This option also tells Bison to write the C code for the grammar actions
into a file named @file{@var{filename}.act}, in the form of a
brace-surrounded body fit for a @code{switch} statement.
@item %no-lines
Don't generate any @code{#line} preprocessor commands in the parser
file. Ordinarily Bison writes these commands in the parser file so that
the C compiler and debuggers will associate errors and object code with
your source file (the grammar file). This directive causes them to
associate errors with the parser file, treating it an independent source
file in its own right.
@item %output="@var{filename}"
Specify the @var{filename} for the parser file.
@item %pure-parser
Request a pure (reentrant) parser program (@pxref{Pure Decl, ,A Pure
(Reentrant) Parser}).
@c @item %source_extension @c @item %source_extension
@c Specify the extension of the parser output file. @c Specify the extension of the parser output file.
@c @c
@c For example, a grammar file named @file{foo.yy} and containing a @c For example, a grammar file named @file{foo.yy} and containing a
@c @code{%source_extension .cpp} directive will produce a parser file @c @code{%source_extension .cpp} directive will produce a parser file
@c named @file{foo.tab.cpp} @c named @file{foo.tab.cpp}
@c
@c @item %header_extension
@c Specify the extension of the parser header file generated when
@c @code{%define} or @samp{-d} are used.
@c
@c For example, a garmmar file named @file{foo.ypp} and containing a
@c @code{%header_extension .hh} directive will produce a header file
@c named @file{foo.tab.hh}
@item %verbose
Write an extra output file containing verbose descriptions of the
parser states and what is done for each type of look-ahead token in
that state.
This file also describes all the conflicts, both those resolved by
operator precedence and the unresolved ones.
The file's name is made by removing @samp{.tab.c} or @samp{.c} from
the parser output file name, and adding @samp{.output} instead.@refill
Therefore, if the input file is @file{foo.y}, then the parser file is
called @file{foo.tab.c} by default. As a consequence, the verbose
output file is called @file{foo.output}.@refill
@item %token_table @item %token_table
Generate an array of token names in the parser file. The name of the Generate an array of token names in the parser file. The name of the
@@ -3316,8 +3334,31 @@ The number of grammar rules,
@item YYNSTATES @item YYNSTATES
The number of parser states (@pxref{Parser States}). The number of parser states (@pxref{Parser States}).
@end table @end table
@item %verbose
Write an extra output file containing verbose descriptions of the
parser states and what is done for each type of look-ahead token in
that state.
This file also describes all the conflicts, both those resolved by
operator precedence and the unresolved ones.
The file's name is made by removing @samp{.tab.c} or @samp{.c} from
the parser output file name, and adding @samp{.output} instead.@refill
Therefore, if the input file is @file{foo.y}, then the parser file is
called @file{foo.tab.c} by default. As a consequence, the verbose
output file is called @file{foo.output}.@refill
@item %yacc
@itemx %fixed-output-files
Pretend the option @option{--yacc} was given, i.e., imitate Yacc,
including its naming conventions. @xref{Bison Options}, for more.
@end table @end table
@node Multiple Parsers @node Multiple Parsers
@section Multiple Parsers in the Same Program @section Multiple Parsers in the Same Program
@@ -5049,19 +5090,12 @@ that the debugging facilities are compiled. @xref{Debugging, ,Debugging
Your Parser}. Your Parser}.
@item --locations @item --locations
Pretend that @code{%locactions} was specified. @xref{Decl Summary}. Pretend that @code{%locations} was specified. @xref{Decl Summary}.
@item -p @var{prefix} @item -p @var{prefix}
@itemx --name-prefix=@var{prefix} @itemx --name-prefix=@var{prefix}
Rename the external symbols used in the parser so that they start with Pretend that @code{%name-prefix="@var{prefix}"} was specified.
@var{prefix} instead of @samp{yy}. The precise list of symbols renamed @xref{Decl Summary}.
is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
@code{yylval}, @code{yychar} and @code{yydebug}.
For example, if you use @samp{-p c}, the names become @code{cparse},
@code{clex}, and so on.
@xref{Multiple Parsers, ,Multiple Parsers in the Same Program}.
@item -l @item -l
@itemx --no-lines @itemx --no-lines
@@ -5073,11 +5107,11 @@ parser file, treating it as an independent source file in its own right.
@item -n @item -n
@itemx --no-parser @itemx --no-parser
Pretend that @code{%no_parser} was specified. @xref{Decl Summary}. Pretend that @code{%no-parser} was specified. @xref{Decl Summary}.
@item -k @item -k
@itemx --token-table @itemx --token-table
Pretend that @code{%token_table} was specified. @xref{Decl Summary}. Pretend that @code{%token-table} was specified. @xref{Decl Summary}.
@end table @end table
@noindent @noindent
@@ -5085,33 +5119,32 @@ Adjust the output:
@table @option @table @option
@item -d @item -d
Pretend that @code{%verbose} was specified, i.e., write an extra output @itemx --defines
Pretend that @code{%defines} was specified, i.e., write an extra output
file containing macro definitions for the token type names defined in file containing macro definitions for the token type names defined in
the grammar and the semantic value type @code{YYSTYPE}, as well as a few the grammar and the semantic value type @code{YYSTYPE}, as well as a few
@code{extern} variable declarations. @xref{Decl Summary}. @code{extern} variable declarations. @xref{Decl Summary}.
@item --defines=@var{defines-file} @item --defines=@var{defines-file}
The behaviour of @var{--defines} is the same than @samp{-d}. The only Same as above, but save in the file @var{defines-file}.
difference is that it has an optionnal argument which is the name of
the output filename.
@item -b @var{file-prefix} @item -b @var{file-prefix}
@itemx --file-prefix=@var{prefix} @itemx --file-prefix=@var{prefix}
Specify a prefix to use for all Bison output file names. The names are Pretend that @code{%verbose} was specified, i.e, specify prefix to use
chosen as if the input file were named @file{@var{prefix}.c}. for all Bison output file names. @xref{Decl Summary}.
@item -v @item -v
@itemx --verbose @itemx --verbose
Pretend that @code{%verbose} was specified, i.e, write an extra output Pretend that @code{%verbose} was specified, i.e, write an extra output
file containing verbose descriptions of the grammar and file containing verbose descriptions of the grammar and
parser. @xref{Decl Summary}, for more. parser. @xref{Decl Summary}.
@item -o @var{outfile} @item -o @var{filename}
@itemx --output-file=@var{outfile} @itemx --output=@var{filename}
Specify the name @var{outfile} for the parser file. Specify the @var{filename} for the parser file.
The other output files' names are constructed from @var{outfile} The other output files' names are constructed from @var{filename} as
as described under the @samp{-v} and @samp{-d} options. described under the @samp{-v} and @samp{-d} options.
@item -g @item -g
Output a VCG definition of the LALR(1) grammar automaton computed by Output a VCG definition of the LALR(1) grammar automaton computed by
@@ -5119,7 +5152,7 @@ Bison. If the grammar file is @file{foo.y}, the VCG output file will
be @file{foo.vcg}. be @file{foo.vcg}.
@item --graph=@var{graph-file} @item --graph=@var{graph-file}
The behaviour of @var{--graph} is the same than @samp{-g}. The only The behaviour of @var{--graph} is the same than @samp{-g}. The only
difference is that it has an optionnal argument which is the name of difference is that it has an optionnal argument which is the name of
the output graph filename. the output graph filename.
@end table @end table
@@ -5168,7 +5201,7 @@ the corresponding short option.
\line{ --name-prefix \leaderfill -p} \line{ --name-prefix \leaderfill -p}
\line{ --no-lines \leaderfill -l} \line{ --no-lines \leaderfill -l}
\line{ --no-parser \leaderfill -n} \line{ --no-parser \leaderfill -n}
\line{ --output-file \leaderfill -o} \line{ --output \leaderfill -o}
\line{ --token-table \leaderfill -k} \line{ --token-table \leaderfill -k}
\line{ --verbose \leaderfill -v} \line{ --verbose \leaderfill -v}
\line{ --version \leaderfill -V} \line{ --version \leaderfill -V}
@@ -5187,7 +5220,7 @@ the corresponding short option.
--name-prefix=@var{prefix} -p @var{name-prefix} --name-prefix=@var{prefix} -p @var{name-prefix}
--no-lines -l --no-lines -l
--no-parser -n --no-parser -n
--output-file=@var{outfile} -o @var{outfile} --output=@var{outfile} -o @var{outfile}
--token-table -k --token-table -k
--verbose -v --verbose -v
--version -V --version -V
@@ -5361,6 +5394,10 @@ Equip the parser for debugging. @xref{Decl Summary}.
Bison declaration to create a header file meant for the scanner. Bison declaration to create a header file meant for the scanner.
@xref{Decl Summary}. @xref{Decl Summary}.
@item %file-prefix="@var{prefix}"
Bison declaration to set tge prefix of the output files. @xref{Decl
Summary}.
@c @item %source_extension @c @item %source_extension
@c Bison declaration to specify the generated parser output file extension. @c Bison declaration to specify the generated parser output file extension.
@c @xref{Decl Summary}. @c @xref{Decl Summary}.
@@ -5373,7 +5410,10 @@ Bison declaration to create a header file meant for the scanner.
Bison declaration to assign left associativity to token(s). Bison declaration to assign left associativity to token(s).
@xref{Precedence Decl, ,Operator Precedence}. @xref{Precedence Decl, ,Operator Precedence}.
@item %no_lines @item %name-prefix="@var{prefix}"
Bison declaration to rename the external symbols. @xref{Decl Summary}.
@item %no-lines
Bison declaration to avoid generating @code{#line} directives in the Bison declaration to avoid generating @code{#line} directives in the
parser file. @xref{Decl Summary}. parser file. @xref{Decl Summary}.
@@ -5381,11 +5421,15 @@ parser file. @xref{Decl Summary}.
Bison declaration to assign non-associativity to token(s). Bison declaration to assign non-associativity to token(s).
@xref{Precedence Decl, ,Operator Precedence}. @xref{Precedence Decl, ,Operator Precedence}.
@item %output="@var{filename}"
Bison declaration to set the name of the parser file. @xref{Decl
Summary}.
@item %prec @item %prec
Bison declaration to assign a precedence to a specific rule. Bison declaration to assign a precedence to a specific rule.
@xref{Contextual Precedence, ,Context-Dependent Precedence}. @xref{Contextual Precedence, ,Context-Dependent Precedence}.
@item %pure_parser @item %pure-parser
Bison declaration to request a pure (reentrant) parser. Bison declaration to request a pure (reentrant) parser.
@xref{Pure Decl, ,A Pure (Reentrant) Parser}. @xref{Pure Decl, ,A Pure (Reentrant) Parser}.
@@ -5400,7 +5444,7 @@ Bison declaration to specify the start symbol. @xref{Start Decl, ,The Start-Sym
Bison declaration to declare token(s) without specifying precedence. Bison declaration to declare token(s) without specifying precedence.
@xref{Token Decl, ,Token Type Names}. @xref{Token Decl, ,Token Type Names}.
@item %token_table @item %token-table
Bison declaration to include a token name table in the parser file. Bison declaration to include a token name table in the parser file.
@xref{Decl Summary}. @xref{Decl Summary}.
+44 -38
View File
@@ -6,7 +6,7 @@
% This file can be printed with 1 or 2 columns per page (see below). % This file can be printed with 1 or 2 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed % Specify how many you want here. Nothing else needs to be changed
% unless you are maintaining the documentation. % unless you are maintaining the documentation.
% For printing reference cards to use in books, specify one column % For printing reference cards to use in books, specify one column
% per page and reduce to 80%. % per page and reduce to 80%.
% Note that if columnsperpage is set to 2, there will be a few overfull % Note that if columnsperpage is set to 2, there will be a few overfull
% boxes, but they are not serious. Just uncomment \finalout. % boxes, but they are not serious. Just uncomment \finalout.
@@ -19,7 +19,7 @@
\def\finalout{\overfullrule=0pt} \def\finalout{\overfullrule=0pt}
%\finalout %\finalout
% Copyright (c) 1998 Free Software Foundation, Inc. % Copyright (c) 1998, 2001 Free Software Foundation, Inc.
% %
% This file is part of Bison. % This file is part of Bison.
% %
@@ -51,11 +51,11 @@
% Which mode to use is controlled by setting \columnsperpage above. % Which mode to use is controlled by setting \columnsperpage above.
% %
% Authors: % Authors:
% Brendan Kehoe % Brendan Kehoe
% UUCP: widener!brendan % UUCP: widener!brendan
% Internet: [email protected] % Internet: [email protected]
% %
% Gavin Nicol % Gavin Nicol
% Internet: [email protected] % Internet: [email protected]
% %
% This refcard format was created by Steve Gildea. % This refcard format was created by Steve Gildea.
@@ -66,12 +66,12 @@
% We only change the following to change the version numbers and % We only change the following to change the version numbers and
% such. % such.
\def\bisonversion{1.20} % the bison version \def\bisonversion{1.31} % the bison version
\def\refcardversion{0.4a} % reference card version \def\refcardversion{0.5} % reference card version
\def\month{August} % month \def\month{November} % month
\def\year{1998} % year \def\year{2001} % year
\def\version{\month\ \year, Bison Refcard Version \refcardversion} \def\version{\month\ \year, Bison Refcard Version \refcardversion}
% for copyright notices % for copyright notices
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip} \def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
@@ -90,7 +90,7 @@
Permission is granted to make and distribute copies of this card Permission is granted to make and distribute copies of this card
provided the copyright notice and this permission notice provided the copyright notice and this permission notice
are preserved on all copies. are preserved on all copies.
\vskip .2\baselineskip \vskip .2\baselineskip
For information, write to the: For information, write to the:
\vskip .2\baselineskip \vskip .2\baselineskip
@@ -115,7 +115,7 @@ For information, write to the:
Permission is granted to make and distribute copies of this card Permission is granted to make and distribute copies of this card
provided the copyright notice and this permission notice provided the copyright notice and this permission notice
are preserved on all copies. are preserved on all copies.
\vskip .2\baselineskip \vskip .2\baselineskip
For information, write to the: For information, write to the:
\vskip .2\baselineskip \vskip .2\baselineskip
@@ -136,7 +136,7 @@ For information, write to the:
\def\ncolumns{\the\columnsperpage} \def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space \message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]} column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1} \def\scaledmag#1{ scaled \magstep #1}
@@ -227,7 +227,7 @@ For information, write to the:
\def\bye{\par\vfill\supereject \def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi \if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi \if a\abc \else\null\vfill\eject\fi
\end} \end}
\fi \fi
% we won't be using math mode much, so redefine some of the characters % we won't be using math mode much, so redefine some of the characters
@@ -316,41 +316,44 @@ Options can be used as: \kbd{bison {\it options} {\it filename}}
\section{Command Line Options} \section{Command Line Options}
%***************************** %*****************************
\key{Display usage information.} {-h}
\key{Display version information.} {-V}
\key{Generate token and {\tt YYSTYPE} definitions.} {-d} \key{Generate token and {\tt YYSTYPE} definitions.} {-d}
\key{Prepend a prefix to external symbols.} {-p {\it prefix}}
\key{Don't put {\tt \#line} directives in the parser.} {-l} \key{Don't put {\tt \#line} directives in the parser.} {-l}
\key{Specify the output file.} {-o {\it filename}} \key{Specify the output file.} {-o {\it filename}}
\key{Debug or {\it trace} mode.} {-t} \key{Debug or {\it trace} mode.} {-t}
\key{Verbose description of the parser.} {-v} \key{Verbose description of the parser.} {-v}
\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y} \key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y}
\vskip .10truein \vskip .10truein
{\bf Note:} The token and {\tt YYSTYPE} definitions are generated {\bf Note:} The token and {\tt YYSTYPE} definitions are generated
to a file called {\tt y.tab.h} if the {\tt -y} option is used, to a file called {\tt y.tab.h} if the {\tt -y} option is used,
otherwise it will have the format {\tt {\it name}.tab.h}, where otherwise it will have the format {\tt {\it name}.tab.h}, where
{\it name} is the leading part of the parser definition filename. {\it name} is the leading part of the parser definition filename.
\section{Definitions} \section{Definitions}
%******************** %********************
\key{Declare a terminal symbol.}{\%token <{\it t\/}> \key{Declare a terminal symbol.}{\%token <{\it t\/}>
{\it n}} {\it n}}
\key{Declare a terminal symbol, and define its association.} \key{Declare a terminal symbol, and define its association.}
{{\it association} <{\it t\/}> {\it n}} {{\it association} <{\it t\/}> {\it n}}
\vskip .2\baselineskip \vskip .2\baselineskip
\key{Generate a reentrant (pure) parser.} \key{Generate a reentrant (pure) parser.}
{\%pure_parser} {\%pure_parser}
\key{Define the union of all data types used in the parser.} \key{Define the union of all data types used in the parser.}
{\%union\{{\it field list}\} } {\%union\{{\it field list}\} }
\vskip .2\baselineskip \vskip .2\baselineskip
\key{Tell {\tt bison} where to start parsing.} \key{Tell {\tt bison} where to start parsing.}
{\%start {\it m}} {\%start {\it m}}
\key{Tell {\tt bison} the data type of symbols.} \key{Tell {\tt bison} the data type of symbols.}
{\%type <{\it t\/}> {\it s1}\dots{\it sn}} {\%type <{\it t\/}> {\it s1}\dots{\it sn}}
\vskip .10truein \vskip .10truein
@@ -362,8 +365,8 @@ definition, {\it n} is a {\it terminal} symbol name, {\it m} is a
\vskip .10truein \vskip .10truein
The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt
\%nonassoc} is optional. Additionally, precedence may be overridden with \%nonassoc} is optional. Additionally, precedence may be overridden
embedded {\tt \%prec} commands. in the rules with {\tt \%prec} commands.
\section{Parser Definition Files} \section{Parser Definition Files}
%********************************* %*********************************
@@ -379,7 +382,7 @@ The general form for a parser definition is:
\%\% \%\%
Rule definition 1 Rule definition 1
\vdots \vdots
Rule definition {\it n} Rule definition {\it n}
@@ -397,8 +400,9 @@ The general form for a parser definition is:
Rules take the form: Rules take the form:
\vskip -\baselineskip
\beginexample \beginexample
non-terminal : {\it statement} 1 non-terminal : {\it statement} 1
| {\it statement} 2 | {\it statement} 2
\vdots \vdots
| {\it statement n} | {\it statement n}
@@ -406,12 +410,12 @@ Rules take the form:
\endexample \endexample
Where {\it statements} can be either empty, or contain Where {\it statements} can be either empty, or contain
a mixture of C code (enclosed in {\tt \{...\}}), and the a mixture of C code (enclosed in {\tt \{...\}}), and the
symbols that make up the non-terminal. For example: symbols that make up the non-terminal. For example:
\vskip -\baselineskip \vskip -\baselineskip
\beginexample \beginexample
expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \} expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
| number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \} | number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}
| number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \} | number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}
| number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \} | number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}
@@ -428,7 +432,7 @@ For altering the precedence of a symbol use:
For example: For example:
\vskip -\baselineskip \vskip -\baselineskip
\beginexample \beginexample
foo : gnu bar gnu \%prec bar foo : gnu bar gnu \%prec bar
; ;
\endexample \endexample
@@ -438,16 +442,18 @@ For example:
\key{Recognize an error \& continue parsing.}{error} \key{Recognize an error \& continue parsing.}{error}
\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}} \key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}}
\key{Access a field of the data union.} {\$\$.{\it t}, \key{Access a field of the data union.} {\$\$.{\it t},
\$0.{\it t}\dots\${\it n}.{\it t}} \$0.{\it t}\dots\${\it n}.{\it t}}
\key{Access data's line position.} {@{\it n}.{\it line\_spec}} \key{Access symbol's location.} {@\$, @0\dots@{\it n}}
\key{Access data's column position.} {@{\it n}.{\it column\_spec}} \key{Access data's line location.} {@{\it x}.{\it line\_spec}}
\key{Access data's column location.} {@{\it x}.{\it column\_spec}}
\vskip .10truein \vskip .10truein
%
Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a
number, {\it line\_spec} one of {\tt first_line} and {\tt last_line}, number, {\it x} is a number or \$, {\it line\_spec} one of {\tt
and {\it column\_spec} is specified as either {\tt first_column} or {\tt first_line} and {\tt last_line}, and {\it column\_spec} is specified
last_column}. as either {\tt first_column} or {\tt last_column}.
\section {Variables and Types} \section {Variables and Types}
%***************************** %*****************************
+4 -4
View File
@@ -1,4 +1,4 @@
@set UPDATED 20 September 2001 @set UPDATED 12 November 2001
@set UPDATED-MONTH September 2001 @set UPDATED-MONTH November 2001
@set EDITION 1.29f @set EDITION 1.30e
@set VERSION 1.29f @set VERSION 1.30e
+4 -4
View File
@@ -1,4 +1,4 @@
@set UPDATED 20 September 2001 @set UPDATED 12 November 2001
@set UPDATED-MONTH September 2001 @set UPDATED-MONTH November 2001
@set EDITION 1.29f @set EDITION 1.30e
@set VERSION 1.29f @set VERSION 1.30e
+5 -6
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -165,9 +166,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu lib/Makefile $(AUTOMAKE) --gnu lib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
AR = ar AR = ar
@@ -193,7 +192,7 @@ clean-krextra:
-rm -f ansi2knr -rm -f ansi2knr
mostlyclean-kr: mostlyclean-kr:
-rm -f *_.c -test "$U" = "" || rm -f *_.c
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt$U.Po@am__quote@
+198 -74
View File
@@ -1,23 +1,22 @@
/* Error handler for noninteractive utilities /* Error handler for noninteractive utilities
Copyright (C) 1990-1998, 2000 Free Software Foundation, Inc. Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib. the C library, however. The master source lives in /gd/gnu/lib.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Lesser General Public
published by the Free Software Foundation; either version 2 of the License as published by the Free Software Foundation; either
License, or (at your option) any later version. version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; see the file COPYING.LIB. If not, License along with the GNU C Library; if not, write to the Free
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
Boston, MA 02111-1307, USA. */ 02111-1307 USA. */
/* Written by David MacKenzie <[email protected]>. */ /* Written by David MacKenzie <[email protected]>. */
@@ -29,6 +28,10 @@
#if HAVE_LIBINTL_H #if HAVE_LIBINTL_H
# include <libintl.h> # include <libintl.h>
#endif #endif
#ifdef _LIBC
# include <wchar.h>
# define mbsrtowcs __mbsrtowcs
#endif
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC #if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
# if __STDC__ # if __STDC__
@@ -52,13 +55,6 @@ void exit ();
#include "error.h" #include "error.h"
#ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRERROR_R
char *strerror_r ();
#endif
#ifndef _ #ifndef _
# define _(String) String # define _(String) String
#endif #endif
@@ -83,6 +79,12 @@ unsigned int error_message_count;
/* In GNU libc we want do not want to use the common name `error' directly. /* In GNU libc we want do not want to use the common name `error' directly.
Instead make it a weak alias. */ Instead make it a weak alias. */
extern void __error (int status, int errnum, const char *message, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
extern void __error_at_line (int status, int errnum, const char *file_name,
unsigned int line_number, const char *message,
...)
__attribute__ ((__format__ (__printf__, 5, 6)));;
# define error __error # define error __error
# define error_at_line __error_at_line # define error_at_line __error_at_line
@@ -93,21 +95,30 @@ unsigned int error_message_count;
#else /* not _LIBC */ #else /* not _LIBC */
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
# ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run"
# endif
char *strerror_r ();
# endif
/* The calling program should define program_name and set it to the /* The calling program should define program_name and set it to the
name of the executing program. */ name of the executing program. */
extern char *program_name; extern char *program_name;
# ifdef HAVE_STRERROR_R # if HAVE_STRERROR_R || defined strerror_r
# define __strerror_r strerror_r # define __strerror_r strerror_r
# else # else
# if HAVE_STRERROR # if HAVE_STRERROR
# ifndef strerror /* On some systems, strerror is a macro */ # ifndef HAVE_DECL_STRERROR
"this configure-time declaration test was not run"
# endif
# if !HAVE_DECL_STRERROR
char *strerror (); char *strerror ();
# endif # endif
# else # else
static char * static char *
private_strerror (errnum) private_strerror (int errnum)
int errnum;
{ {
extern char *sys_errlist[]; extern char *sys_errlist[];
extern int sys_nerr; extern int sys_nerr;
@@ -118,15 +129,118 @@ private_strerror (errnum)
} }
# define strerror private_strerror # define strerror private_strerror
# endif /* HAVE_STRERROR */ # endif /* HAVE_STRERROR */
# endif /* HAVE_STRERROR_R */ # endif /* HAVE_STRERROR_R || defined strerror_r */
#endif /* not _LIBC */ #endif /* not _LIBC */
static void
print_errno_message (int errnum)
{
char const *s;
#if defined HAVE_STRERROR_R || _LIBC
char errbuf[1024];
# if STRERROR_R_CHAR_P || _LIBC
s = __strerror_r (errnum, errbuf, sizeof errbuf);
# else
if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
s = errbuf;
else
s = 0;
# endif
#else
s = strerror (errnum);
#endif
#if !_LIBC
if (! s)
s = _("Unknown system error");
#endif
#if _LIBC && USE_IN_LIBIO
if (_IO_fwide (stderr, 0) > 0)
{
__fwprintf (stderr, L": %s", s);
return;
}
#endif
fprintf (stderr, ": %s", s);
}
#ifdef VA_START
static void
error_tail (int status, int errnum, const char *message, va_list args)
{
# if HAVE_VPRINTF || _LIBC
# if _LIBC && USE_IN_LIBIO
if (_IO_fwide (stderr, 0) > 0)
{
# define ALLOCA_LIMIT 2000
size_t len = strlen (message) + 1;
wchar_t *wmessage = NULL;
mbstate_t st;
size_t res;
const char *tmp;
do
{
if (len < ALLOCA_LIMIT)
wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
else
{
if (wmessage != NULL && len / 2 < ALLOCA_LIMIT)
wmessage = NULL;
wmessage = (wchar_t *) realloc (wmessage,
len * sizeof (wchar_t));
if (wmessage == NULL)
{
fputws_unlocked (L"out of memory\n", stderr);
return;
}
}
memset (&st, '\0', sizeof (st));
tmp =message;
}
while ((res = mbsrtowcs (wmessage, &tmp, len, &st)) == len);
if (res == (size_t) -1)
/* The string cannot be converted. */
wmessage = (wchar_t *) L"???";
__vfwprintf (stderr, wmessage, args);
}
else
# endif
vfprintf (stderr, message, args);
# else
_doprnt (message, args, stderr);
# endif
va_end (args);
++error_message_count;
if (errnum)
print_errno_message (errnum);
# if _LIBC && USE_IN_LIBIO
if (_IO_fwide (stderr, 0) > 0)
putwc (L'\n', stderr);
else
# endif
putc ('\n', stderr);
fflush (stderr);
if (status)
exit (status);
}
#endif
/* Print the program name and error message MESSAGE, which is a printf-style /* Print the program name and error message MESSAGE, which is a printf-style
format string with optional args. format string with optional args.
If ERRNUM is nonzero, print its corresponding system error message. If ERRNUM is nonzero, print its corresponding system error message.
Exit with status STATUS if it is nonzero. */ Exit with status STATUS if it is nonzero. */
/* VARARGS */ /* VARARGS */
void void
#if defined VA_START && __STDC__ #if defined VA_START && __STDC__
error (int status, int errnum, const char *message, ...) error (int status, int errnum, const char *message, ...)
@@ -142,47 +256,48 @@ error (status, errnum, message, va_alist)
va_list args; va_list args;
#endif #endif
fflush (stdout);
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_flockfile (stderr);
# else
__flockfile (stderr);
# endif
#endif
if (error_print_progname) if (error_print_progname)
(*error_print_progname) (); (*error_print_progname) ();
else else
{ {
fflush (stdout); #if _LIBC && USE_IN_LIBIO
fprintf (stderr, "%s: ", program_name); if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s: ", program_name);
else
#endif
fprintf (stderr, "%s: ", program_name);
} }
#ifdef VA_START #ifdef VA_START
VA_START (args, message); VA_START (args, message);
# if HAVE_VPRINTF || _LIBC error_tail (status, errnum, message, args);
vfprintf (stderr, message, args);
# else
_doprnt (message, args, stderr);
# endif
va_end (args);
#else #else
fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
#endif
++error_message_count; ++error_message_count;
if (errnum) if (errnum)
{ print_errno_message (errnum);
#if defined HAVE_STRERROR_R || _LIBC
char errbuf[1024];
# if HAVE_WORKING_STRERROR_R || _LIBC
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
# else
/* Don't use __strerror_r's return value because on some systems
(at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
# endif
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
}
putc ('\n', stderr); putc ('\n', stderr);
fflush (stderr); fflush (stderr);
if (status) if (status)
exit (status); exit (status);
#endif
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_funlockfile (stderr);
# else
__funlockfile (stderr);
# endif
#endif
} }
/* Sometimes we want to have at most one error per line. This /* Sometimes we want to have at most one error per line. This
@@ -212,8 +327,9 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
static const char *old_file_name; static const char *old_file_name;
static unsigned int old_line_number; static unsigned int old_line_number;
if (old_line_number == line_number && if (old_line_number == line_number
(file_name == old_file_name || !strcmp (old_file_name, file_name))) && (file_name == old_file_name
|| strcmp (old_file_name, file_name) == 0))
/* Simply return and print nothing. */ /* Simply return and print nothing. */
return; return;
@@ -221,50 +337,58 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
old_line_number = line_number; old_line_number = line_number;
} }
fflush (stdout);
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_flockfile (stderr);
# else
__flockfile (stderr);
# endif
#endif
if (error_print_progname) if (error_print_progname)
(*error_print_progname) (); (*error_print_progname) ();
else else
{ {
fflush (stdout); #if _LIBC && USE_IN_LIBIO
fprintf (stderr, "%s:", program_name); if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s: ", program_name);
else
#endif
fprintf (stderr, "%s:", program_name);
} }
if (file_name != NULL) if (file_name != NULL)
fprintf (stderr, "%s:%d: ", file_name, line_number); {
#if _LIBC && USE_IN_LIBIO
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s:%d: ", file_name, line_number);
else
#endif
fprintf (stderr, "%s:%d: ", file_name, line_number);
}
#ifdef VA_START #ifdef VA_START
VA_START (args, message); VA_START (args, message);
# if HAVE_VPRINTF || _LIBC error_tail (status, errnum, message, args);
vfprintf (stderr, message, args);
# else
_doprnt (message, args, stderr);
# endif
va_end (args);
#else #else
fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
#endif
++error_message_count; ++error_message_count;
if (errnum) if (errnum)
{ print_errno_message (errnum);
#if defined HAVE_STRERROR_R || _LIBC
char errbuf[1024];
# if HAVE_WORKING_STRERROR_R || _LIBC
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
# else
/* Don't use __strerror_r's return value because on some systems
(at least DEC UNIX 4.0[A-D]) strerror_r returns `int'. */
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
# endif
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
}
putc ('\n', stderr); putc ('\n', stderr);
fflush (stderr); fflush (stderr);
if (status) if (status)
exit (status); exit (status);
#endif
#ifdef _LIBC
# ifdef USE_IN_LIBIO
_IO_funlockfile (stderr);
# else
__funlockfile (stderr);
# endif
#endif
} }
#ifdef _LIBC #ifdef _LIBC
+1 -1
View File
@@ -25,7 +25,7 @@
#ifndef __attribute__ #ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */ /* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
# define __attribute__(Spec) /* empty */ # define __attribute__(Spec) /* empty */
# endif # endif
/* The __-protected variants of `format' and `printf' attributes /* The __-protected variants of `format' and `printf' attributes
+59 -40
View File
@@ -1,23 +1,25 @@
/* Getopt for GNU. /* Getopt for GNU.
NOTE: The canonical source of this file is maintained with the GNU NOTE: getopt is now part of the C library, so if you don't know what
C Library. Bugs can be reported to bug-glibc@gnu.org. "Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify it The GNU C Library is free software; you can redistribute it and/or
under the terms of the GNU General Public License as published by the modify it under the terms of the GNU Lesser General Public
Free Software Foundation; either version 2, or (at your option) any License as published by the Free Software Foundation; either
later version. version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU Lesser General Public
along with this program; if not, write to the Free Software Foundation, License along with the GNU C Library; if not, write to the Free
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */ Ditto for AIX 3.2 and <stdlib.h>. */
@@ -27,13 +29,13 @@
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include <config.h> # include <config.h>
#else #endif
# if !defined __STDC__ || !__STDC__
#if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems /* This is a separate conditional since some stdc systems
reject `defined (const)'. */ reject `defined (const)'. */
# ifndef const # ifndef const
# define const # define const
# endif
# endif # endif
#endif #endif
@@ -75,11 +77,12 @@
#endif #endif
#ifndef _ #ifndef _
/* This is for other GNU distributions with internationalized messages. /* This is for other GNU distributions with internationalized messages. */
When compiling libc, the _ macro is predefined. */ # if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
# ifdef HAVE_LIBINTL_H
# include <libintl.h> # include <libintl.h>
# define _(msgid) gettext (msgid) # ifndef _
# define _(msgid) gettext (msgid)
# endif
# else # else
# define _(msgid) (msgid) # define _(msgid) (msgid)
# endif # endif
@@ -250,11 +253,13 @@ static int last_nonopt;
/* Bash 2.0 gives us an environment variable containing flags /* Bash 2.0 gives us an environment variable containing flags
indicating ARGV elements that should not be considered arguments. */ indicating ARGV elements that should not be considered arguments. */
#ifdef USE_NONOPTION_FLAGS
/* Defined in getopt_init.c */ /* Defined in getopt_init.c */
extern char *__getopt_nonoption_flags; extern char *__getopt_nonoption_flags;
static int nonoption_flags_max_len; static int nonoption_flags_max_len;
static int nonoption_flags_len; static int nonoption_flags_len;
#endif
static int original_argc; static int original_argc;
static char *const *original_argv; static char *const *original_argv;
@@ -275,13 +280,17 @@ store_args_and_env (int argc, char *const *argv)
text_set_element (__libc_subinit, store_args_and_env); text_set_element (__libc_subinit, store_args_and_env);
# endif /* text_set_element */ # endif /* text_set_element */
# define SWAP_FLAGS(ch1, ch2) \ # ifdef USE_NONOPTION_FLAGS
# define SWAP_FLAGS(ch1, ch2) \
if (nonoption_flags_len > 0) \ if (nonoption_flags_len > 0) \
{ \ { \
char __tmp = __getopt_nonoption_flags[ch1]; \ char __tmp = __getopt_nonoption_flags[ch1]; \
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
__getopt_nonoption_flags[ch2] = __tmp; \ __getopt_nonoption_flags[ch2] = __tmp; \
} }
# else
# define SWAP_FLAGS(ch1, ch2)
# endif
#else /* !_LIBC */ #else /* !_LIBC */
# define SWAP_FLAGS(ch1, ch2) # define SWAP_FLAGS(ch1, ch2)
#endif /* _LIBC */ #endif /* _LIBC */
@@ -313,7 +322,7 @@ exchange (argv)
It leaves the longer segment in the right place overall, It leaves the longer segment in the right place overall,
but it consists of two parts that need to be swapped next. */ but it consists of two parts that need to be swapped next. */
#ifdef _LIBC #if defined _LIBC && defined USE_NONOPTION_FLAGS
/* First make sure the handling of the `__getopt_nonoption_flags' /* First make sure the handling of the `__getopt_nonoption_flags'
string can work normally. Our top argument must be in the range string can work normally. Our top argument must be in the range
of the string. */ of the string. */
@@ -417,7 +426,7 @@ _getopt_initialize (argc, argv, optstring)
else else
ordering = PERMUTE; ordering = PERMUTE;
#ifdef _LIBC #if defined _LIBC && defined USE_NONOPTION_FLAGS
if (posixly_correct == NULL if (posixly_correct == NULL
&& argc == original_argc && argv == original_argv) && argc == original_argc && argv == original_argv)
{ {
@@ -515,6 +524,13 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int *longind; int *longind;
int long_only; int long_only;
{ {
int print_errors = opterr;
if (optstring[0] == ':')
print_errors = 0;
if (argc < 1)
return -1;
optarg = NULL; optarg = NULL;
if (optind == 0 || !__getopt_initialized) if (optind == 0 || !__getopt_initialized)
@@ -529,7 +545,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
Either it does not have option syntax, or there is an environment flag Either it does not have option syntax, or there is an environment flag
from the shell indicating it is not an option. The later information from the shell indicating it is not an option. The later information
is only used when the used in the GNU libc. */ is only used when the used in the GNU libc. */
#ifdef _LIBC #if defined _LIBC && defined USE_NONOPTION_FLAGS
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|| (optind < nonoption_flags_len \ || (optind < nonoption_flags_len \
&& __getopt_nonoption_flags[optind] == '1')) && __getopt_nonoption_flags[optind] == '1'))
@@ -664,14 +680,17 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
pfound = p; pfound = p;
indfound = option_index; indfound = option_index;
} }
else else if (long_only
|| pfound->has_arg != p->has_arg
|| pfound->flag != p->flag
|| pfound->val != p->val)
/* Second or later nonexact match found. */ /* Second or later nonexact match found. */
ambig = 1; ambig = 1;
} }
if (ambig && !exact) if (ambig && !exact)
{ {
if (opterr) if (print_errors)
fprintf (stderr, _("%s: option `%s' is ambiguous\n"), fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
argv[0], argv[optind]); argv[0], argv[optind]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
@@ -692,7 +711,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = nameend + 1; optarg = nameend + 1;
else else
{ {
if (opterr) if (print_errors)
{ {
if (argv[optind - 1][1] == '-') if (argv[optind - 1][1] == '-')
/* --option */ /* --option */
@@ -718,7 +737,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = argv[optind++]; optarg = argv[optind++];
else else
{ {
if (opterr) if (print_errors)
fprintf (stderr, fprintf (stderr,
_("%s: option `%s' requires an argument\n"), _("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]); argv[0], argv[optind - 1]);
@@ -745,7 +764,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (!long_only || argv[optind][1] == '-' if (!long_only || argv[optind][1] == '-'
|| my_index (optstring, *nextchar) == NULL) || my_index (optstring, *nextchar) == NULL)
{ {
if (opterr) if (print_errors)
{ {
if (argv[optind][1] == '-') if (argv[optind][1] == '-')
/* --option */ /* --option */
@@ -775,7 +794,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (temp == NULL || c == ':') if (temp == NULL || c == ':')
{ {
if (opterr) if (print_errors)
{ {
if (posixly_correct) if (posixly_correct)
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
@@ -809,7 +828,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
} }
else if (optind == argc) else if (optind == argc)
{ {
if (opterr) if (print_errors)
{ {
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: option requires an argument -- %c\n"), fprintf (stderr, _("%s: option requires an argument -- %c\n"),
@@ -858,7 +877,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
} }
if (ambig && !exact) if (ambig && !exact)
{ {
if (opterr) if (print_errors)
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]); argv[0], argv[optind]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
@@ -876,7 +895,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = nameend + 1; optarg = nameend + 1;
else else
{ {
if (opterr) if (print_errors)
fprintf (stderr, _("\ fprintf (stderr, _("\
%s: option `-W %s' doesn't allow an argument\n"), %s: option `-W %s' doesn't allow an argument\n"),
argv[0], pfound->name); argv[0], pfound->name);
@@ -891,7 +910,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optarg = argv[optind++]; optarg = argv[optind++];
else else
{ {
if (opterr) if (print_errors)
fprintf (stderr, fprintf (stderr,
_("%s: option `%s' requires an argument\n"), _("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]); argv[0], argv[optind - 1]);
@@ -938,12 +957,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
} }
else if (optind == argc) else if (optind == argc)
{ {
if (opterr) if (print_errors)
{ {
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
fprintf (stderr, fprintf (stderr,
_("%s: option requires an argument -- %c\n"), _("%s: option requires an argument -- %c\n"),
argv[0], c); argv[0], c);
} }
optopt = c; optopt = c;
if (optstring[0] == ':') if (optstring[0] == ':')
+27 -16
View File
@@ -1,21 +1,21 @@
/* Declarations for getopt. /* Declarations for getopt.
Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library. This file is part of the GNU C Library.
Bugs can be reported to [email protected].
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, The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU Lesser General Public
along with this program; if not, write to the Free Software License along with the GNU C Library; if not, write to the Free
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
USA. */ 02111-1307 USA. */
#ifndef _GETOPT_H #ifndef _GETOPT_H
@@ -23,6 +23,17 @@
# define _GETOPT_H 1 # define _GETOPT_H 1
#endif #endif
/* If __GNU_LIBRARY__ is not already defined, either we are being used
standalone, or this is the first header included in the source file.
If we are being used with glibc, we need to include <features.h>, but
that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
not defined, include <ctype.h>, which will pull in <features.h> for us
if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
doesn't flood the namespace with stuff the way some other headers do.) */
#if !defined __GNU_LIBRARY__
# include <ctype.h>
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -82,7 +93,7 @@ extern int optopt;
struct option struct option
{ {
# if defined __STDC__ && __STDC__ # if (defined __STDC__ && __STDC__) || defined __cplusplus
const char *name; const char *name;
# else # else
char *name; char *name;
@@ -126,7 +137,7 @@ struct option
arguments to the option '\0'. This behavior is specific to the GNU arguments to the option '\0'. This behavior is specific to the GNU
`getopt'. */ `getopt'. */
#if defined __STDC__ && __STDC__ #if (defined __STDC__ && __STDC__) || defined __cplusplus
# ifdef __GNU_LIBRARY__ # ifdef __GNU_LIBRARY__
/* Many other libraries have conflicting prototypes for getopt, with /* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation differences in the consts, in stdlib.h. To avoid compilation
+16 -16
View File
@@ -1,26 +1,29 @@
/* getopt_long and getopt_long_only entry points for GNU getopt. /* getopt_long and getopt_long_only entry points for GNU getopt.
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
Free Software Foundation, Inc. Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library. This file is part of the GNU C Library.
Bugs can be reported to [email protected].
This program is free software; you can redistribute it and/or modify it The GNU C Library is free software; you can redistribute it and/or
under the terms of the GNU General Public License as published by the modify it under the terms of the GNU Lesser General Public
Free Software Foundation; either version 2, or (at your option) any License as published by the Free Software Foundation; either
later version. version 2.1 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
GNU General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU Lesser General Public
along with this program; if not, write to the Free Software Foundation, License along with the GNU C Library; if not, write to the Free
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> #include <config.h>
#else #endif
#include "getopt.h"
#if !defined __STDC__ || !__STDC__ #if !defined __STDC__ || !__STDC__
/* This is a separate conditional since some stdc systems /* This is a separate conditional since some stdc systems
reject `defined (const)'. */ reject `defined (const)'. */
@@ -28,9 +31,6 @@
#define const #define const
#endif #endif
#endif #endif
#endif
#include "getopt.h"
#include <stdio.h> #include <stdio.h>
+94 -75
View File
@@ -1,26 +1,25 @@
/* obstack.c - subroutines used implicitly by object stack macros /* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988-1994,96,97,98,99,2000 Free Software Foundation, Inc. Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib. the C library, however. The master source lives in /gd/gnu/lib.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Lesser General Public
published by the Free Software Foundation; either version 2 of the License as published by the Free Software Foundation; either
License, or (at your option) any later version. version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Lesser General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; see the file COPYING.LIB. If not, License along with the GNU C Library; if not, write to the Free
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
Boston, MA 02111-1307, USA. */ 02111-1307 USA. */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include <config.h> # include <config.h>
#endif #endif
#include "obstack.h" #include "obstack.h"
@@ -40,40 +39,43 @@
files, it is simpler to just do this in the source for each such file. */ files, it is simpler to just do this in the source for each such file. */
#include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */ #include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */
#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1 #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
#include <gnu-versions.h> # include <gnu-versions.h>
#if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION # if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
#define ELIDE_CODE # define ELIDE_CODE
#endif # endif
#endif #endif
#if defined _LIBC && defined USE_IN_LIBIO
# include <wchar.h>
#endif
#ifndef ELIDE_CODE #ifndef ELIDE_CODE
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
#define POINTER void * # define POINTER void *
#else # else
#define POINTER char * # define POINTER char *
#endif # endif
/* Determine default alignment. */ /* Determine default alignment. */
struct fooalign {char x; double d;}; struct fooalign {char x; double d;};
#define DEFAULT_ALIGNMENT \ # define DEFAULT_ALIGNMENT \
((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0)) ((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))
/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT. /* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
But in fact it might be less smart and round addresses to as much as But in fact it might be less smart and round addresses to as much as
DEFAULT_ROUNDING. So we prepare for it to do that. */ DEFAULT_ROUNDING. So we prepare for it to do that. */
union fooround {long x; double d;}; union fooround {long x; double d;};
#define DEFAULT_ROUNDING (sizeof (union fooround)) # define DEFAULT_ROUNDING (sizeof (union fooround))
/* When we copy a long block of data, this is the unit to do it with. /* When we copy a long block of data, this is the unit to do it with.
On some machines, copying successive ints does not work; On some machines, copying successive ints does not work;
in such a case, redefine COPYING_UNIT to `long' (if that works) in such a case, redefine COPYING_UNIT to `long' (if that works)
or `char' as a last resort. */ or `char' as a last resort. */
#ifndef COPYING_UNIT # ifndef COPYING_UNIT
#define COPYING_UNIT int # define COPYING_UNIT int
#endif # endif
/* The functions allocating more room by calling `obstack_chunk_alloc' /* The functions allocating more room by calling `obstack_chunk_alloc'
@@ -82,21 +84,21 @@ union fooround {long x; double d;};
abort gracefully or use longjump - but shouldn't return. This abort gracefully or use longjump - but shouldn't return. This
variable by default points to the internal function variable by default points to the internal function
`print_and_abort'. */ `print_and_abort'. */
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
static void print_and_abort (void); static void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort; void (*obstack_alloc_failed_handler) (void) = print_and_abort;
#else # else
static void print_and_abort (); static void print_and_abort ();
void (*obstack_alloc_failed_handler) () = print_and_abort; void (*obstack_alloc_failed_handler) () = print_and_abort;
#endif # endif
/* Exit value used when `print_and_abort' is used. */ /* Exit value used when `print_and_abort' is used. */
#if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H # if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
#include <stdlib.h> # include <stdlib.h>
#endif # endif
#ifndef EXIT_FAILURE # ifndef EXIT_FAILURE
#define EXIT_FAILURE 1 # define EXIT_FAILURE 1
#endif # endif
int obstack_exit_failure = EXIT_FAILURE; int obstack_exit_failure = EXIT_FAILURE;
/* The non-GNU-C macros copy the obstack into this global variable /* The non-GNU-C macros copy the obstack into this global variable
@@ -110,33 +112,33 @@ struct obstack *_obstack;
For free, do not use ?:, since some compilers, like the MIPS compilers, For free, do not use ?:, since some compilers, like the MIPS compilers,
do not allow (expr) ? void : void. */ do not allow (expr) ? void : void. */
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
#define CALL_CHUNKFUN(h, size) \ # define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \ (((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \ ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size))) : (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \ # define CALL_FREEFUN(h, old_chunk) \
do { \ do { \
if ((h) -> use_extra_arg) \ if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \ (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \ else \
(*(void (*) (void *)) (h)->freefun) ((old_chunk)); \ (*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
} while (0) } while (0)
#else # else
#define CALL_CHUNKFUN(h, size) \ # define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \ (((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \ ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size))) : (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \ # define CALL_FREEFUN(h, old_chunk) \
do { \ do { \
if ((h) -> use_extra_arg) \ if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \ (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \ else \
(*(void (*) ()) (h)->freefun) ((old_chunk)); \ (*(void (*) ()) (h)->freefun) ((old_chunk)); \
} while (0) } while (0)
#endif # endif
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default). /* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
@@ -152,13 +154,13 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
struct obstack *h; struct obstack *h;
int size; int size;
int alignment; int alignment;
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
POINTER (*chunkfun) (long); POINTER (*chunkfun) (long);
void (*freefun) (void *); void (*freefun) (void *);
#else # else
POINTER (*chunkfun) (); POINTER (*chunkfun) ();
void (*freefun) (); void (*freefun) ();
#endif # endif
{ {
register struct _obstack_chunk *chunk; /* points to new chunk */ register struct _obstack_chunk *chunk; /* points to new chunk */
@@ -181,13 +183,13 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
size = 4096 - extra; size = 4096 - extra;
} }
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun; h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun; h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else # else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun; h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun; h->freefun = freefun;
#endif # endif
h->chunk_size = size; h->chunk_size = size;
h->alignment_mask = alignment - 1; h->alignment_mask = alignment - 1;
h->use_extra_arg = 0; h->use_extra_arg = 0;
@@ -210,13 +212,13 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
struct obstack *h; struct obstack *h;
int size; int size;
int alignment; int alignment;
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
POINTER (*chunkfun) (POINTER, long); POINTER (*chunkfun) (POINTER, long);
void (*freefun) (POINTER, POINTER); void (*freefun) (POINTER, POINTER);
#else # else
POINTER (*chunkfun) (); POINTER (*chunkfun) ();
void (*freefun) (); void (*freefun) ();
#endif # endif
POINTER arg; POINTER arg;
{ {
register struct _obstack_chunk *chunk; /* points to new chunk */ register struct _obstack_chunk *chunk; /* points to new chunk */
@@ -240,13 +242,13 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
size = 4096 - extra; size = 4096 - extra;
} }
#if defined(__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun; h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun; h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else # else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun; h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun; h->freefun = freefun;
#endif # endif
h->chunk_size = size; h->chunk_size = size;
h->alignment_mask = alignment - 1; h->alignment_mask = alignment - 1;
h->extra_arg = arg; h->extra_arg = arg;
@@ -341,11 +343,11 @@ _obstack_newchunk (h, length)
This is here for debugging. This is here for debugging.
If you use it in a program, you are probably losing. */ If you use it in a program, you are probably losing. */
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
/* Suppress -Wmissing-prototypes warning. We don't want to declare this in /* Suppress -Wmissing-prototypes warning. We don't want to declare this in
obstack.h because it is just for debugging. */ obstack.h because it is just for debugging. */
int _obstack_allocated_p (struct obstack *h, POINTER obj); int _obstack_allocated_p (struct obstack *h, POINTER obj);
#endif # endif
int int
_obstack_allocated_p (h, obj) _obstack_allocated_p (h, obj)
@@ -370,7 +372,7 @@ _obstack_allocated_p (h, obj)
/* Free objects in obstack H, including OBJ and everything allocate /* Free objects in obstack H, including OBJ and everything allocate
more recently than OBJ. If OBJ is zero, free everything in H. */ more recently than OBJ. If OBJ is zero, free everything in H. */
#undef obstack_free # undef obstack_free
/* This function has two names with identical definitions. /* This function has two names with identical definitions.
This is the first one, called from non-ANSI code. */ This is the first one, called from non-ANSI code. */
@@ -456,37 +458,54 @@ _obstack_memory_used (h)
} }
/* Define the error handler. */ /* Define the error handler. */
#ifndef _ # ifndef _
# if defined HAVE_LIBINTL_H || defined _LIBC # if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
# include <libintl.h> # include <libintl.h>
# ifndef _ # ifndef _
# define _(Str) gettext (Str) # define _(Str) gettext (Str)
# endif
# else
# define _(Str) (Str)
# endif
# endif
# if defined _LIBC && defined USE_IN_LIBIO
# include <libio/iolibio.h>
# define fputs(s, f) _IO_fputs (s, f)
# endif
# ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
# define __attribute__(Spec) /* empty */
# endif # endif
# else
# define _(Str) (Str)
# endif # endif
#endif
#if defined _LIBC && defined USE_IN_LIBIO
# include <libio/iolibio.h>
# define fputs(s, f) _IO_fputs (s, f)
#endif
static void static void
__attribute__ ((noreturn))
print_and_abort () print_and_abort ()
{ {
fputs (_("memory exhausted"), stderr); /* Don't change any of these strings. Yes, it would be possible to add
fputc ('\n', stderr); the newline to the string and use fputs or so. But this must not
happen because the "memory exhausted" message appears in other places
like this and the translation should be reused instead of creating
a very similar string which requires a separate translation. */
# if defined _LIBC && defined USE_IN_LIBIO
if (_IO_fwide (stderr, 0) > 0)
__fwprintf (stderr, L"%s\n", _("memory exhausted"));
else
# endif
fprintf (stderr, "%s\n", _("memory exhausted"));
exit (obstack_exit_failure); exit (obstack_exit_failure);
} }
#if 0 # if 0
/* These are now turned off because the applications do not use it /* These are now turned off because the applications do not use it
and it uses bcopy via obstack_grow, which causes trouble on sysV. */ and it uses bcopy via obstack_grow, which causes trouble on sysV. */
/* Now define the functional versions of the obstack macros. /* Now define the functional versions of the obstack macros.
Define them to simply use the corresponding macros to do the job. */ Define them to simply use the corresponding macros to do the job. */
#if defined (__STDC__) && __STDC__ # if defined __STDC__ && __STDC__
/* These function definitions do not work with non-ANSI preprocessors; /* These function definitions do not work with non-ANSI preprocessors;
they won't pass through the macro names in parentheses. */ they won't pass through the macro names in parentheses. */
@@ -597,8 +616,8 @@ POINTER (obstack_copy0) (obstack, address, length)
return obstack_copy0 (obstack, address, length); return obstack_copy0 (obstack, address, length);
} }
#endif /* __STDC__ */ # endif /* __STDC__ */
#endif /* 0 */ # endif /* 0 */
#endif /* !ELIDE_CODE */ #endif /* !ELIDE_CODE */
+11 -8
View File
@@ -4,20 +4,23 @@
This file is part of the GNU C Library. Its master source is NOT part of This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib. the C library, however. The master source lives in /gd/gnu/lib.
The GNU C Library is free software; you can redistribute it and/or NOTE: The canonical source of this file is maintained with the GNU C Library.
modify it under the terms of the GNU Library General Public License as Bugs can be reported to [email protected].
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, 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 but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not, License along with this program; if not, write to the Free Software
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
Boston, MA 02111-1307, USA. */ USA. */
/* Summary: /* Summary:
+3
View File
@@ -4,6 +4,9 @@
# include <config.h> # include <config.h>
#endif #endif
#if HAVE_STDDEF_H
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
#endif
#include <sys/types.h> #include <sys/types.h>
#include <quotearg.h> #include <quotearg.h>
#include <quote.h> #include <quote.h>
+2 -2
View File
@@ -1,5 +1,5 @@
/* Find the length of STRING, but scan at most MAXLEN characters. /* Find the length of STRING, but scan at most MAXLEN characters.
Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@@ -51,7 +51,7 @@ size_t
__strnlen (const char *string, size_t maxlen) __strnlen (const char *string, size_t maxlen)
{ {
const char *end = memchr (string, '\0', maxlen); const char *end = memchr (string, '\0', maxlen);
return end ? end - string : maxlen; return end ? (size_t) (end - string) : maxlen;
} }
#ifdef weak_alias #ifdef weak_alias
weak_alias (__strnlen, strnlen) weak_alias (__strnlen, strnlen)
+2 -2
View File
@@ -47,11 +47,11 @@ void free ();
#endif #endif
#ifndef HAVE_DONE_WORKING_MALLOC_CHECK #ifndef HAVE_DONE_WORKING_MALLOC_CHECK
you must run the autoconf test for a properly working malloc -- see malloc.m4 "you must run the autoconf test for a properly working malloc -- see malloc.m4"
#endif #endif
#ifndef HAVE_DONE_WORKING_REALLOC_CHECK #ifndef HAVE_DONE_WORKING_REALLOC_CHECK
you must run the autoconf test for a properly working realloc -- see realloc.m4 "you must run the autoconf test for a properly working realloc --see realloc.m4"
#endif #endif
/* Exit value when the requested amount of memory is not available. /* Exit value when the requested amount of memory is not available.
+4 -5
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -132,9 +133,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu m4/Makefile $(AUTOMAKE) --gnu m4/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
+2 -2
View File
@@ -1,8 +1,8 @@
#serial 3 #serial 4
dnl From Paul Eggert. dnl From Paul Eggert.
AC_DEFUN(AC_C_BACKSLASH_A, AC_DEFUN([AC_C_BACKSLASH_A],
[ [
AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a,
[AC_TRY_COMPILE([], [AC_TRY_COMPILE([],
+5 -4
View File
@@ -1,12 +1,13 @@
#serial 1 #serial 4
dnl FIXME: put these prerequisite-only *.m4 files in a separate dnl FIXME: put these prerequisite-only *.m4 files in a separate
dnl directory -- otherwise, they'll conflict with existing files. dnl directory -- otherwise, they'll conflict with existing files.
dnl These are the prerequisite macros for GNU's error.c file. dnl These are the prerequisite macros for GNU's error.c file.
AC_DEFUN(jm_PREREQ_ERROR, AC_DEFUN([jm_PREREQ_ERROR],
[ [
AC_CHECK_FUNCS(strerror strerror_r vprintf doprnt) AC_CHECK_FUNCS(strerror vprintf doprnt)
AC_HEADER_STDC AC_CHECK_DECLS([strerror])
AC_FUNC_STRERROR_R AC_FUNC_STRERROR_R
AC_HEADER_STDC
]) ])
+7 -5
View File
@@ -3,10 +3,12 @@
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 10 # serial 10
@@ -241,7 +243,7 @@ return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", ""
dnl Found it, now check the version. dnl Found it, now check the version.
AC_MSG_CHECKING([version of bison]) AC_MSG_CHECKING([version of bison])
changequote(<<,>>)dnl changequote(<<,>>)dnl
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
+6 -4
View File
@@ -3,10 +3,12 @@
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 2 # serial 2
+6 -7
View File
@@ -1,16 +1,16 @@
#serial 3 #serial 5
dnl From Jim Meyering. dnl From Jim Meyering.
dnl Determine whether malloc accepts 0 as its argument. dnl Determine whether malloc accepts 0 as its argument.
dnl If it doesn't, arrange to use the replacement function. dnl If it doesn't, arrange to use the replacement function.
dnl dnl
AC_DEFUN(jm_FUNC_MALLOC, AC_DEFUN([jm_FUNC_MALLOC],
[ [
dnl xmalloc.c requires that this symbol be defined so it doesn't dnl xmalloc.c requires that this symbol be defined so it doesn't
dnl mistakenly use a broken malloc -- as it might if this test were omitted. dnl mistakenly use a broken malloc -- as it might if this test were omitted.
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_MALLOC_CHECK, 1, AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1,
[Define if the malloc check has been performed. ]) [Define if the malloc check has been performed. ])
AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc, AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc,
[AC_TRY_RUN([ [AC_TRY_RUN([
@@ -27,9 +27,8 @@ AC_DEFUN(jm_FUNC_MALLOC,
jm_cv_func_working_malloc=no) jm_cv_func_working_malloc=no)
]) ])
if test $jm_cv_func_working_malloc = no; then if test $jm_cv_func_working_malloc = no; then
AC_SUBST(LIBOBJS) AC_LIBOBJ(malloc)
LIBOBJS="$LIBOBJS malloc.$ac_objext" AC_DEFINE(malloc, rpl_malloc,
AC_DEFINE_UNQUOTED(malloc, rpl_malloc,
[Define to rpl_malloc if the replacement function should be used.]) [Define to rpl_malloc if the replacement function should be used.])
fi fi
]) ])
+2 -2
View File
@@ -1,4 +1,4 @@
# serial 8 # serial 9
# From Paul Eggert. # From Paul Eggert.
@@ -10,7 +10,7 @@
# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits # (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits
# a syntax error in wchar.h due to the use of undefined __int32_t. # a syntax error in wchar.h due to the use of undefined __int32_t.
AC_DEFUN(AC_MBSTATE_T, AC_DEFUN([AC_MBSTATE_T],
[ [
AC_CHECK_HEADERS(stdlib.h) AC_CHECK_HEADERS(stdlib.h)
+6 -4
View File
@@ -3,10 +3,12 @@
# #
# This file can be copied and used freely without restrictions. It can # This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU General Public # be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext # License or the GNU Library General Public License but which still want
# functionality. # to provide support for the GNU gettext functionality.
# Please note that the actual code of GNU gettext is covered by the GNU # Please note that the actual code of the GNU gettext library is covered
# General Public License and is *not* in the public domain. # by the GNU Library General Public License, and the rest of the GNU
# gettext package package is covered by the GNU General Public License.
# They are *not* in the public domain.
# serial 2 # serial 2
+6 -7
View File
@@ -1,16 +1,16 @@
#serial 3 #serial 5
dnl From Jim Meyering. dnl From Jim Meyering.
dnl Determine whether realloc works when both arguments are 0. dnl Determine whether realloc works when both arguments are 0.
dnl If it doesn't, arrange to use the replacement function. dnl If it doesn't, arrange to use the replacement function.
dnl dnl
AC_DEFUN(jm_FUNC_REALLOC, AC_DEFUN([jm_FUNC_REALLOC],
[ [
dnl xmalloc.c requires that this symbol be defined so it doesn't dnl xmalloc.c requires that this symbol be defined so it doesn't
dnl mistakenly use a broken realloc -- as it might if this test were omitted. dnl mistakenly use a broken realloc -- as it might if this test were omitted.
AC_DEFINE_UNQUOTED(HAVE_DONE_WORKING_REALLOC_CHECK, 1, AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1,
[Define if the realloc check has been performed. ]) [Define if the realloc check has been performed. ])
AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc, AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc,
[AC_TRY_RUN([ [AC_TRY_RUN([
@@ -27,9 +27,8 @@ AC_DEFUN(jm_FUNC_REALLOC,
jm_cv_func_working_realloc=no) jm_cv_func_working_realloc=no)
]) ])
if test $jm_cv_func_working_realloc = no; then if test $jm_cv_func_working_realloc = no; then
AC_SUBST(LIBOBJS) AC_LIBOBJ(realloc)
LIBOBJS="$LIBOBJS realloc.$ac_objext" AC_DEFINE(realloc, rpl_realloc,
AC_DEFINE_UNQUOTED(realloc, rpl_realloc,
[Define to rpl_realloc if the replacement function should be used.]) [Define to rpl_realloc if the replacement function should be used.])
fi fi
]) ])
+38 -45
View File
@@ -1,9 +1,23 @@
#serial 1002 #serial 1003
# Experimental replacement for the function in the latest CVS autoconf. # Experimental replacement for the function in the latest CVS autoconf.
# If the compile-test says strerror_r doesn't work, then resort to a
# `run'-test that works on BeOS and segfaults on DEC Unix.
# Use with the error.c file in ../lib. # Use with the error.c file in ../lib.
# 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. */
undefine([AC_FUNC_STRERROR_R]) undefine([AC_FUNC_STRERROR_R])
# AC_FUNC_STRERROR_R # AC_FUNC_STRERROR_R
@@ -11,56 +25,35 @@ undefine([AC_FUNC_STRERROR_R])
AC_DEFUN([AC_FUNC_STRERROR_R], AC_DEFUN([AC_FUNC_STRERROR_R],
[AC_CHECK_DECLS([strerror_r]) [AC_CHECK_DECLS([strerror_r])
AC_CHECK_FUNCS([strerror_r]) AC_CHECK_FUNCS([strerror_r])
if test $ac_cv_func_strerror_r = yes; then AC_CACHE_CHECK([whether strerror_r returns char *],
AC_CHECK_HEADERS(string.h) ac_cv_func_strerror_r_char_p,
AC_CACHE_CHECK([for working strerror_r],
ac_cv_func_strerror_r_works,
[ [
AC_TRY_COMPILE( ac_cv_func_strerror_r_char_p=no
[ if test $ac_cv_have_decl_strerror_r = yes; then
# include <stdio.h> AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
# if HAVE_STRING_H [[
# include <string.h> char buf[100];
# endif char x = *strerror_r (0, buf, sizeof buf);
], char *p = strerror_r (0, buf, sizeof buf);
[ ]])],
char buf[100]; ac_cv_func_strerror_r_char_p=yes)
char x = *strerror_r (0, buf, sizeof buf); else
], # strerror_r is not declared. Choose between
ac_cv_func_strerror_r_works=yes,
ac_cv_func_strerror_r_works=no
)
if test $ac_cv_func_strerror_r_works = no; then
# strerror_r seems not to work, but now we have to choose between
# systems that have relatively inaccessible declarations for the # systems that have relatively inaccessible declarations for the
# function. BeOS and DEC UNIX 4.0 fall in this category, but the # function. BeOS and DEC UNIX 4.0 fall in this category, but the
# former has a strerror_r that returns char*, while the latter # former has a strerror_r that returns char*, while the latter
# has a strerror_r that returns `int'. # has a strerror_r that returns `int'.
# This test should segfault on the DEC system. # This test should segfault on the DEC system.
AC_TRY_RUN( AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
[ extern char *strerror_r ();],
# include <stdio.h> [[char buf[100];
# include <string.h>
# include <ctype.h>
extern char *strerror_r ();
int
main ()
{
char buf[100];
char x = *strerror_r (0, buf, sizeof buf); char x = *strerror_r (0, buf, sizeof buf);
exit (!isalpha (x)); exit (!isalpha (x));]])],
} ac_cv_func_strerror_r_char_p=yes, , :)
],
ac_cv_func_strerror_r_works=yes,
ac_cv_func_strerror_r_works=no,
ac_cv_func_strerror_r_works=no)
fi fi
]) ])
if test $ac_cv_func_strerror_r_works = yes; then if test $ac_cv_func_strerror_r_char_p = yes; then
AC_DEFINE_UNQUOTED(HAVE_WORKING_STRERROR_R, 1, AC_DEFINE([STRERROR_R_CHAR_P], 1,
[Define to 1 if `strerror_r' returns a string.]) [Define to 1 if strerror_r returns char *.])
fi
fi fi
])# AC_FUNC_STRERROR_R ])# AC_FUNC_STRERROR_R
-13
View File
@@ -1,16 +1,3 @@
2001-10-10 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-10-10 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
2001-10-09 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40.
* cat-id-tbl.c: Remove file.
2001-09-27 gettextize <[email protected]> 2001-09-27 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.40. * Makefile.in.in: Upgrade to gettext-0.10.40.
-2
View File
@@ -1,13 +1,11 @@
src/LR0.c src/LR0.c
src/complain.c src/complain.c
src/conflicts.c src/conflicts.c
src/derives.c
src/files.c src/files.c
src/getargs.c src/getargs.c
src/lalr.c src/lalr.c
src/lex.c src/lex.c
src/main.c src/main.c
src/nullable.c
src/output.c src/output.c
src/print.c src/print.c
src/print_graph.c src/print_graph.c
BIN
View File
Binary file not shown.
+184 -169
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n" "PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
"Last-Translator: Ulrich Drepper <[email protected]>\n" "Last-Translator: Ulrich Drepper <[email protected]>\n"
"Language-Team: German <[email protected]>\n" "Language-Team: German <[email protected]>\n"
@@ -13,12 +13,12 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
@@ -31,77 +31,78 @@ msgstr ""
msgid "fatal error: " msgid "fatal error: "
msgstr "fataler Fehler: %s\n" msgstr "fataler Fehler: %s\n"
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n" msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "durch Reduzierung gelöst" msgstr "durch Reduzierung gelöst"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "durch Schieben gelöst" msgstr "durch Schieben gelöst"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "als Fehler betrachtet" msgstr "als Fehler betrachtet"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 Schiebe/Reduziere Konflikt" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:432
msgid " and"
msgstr " und" msgstr " und"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 Reduziere/Reduziere Konflikt" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d Reduziere/Reduziere Konflikte"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d Reduziere/Reduziere Konflikte"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "Zustand %d enthält" msgstr "Zustand %d enthält"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "Konflikte: " msgstr "Konflikte: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d Schiebe/Reduziere" msgstr " %d Schiebe/Reduziere"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d Reduziere/Reduziere" msgstr " %d Reduziere/Reduziere"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s enthält" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n" msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -110,52 +111,43 @@ msgstr ""
" $default\treduziere mit Regel %d (%s)\n" " $default\treduziere mit Regel %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduziere mit Tegel %d (%s)\n" msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
#: src/derives.c:43 #: src/files.c:143
msgid "DERIVES"
msgstr ""
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s leitet ab"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr ""
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr ""
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -163,7 +155,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -175,162 +167,168 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: keine Grammatik-Datei angegeben\n" msgstr "%s: keine Grammatik-Datei angegeben\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n" msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert" msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "unbeendeter Kommentar" msgstr "unbeendeter Kommentar"
#: src/lex.c:139 #: src/lex.c:137
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Datei endet unerwartet" msgstr "Datei endet unerwartet"
# Oder soll man den Begriff "Escapezeichen" verwenden? # Oder soll man den Begriff "Escapezeichen" verwenden?
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "nicht maskiertes Zeilenendezeichen in Konstante" msgstr "nicht maskiertes Zeilenendezeichen in Konstante"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«" msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«" msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«" msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "unerwarteter Typname am Ende der Datei" msgstr "unerwarteter Typname am Ende der Datei"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "unerwarteter Typname" msgstr "unerwarteter Typname"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden" msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: die Option »%s« erfordert ein Argument\n"
#: src/main.c:128
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "interner Fehler, %s\n" msgstr "interner Fehler, %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "Führe »set_nullable« aus"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale Tabellengröße (%s) überschritten" msgstr "maximale Tabellengröße (%s) überschritten"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " Typ %d ist %s\n" msgstr " Typ %d ist %s\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (Regel %d)" msgstr " (Regel %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\takzeptiere\n" msgstr " $default\takzeptiere\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " KEINE AKTIONEN\n" msgstr " KEINE AKTIONEN\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tgehe zu Zustand %d über\n" msgstr " $ \tgehe zu Zustand %d über\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n" msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tFehler (nicht assoziativ)\n" msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgehe zu Zustand %d über\n" msgstr " %-4s\tgehe zu Zustand %d über\n"
#: src/print.c:199 #: src/print.c:185
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -340,24 +338,24 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Grammatik\n" "Grammatik\n"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "Regel %-4d %s ->" msgstr "Regel %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -365,7 +363,7 @@ msgstr ""
"Terminale und die Regeln un denen sie verwendet werden\n" "Terminale und die Regeln un denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:268 #: src/print.c:255
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -373,20 +371,29 @@ msgstr ""
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n" "Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " auf der linken Seite:" msgstr " auf der linken Seite:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " auf der rechten Seite:" msgstr " auf der rechten Seite:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tFehler (nicht assoziativ)\n" msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, fuzzy, c-format #, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
@@ -451,7 +458,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "Symbol %s noch einmal definiert" msgstr "Symbol %s noch einmal definiert"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "erneute Deklaration des Typs für %s" msgstr "erneute Deklaration des Typs für %s"
@@ -461,12 +468,12 @@ msgstr "erneute Deklaration des Typs f
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "»%s« ist in %s nicht erlaubt" msgstr "»%s« ist in %s nicht erlaubt"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "mehr als eine %start Deklaration" msgstr "mehr als eine %start Deklaration"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ungültige %start Deklaration" msgstr "ungültige %start Deklaration"
@@ -495,137 +502,137 @@ msgstr "unzul
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "unerwartetes Symbol: %s" msgstr "unerwartetes Symbol: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "»{« hat kein Gegenstück" msgstr "»{« hat kein Gegenstück"
#: src/reader.c:792 #: src/reader.c:798
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "Argument von %expect ist keine ganze Zahl" msgstr "Argument von %expect ist keine ganze Zahl"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet" msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "hier wird eine Zeichenkette erwartet, nicht %s" msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "unbekannt: %s" msgstr "unbekannt: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "keine Eingabe-Grammatik" msgstr "keine Eingabe-Grammatik"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "unbekanntes Zeichen: %s" msgstr "unbekanntes Zeichen: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "unbeendeter %%guard Fall" msgstr "unbeendeter %%guard Fall"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "" msgstr ""
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon " "falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
"gefolgt" "gefolgt"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an" msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "Regel für %s vorhanden, welches aber ein Token ist" msgstr "Regel für %s vorhanden, welches aber ein Token ist"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "zwei @prec Anweisungen nacheinander" msgstr "zwei @prec Anweisungen nacheinander"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "" msgstr ""
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben" "%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Zwei Aktionen am Ende einer Regel" msgstr "Zwei Aktionen am Ende einer Regel"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion" msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion" msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ungültige Eingabe: %s" msgstr "ungültige Eingabe: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s" msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln" msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine " "Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
"Regel" "Regel"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "assoc Werte für %s nd %s widersprechen sich"
#: src/reader.c:1770
#, fuzzy, c-format #, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "Token %s und %s haben die selbe nummer %s" msgstr "Token %s und %s haben die selbe nummer %s"
#: src/reader.c:1782 #: 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:1799
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "assoc Werte für %s nd %s widersprechen sich"
#: src/reader.c:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "das Startsymbol %s ist undefiniert" msgstr "das Startsymbol %s ist undefiniert"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "das Startsymbol %s ist ein Token" msgstr "das Startsymbol %s ist ein Token"
#: src/reduce.c:401 #: src/reduce.c:400
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Nutzlose Nicht-Terminale:\n" "Nutzlose Nicht-Terminale:\n"
"\n" "\n"
#: src/reduce.c:416 #: src/reduce.c:414
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -634,7 +641,7 @@ msgstr ""
"Nicht genutzte Terminale:\n" "Nicht genutzte Terminale:\n"
"\n" "\n"
#: src/reduce.c:427 #: src/reduce.c:425
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -643,7 +650,7 @@ msgstr ""
"Ungenutzte Regeln:\n" "Ungenutzte Regeln:\n"
"\n" "\n"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -653,11 +660,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Wert Sprec Sassoc Tag\n" msgstr "Wert Sprec Sassoc Tag\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -667,7 +674,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -682,11 +689,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d wurde niemals reduziert\n" msgstr "%d wurde niemals reduziert\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s enthält "
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -701,81 +703,73 @@ msgstr " und "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d ungenutzte Regel" msgstr "%d ungenutzte Regel"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten" msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: die Option »%s« ist nicht eindeutig\n" msgstr "%s: die Option »%s« ist nicht eindeutig\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: die Option »--%s« erlaubt kein Argument\n" msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: die Option »%c%s« erlaubt kein Argument\n" msgstr "%s: die Option »%c%s« erlaubt kein Argument\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: die Option »%s« erfordert ein Argument\n" msgstr "%s: die Option »%s« erfordert ein Argument\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: unbekannte Option »--%s«\n" msgstr "%s: unbekannte Option »--%s«\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: unbekannte Option »%c%s«\n" msgstr "%s: unbekannte Option »%c%s«\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: die Option ist nicht erlaubt -- %c\n" msgstr "%s: die Option ist nicht erlaubt -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: ungültige Option -- %c\n" msgstr "%s: ungültige Option -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: die Option benötigt ein Argument -- %c\n" msgstr "%s: die Option benötigt ein Argument -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: die Option »%s« ist nicht eindeutig\n" msgstr "%s: die Option »%s« ist nicht eindeutig\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: die Option »--%s« erlaubt kein Argument\n" msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
#, fuzzy #, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: Hauptspeicher erschöpft\n" msgstr "%s: Hauptspeicher erschöpft\n"
@@ -802,6 +796,18 @@ msgstr ""
msgid "'" msgid "'"
msgstr "" 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 "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -833,6 +839,9 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "Grenze von %d erreicht, zu viele %s" #~ msgstr "Grenze von %d erreicht, zu viele %s"
#~ msgid "Entering set_nullable"
#~ msgstr "Führe »set_nullable« aus"
#~ msgid "\t\t/* empty */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* leer */" #~ msgstr "\t\t/* leer */"
@@ -859,3 +868,9 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "falsch geformte %type Deklaration" #~ msgstr "falsch geformte %type Deklaration"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
#~ "Produktionen.\n"
BIN
View File
Binary file not shown.
+208 -186
View File
@@ -30,7 +30,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.25\n" "Project-Id-Version: GNU bison 1.25\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 1998-09-21 10:19+0200\n" "PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <[email protected]>\n" "Last-Translator: Nicolás García-Pedrajas <[email protected]>\n"
"Language-Team: Spanish <[email protected]>\n" "Language-Team: Spanish <[email protected]>\n"
@@ -38,12 +38,12 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
@@ -63,55 +63,50 @@ msgstr ""
msgid "fatal error: " msgid "fatal error: "
msgstr "error grave: %s\n" msgstr "error grave: %s\n"
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve " "El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
"como %s.\n" "como %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "reduce" msgstr "reduce"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "desplaza" msgstr "desplaza"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "un error" msgstr "un error"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 conflicto desplazamiento/reducción" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:432
msgid " and"
msgstr " y" msgstr " y"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 conflicto reducción/reducción" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d conflictos reducción/reducción"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d conflictos reducción/reducción"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "El estado %d contiene" msgstr "El estado %d contiene"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictos: " msgstr "conflictos: "
@@ -127,7 +122,7 @@ msgstr "conflictos: "
# ok # ok
# ngp # ngp
# #
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)" msgstr " %d desplazamiento(s)/reducción(ones)"
@@ -144,22 +139,28 @@ msgstr " %d desplazamiento(s)/reducci
# #
# ok # ok
# ngp # ngp
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reducción(ones)/reducción(ones)" msgstr " %d reducción(ones)/reducción(ones)"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s contiene" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduce usando la regla %d (%s)]\n" msgstr " %-4s\t[reduce usando la regla %d (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -168,57 +169,43 @@ msgstr ""
" $default\treduce usando la regla %d (%s)\n" " $default\treduce usando la regla %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduce usando la regla %d (%s)\n" msgstr " %-4s\treduce usando la regla %d (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
#: src/derives.c:43 #: src/files.c:143
#, fuzzy
msgid "DERIVES"
msgstr ""
"\n"
"\n"
"\n"
"DERIVACIONES\n"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s deriva"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr ""
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr ""
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -226,7 +213,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -238,172 +225,178 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
# Me parece menos "computadora" decir "ningún fichero de gramática" - cll # Me parece menos "computadora" decir "ningún fichero de gramática" - cll
# #
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: no se ha especificado ningún fichero de gramática\n" msgstr "%s: no se ha especificado ningún fichero de gramática\n"
# Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv # Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv
#: src/getargs.c:249 #: src/getargs.c:250
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n" msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
# to ignore no es ignorar. Pon otra cosa, please. sv # to ignore no es ignorar. Pon otra cosa, please. sv
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta" msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "comentario sin terminar" msgstr "comentario sin terminar"
#: src/lex.c:139 #: src/lex.c:137
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Fin de fichero inesperado" msgstr "Fin de fichero inesperado"
# ¿unescaped? # ¿unescaped?
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "salto de línea en constante sin secuencia de escape" msgstr "salto de línea en constante sin secuencia de escape"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "valor octal fuera del rango 0...255: `\\%o'" msgstr "valor octal fuera del rango 0...255: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "valor hexadecimal mayor que 255: `\\x%x'" msgstr "valor hexadecimal mayor que 255: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "secuencia de escape desconocida: `\\' seguido de `%s'" msgstr "secuencia de escape desconocida: `\\' seguido de `%s'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "nombre de tipo sin terminar al final del fichero" msgstr "nombre de tipo sin terminar al final del fichero"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "nombre de tipo sin terminar" msgstr "nombre de tipo sin terminar"
# ¿multicarácter o multicaracteres? sv # ¿multicarácter o multicaracteres? sv
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "use \"...\" para terminales literales multicarácter" msgstr "use \"...\" para terminales literales multicarácter"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: 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:128
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n" msgstr "error interno, %s\n"
#: src/nullable.c:51
msgid "Entering set_nullable"
msgstr "Entrando set_nullable"
# Únicamente cambio la posición del adjetivo `máximo'. En vez de después # Únicamente cambio la posición del adjetivo `máximo'. En vez de después
# de `tabla', después de `tamaño' - cll # de `tabla', después de `tamaño' - cll
# en inglés era así, pero quizás en español sea mejor como dices # en inglés era así, pero quizás en español sea mejor como dices
# ngp # ngp
# #
#: src/output.c:986 #: src/output.c:979
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "excedido el tamaño máximo de la tabla (%s)" msgstr "excedido el tamaño máximo de la tabla (%s)"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " el tipo %d es %s\n" msgstr " el tipo %d es %s\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regla %d)" msgstr " (regla %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taceptar\n" msgstr " $default\taceptar\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " SIN ACCIONES\n" msgstr " SIN ACCIONES\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tir al estado %d\n" msgstr " $ \tir al estado %d\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdesplazar e ir al estado %d\n" msgstr " %-4s\tdesplazar e ir al estado %d\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terror (no asociativo)\n" msgstr " %-4s\terror (no asociativo)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tir al estado %d\n" msgstr " %-4s\tir al estado %d\n"
#: src/print.c:199 #: src/print.c:185
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -413,24 +406,24 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Gramática\n" "Gramática\n"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "regla %-4d %s ->" msgstr "regla %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -438,27 +431,36 @@ msgstr ""
"Terminales con las reglas donde aparecen\n" "Terminales con las reglas donde aparecen\n"
"\n" "\n"
#: src/print.c:268 #: src/print.c:255
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
"\n" "\n"
"No terminales con las reglas donde aparecen\n" "No terminales con las reglas donde aparecen\n"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " en la izquierda:" msgstr " en la izquierda:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " en la derecha:" msgstr " en la derecha:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\terror (no asociativo)\n" msgstr " %-4s\terror (no asociativo)\n"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, fuzzy, c-format #, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
@@ -523,7 +525,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "redefinido el símbolo %s" msgstr "redefinido el símbolo %s"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "redeclaración del tipo de %s" msgstr "redeclaración del tipo de %s"
@@ -533,12 +535,12 @@ msgstr "redeclaraci
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' no es válido en %s" msgstr "`%s' no es válido en %s"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %start" msgstr "múltiples declaraciones de %start"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "declaración de %start no válida" msgstr "declaración de %start no válida"
@@ -577,12 +579,12 @@ msgid "unexpected item: %s"
msgstr "ítem inesperado: %s" msgstr "ítem inesperado: %s"
# Cambio el orden y el sexo. Ahora está "en español". sv # Cambio el orden y el sexo. Ahora está "en español". sv
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "`{' desemparejada" msgstr "`{' desemparejada"
#: src/reader.c:792 #: src/reader.c:798
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "el argumento de %expect no es un entero" msgstr "el argumento de %expect no es un entero"
@@ -593,26 +595,26 @@ msgstr "el argumento de %expect no es un entero"
# - cll # - cll
# ok - ngp # ok - ngp
# #
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "no se reconoce el ítem %s, se esperaba un identificador" msgstr "no se reconoce el ítem %s, se esperaba un identificador"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "se esperaba una cadena constante en lugar de %s" msgstr "se esperaba una cadena constante en lugar de %s"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "no reconocido: %s" msgstr "no reconocido: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "no hay gramática de entrada" msgstr "no hay gramática de entrada"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "carácter desconocido: %s" msgstr "carácter desconocido: %s"
@@ -621,105 +623,105 @@ msgstr "car
# mejor que `sin terminar' que me parece más "computerizado" - cll # mejor que `sin terminar' que me parece más "computerizado" - cll
# quizás un poco cacofónico lo de claúsula inconclusa - ngp # quizás un poco cacofónico lo de claúsula inconclusa - ngp
# #
#: src/reader.c:1183 #: src/reader.c:1192
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "cláusula %%guard sin terminar" msgstr "cláusula %%guard sin terminar"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "regla mal formada: el símbolo inicial no está seguido por :" msgstr "regla mal formada: el símbolo inicial no está seguido por :"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "la gramática comienza con una barra vertical" msgstr "la gramática comienza con una barra vertical"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "se ha dado una regla para %s, que es un terminal" msgstr "se ha dado una regla para %s, que es un terminal"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "dos @prec en una línea" msgstr "dos @prec en una línea"
# Insisto, el empleo de participios a secas me parece como hablar en # Insisto, el empleo de participios a secas me parece como hablar en
# indio. Por favor, permíteme que añada un "está" :) - cll # indio. Por favor, permíteme que añada un "está" :) - cll
# ok - ngp # ok - ngp
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard presente pero %%semantic_parser está sin especificar" msgstr "%%guard presente pero %%semantic_parser está sin especificar"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "dos acciones al final de una regla" msgstr "dos acciones al final de una regla"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto" msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción" msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "entrada no válida: %s" msgstr "entrada no válida: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "demasiados símbolos (terminales y no terminales); máximo %s" msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "no hay reglas en la gramática de entrada" msgstr "no hay reglas en la gramática de entrada"
# `token' se debe traducir como `literal' - cll # `token' se debe traducir como `literal' - cll
# en terminología de compiladores token es más un terminal - ngp # en terminología de compiladores token es más un terminal - ngp
# #
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"se usa el símbolo %s, pero no está definido como terminal y no tiene reglas" "se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "conflicto de valores assoc para %s y %s"
#: src/reader.c:1770
#, fuzzy, c-format #, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "los terminales %s y %s tienen asignados ambos el número %s" msgstr "los terminales %s y %s tienen asignados ambos el número %s"
#: src/reader.c:1782 #: src/reader.c:1787
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s"
#: 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:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "el símbolo de inicio (axioma) %s no está definido" msgstr "el símbolo de inicio (axioma) %s no está definido"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "el símbolo de inicio (axioma) %s es un terminal" msgstr "el símbolo de inicio (axioma) %s es un terminal"
#: src/reduce.c:401 #: src/reduce.c:400
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"No terminales sin uso:\n" "No terminales sin uso:\n"
"\n" "\n"
#: src/reduce.c:416 #: src/reduce.c:414
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -728,7 +730,7 @@ msgstr ""
"Terminales que no se usan:\n" "Terminales que no se usan:\n"
"\n" "\n"
#: src/reduce.c:427 #: src/reduce.c:425
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -737,7 +739,7 @@ msgstr ""
"Reglas sin uso:\n" "Reglas sin uso:\n"
"\n" "\n"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -747,11 +749,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Valor Sprec Sasoc Tag\n" msgstr "Valor Sprec Sasoc Tag\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -761,7 +763,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -776,11 +778,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d reglas que nunca se han reducido\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 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -795,60 +792,40 @@ msgstr " y "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d regla%s sin uso" msgstr "%d regla%s sin uso"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia" msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
# ¡¡No sé cómo resolver el problema!! #: lib/getopt.c:694
#
# 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: la opción `%s' es ambigua\n" msgstr "%s: la opción `%s' es ambigua\n"
# Pongo esto como en otros .po. sv # Pongo esto como en otros .po. sv
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: la opción `--%s' no admite ningún argumento\n" msgstr "%s: la opción `--%s' no admite ningún argumento\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: la opción `%c%s' no admite ningún argumento\n" msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: la opción `%s' requiere un argumento\n" msgstr "%s: la opción `%s' requiere un argumento\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opción `--%s' no reconocida\n" msgstr "%s: opción `--%s' no reconocida\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opción `%c%s' no reconocida\n" msgstr "%s: opción `%c%s' no reconocida\n"
@@ -871,7 +848,7 @@ msgstr "%s: opci
# a la cárcel (como mucho se cuelgan, je, je, 0ff0 :-). sv # a la cárcel (como mucho se cuelgan, je, je, 0ff0 :-). sv
# #
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: opción -- %c ilegal\n" msgstr "%s: opción -- %c ilegal\n"
@@ -881,31 +858,31 @@ msgstr "%s: opci
# Porque Enrique decía que le recordaba a disminuidos físicos. # Porque Enrique decía que le recordaba a disminuidos físicos.
# Francamente, no creo que haya que andar con estas "fobias". # Francamente, no creo que haya que andar con estas "fobias".
# Pongo inválida. sv # Pongo inválida. sv
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: opción -- %c inválida\n" msgstr "%s: opción -- %c inválida\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opción -- %c requiere un argumento\n" msgstr "%s: la opción -- %c requiere un argumento\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: la opción `%s' es ambigua\n" msgstr "%s: la opción `%s' es ambigua\n"
# Pongo esto como en otros .po. sv # Pongo esto como en otros .po. sv
#: lib/getopt.c:880 #: lib/getopt.c:899
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: la opción `--%s' no admite ningún argumento\n" msgstr "%s: la opción `--%s' no admite ningún argumento\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
#, fuzzy #, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: memoria agotada\n" msgstr "%s: memoria agotada\n"
@@ -983,6 +960,30 @@ msgstr ""
#~ "\n" #~ "\n"
#~ "%s deriva\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 "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -1025,6 +1026,9 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "excedido el límite de %d, demasiados %s" #~ msgstr "excedido el límite de %d, demasiados %s"
#~ msgid "Entering set_nullable"
#~ msgstr "Entrando set_nullable"
# Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por # Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por
# el contrario, pudiera cualquiera de los casos, debieras traducirlo # el contrario, pudiera cualquiera de los casos, debieras traducirlo
# como `vacía/o' - cll # como `vacía/o' - cll
@@ -1060,3 +1064,21 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "declaración %type incorrectamente formada" #~ msgstr "declaración %type incorrectamente formada"
# ¡¡No sé cómo resolver el problema!!
#
# Como corrector, me veo obligado a hacer una corrección ¡¡a tu comentario!!:
#
# ¡¡No sé cómo resolver el problema!!
#
# Esto es: `cómo' va acentuado y, además, `problema' podría ser hebreo,
# pero no español - cll
#
# Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y
# usar participios - cll
# un error lo tiene cualquiera - ngp
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion"
#~ "%s.\n"
BIN
View File
Binary file not shown.
+182 -180
View File
@@ -4,21 +4,21 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.28d\n" "Project-Id-Version: bison 1.30b\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 2001-08-29 17:06+02:00\n" "PO-Revision-Date: 2001-11-13 10:42+02:00\n"
"Last-Translator: Toomas Soome <[email protected]>\n" "Last-Translator: Toomas Soome <[email protected]>\n"
"Language-Team: Estonian <[email protected]>\n" "Language-Team: Estonian <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "liiga palju olekuid (maks %d)" msgstr "liiga palju olekuid (maks %d)"
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Tundmatu süsteemi viga" msgstr "Tundmatu süsteemi viga"
@@ -30,77 +30,80 @@ msgstr "hoiatus: "
msgid "fatal error: " msgid "fatal error: "
msgstr "fataalne viga: " msgstr "fataalne viga: "
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n" msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "redutseerimine" msgstr "redutseerimine"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "nihutamine" msgstr "nihutamine"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "viga" msgstr "viga"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, c-format
msgstr " 1 nihutamine/redutseerimine konflikt" 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 #: src/conflicts.c:426
#, c-format #, c-format
msgid " %d shift/reduce conflicts" msgid "State %d contains "
msgstr " %d nihutamine/redutseerimine konflikti" msgstr "Olek %d sisaldab "
#: 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"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "konfliktid: " msgstr "konfliktid: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d nihutamine/redutseerimine" msgstr " %d nihutamine/redutseerimine"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d redutseerimine/redutseerimine" msgstr " %d redutseerimine/redutseerimine"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s sisaldab" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n" msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -109,46 +112,37 @@ msgstr ""
" $default\tredutseerin kasutades reeglit %d (%s)\n" " $default\tredutseerin kasutades reeglit %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n" msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n" msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
#: src/derives.c:43 #: src/files.c:143
msgid "DERIVES"
msgstr "DERIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s derives"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "faili `%s' ei saa avada" msgstr "faili `%s' ei saa avada"
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "faili ei õnnestu sulgeda" msgstr "faili ei õnnestu sulgeda"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n" msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kasuta: %s [VÕTI]...FAIL\n" msgstr "Kasuta: %s [VÕTI]...FAIL\n"
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
@@ -156,7 +150,7 @@ msgstr ""
"Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n" "Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n"
"ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n" "ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n"
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -168,7 +162,7 @@ msgstr ""
" -V, --version esita versiooniinfo ja lõpeta töö\n" " -V, --version esita versiooniinfo ja lõpeta töö\n"
" -y, --yacc emuleeri POSIX yacc\n" " -y, --yacc emuleeri POSIX yacc\n"
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -188,14 +182,14 @@ msgstr ""
" -n, --no-parser genereeri ainult tabelid\n" " -n, --no-parser genereeri ainult tabelid\n"
" -k, --token-table lisa ka sümbolite nimede tabel\n" " -k, --token-table lisa ka sümbolite nimede tabel\n"
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
"Väljund:\n" "Väljund:\n"
@@ -205,25 +199,25 @@ msgstr ""
" -o, --output-file=FAIL jäta väljund FAILi\n" " -o, --output-file=FAIL jäta väljund FAILi\n"
" -g, --graph loo automaadi kirjeldus VCG graafina\n" " -g, --graph loo automaadi kirjeldus VCG graafina\n"
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "Teatage palun vigadest aadressil <[email protected]>.\n" msgstr "Teatage palun vigadest aadressil <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, " "Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
"Inc.\n" "Inc.\n"
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -231,168 +225,183 @@ msgstr ""
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n" "See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n" "PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' ei ole enam toetatud" msgstr "`%s' ei ole enam toetatud"
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Lisainfo saamiseks proovige `%s --help'.\n" msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: puudub grammatikafail\n" msgstr "%s: puudub grammatikafail\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignoreerin lisaargumente peale `%s'\n" msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "liiga palju gotosid (maks %d)" msgstr "liiga palju gotosid (maks %d)"
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "leidsin ja ignoreerin ootamatu `/'" msgstr "leidsin ja ignoreerin ootamatu `/'"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "lõpetamata kommentaar" msgstr "lõpetamata kommentaar"
#: src/lex.c:139 #: src/lex.c:137
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "ootamatu faililõpp" msgstr "ootamatu faililõpp"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "paojadata reavahetus konstandis" msgstr "paojadata reavahetus konstandis"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "kaheksandväärtus väljaspool piire 0...255: `\\%o'" msgstr "kaheksandväärtus väljaspool piire 0...255: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "kuueteistkümnendväärtus suurem, kui above 255: `\\x%x'" msgstr "kuueteistkümnendväärtus suurem, kui above 255: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "tundmatu paojada: `\\' järgneb `%s'" msgstr "tundmatu paojada: `\\' järgneb `%s'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "lõpetamata tüübinimi faili lõpus" msgstr "lõpetamata tüübinimi faili lõpus"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "lõpetamata tüübinimi" msgstr "lõpetamata tüübinimi"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni" msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr "`%s' ei toeta argumente: %s"
#: src/lex.c:683
#, c-format
msgid "`%s' requires an argument"
msgstr "võti `%s' nõuab argumenti"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: sisemine viga: %s\n" msgstr "%s: sisemine viga: %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "Entering set_nullable"
#: src/output.c:986
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ületati maksimaalset tabelisuurust (%d)" msgstr "ületati maksimaalset tabelisuurust (%d)"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " tüüp %d on %s\n" msgstr " tüüp %d on %s\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (reegel %d)" msgstr " (reegel %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taktsepteerin\n" msgstr " $default\taktsepteerin\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " TEGEVUSI POLE\n" msgstr " TEGEVUSI POLE\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tliigu olekule %d\n" msgstr " $ \tliigu olekule %d\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tnihuta ja liigu olekule %d\n" msgstr " %-4s\tnihuta ja liigu olekule %d\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n" msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tliigu olekule %d\n" msgstr " %-4s\tliigu olekule %d\n"
#: src/print.c:199 #: src/print.c:185
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "olek %d" msgstr "olek %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
msgid "Grammar" msgid "Grammar"
msgstr "Grammatika" msgstr "Grammatika"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "reegel %-4d %s ->" msgstr "reegel %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr "tühi"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad" msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
#: src/print.c:268 #: src/print.c:255
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad" msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " vasakul:" msgstr " vasakul:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " paremal:" msgstr " paremal:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tviga (mitteassotsiatiivne)" msgstr "%-4s\tviga (mitteassotsiatiivne)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\tredutseerin kasutades reeglit %d (%s)" msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
@@ -457,7 +466,7 @@ msgstr "s
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "sümbol %s on uuesti defineeritud" msgstr "sümbol %s on uuesti defineeritud"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s tüübi uuesti deklareerimine" msgstr "%s tüübi uuesti deklareerimine"
@@ -467,12 +476,12 @@ msgstr "%s t
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' ei ole %s sees lubatud" msgstr "`%s' ei ole %s sees lubatud"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "korduvad %s deklaratsioonid" msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "vigane %s deklaratsioon" msgstr "vigane %s deklaratsioon"
@@ -501,139 +510,139 @@ msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ootamatu element: %s" msgstr "ootamatu element: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "puudub %s" msgstr "puudub %s"
#: src/reader.c:792 #: src/reader.c:798
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "%%expect argument ei ole täisarv" msgstr "%%expect argument ei ole täisarv"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "tundmatu element %s, eeldasin identifikaatorit" msgstr "tundmatu element %s, eeldasin identifikaatorit"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "eeldasin %s asemel sõnekonstanti" msgstr "eeldasin %s asemel sõnekonstanti"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tundmatu: %s" msgstr "tundmatu: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "sisendgrammatikat pole" msgstr "sisendgrammatikat pole"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "tundmatu sümbol: %s" msgstr "tundmatu sümbol: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "lõpetamata %guard klausel" msgstr "lõpetamata %guard klausel"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit" msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "grammatika algab püstkriipsuga" msgstr "grammatika algab püstkriipsuga"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s jaoks on antud reegel, aga see on märk" msgstr "%s jaoks on antud reegel, aga see on märk"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "kaks @prec ühel real" msgstr "kaks @prec ühel real"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard on määratud, aga %%semantic_parser ei ole" msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "kaks tegevust ühe reegli lõpus" msgstr "kaks tegevust ühe reegli lõpus"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')" msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus" msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "vigane sisend: %s" msgstr "vigane sisend: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d" msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "sisendgrammatikas pole reegleid" msgstr "sisendgrammatikas pole reegleid"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad " "kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
"reeglid" "reeglid"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "%s ja %s omavad konfliktseid prioriteete"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
#: src/reader.c:1770
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "märkidele %s ja %s on mõlemale omistatud number %d" msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
#: src/reader.c:1782 #: src/reader.c:1787
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "%s ja %s omavad konfliktseid prioriteete"
#: 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:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "stardisümbol %s ei ole defineeritud" msgstr "stardisümbol %s ei ole defineeritud"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "stardisümbol %s on märk" msgstr "stardisümbol %s on märk"
#: src/reduce.c:401 #: src/reduce.c:400
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Kasutamata mitteterminalid:" msgstr "Kasutamata mitteterminalid:"
#: src/reduce.c:416 #: src/reduce.c:414
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Terminalid, mida ei kasutatud:" msgstr "Terminalid, mida ei kasutatud:"
#: src/reduce.c:427 #: src/reduce.c:425
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Kasutamata reeglid:" msgstr "Kasutamata reeglid:"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -643,11 +652,11 @@ msgstr ""
"--------\n" "--------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Value Sprec Sassoc Tag\n" msgstr "Value Sprec Sassoc Tag\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -657,7 +666,7 @@ msgstr ""
"-------\n" "-------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -672,11 +681,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d reeglit ei redutseeritud\n" msgstr "%d reeglit ei redutseeritud\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s sisaldab "
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -691,81 +695,73 @@ msgstr " ja "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d kasutamata reeglit%s" msgstr "%d kasutamata reeglit%s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset" msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: võti `%s' on segane\n" msgstr "%s: võti `%s' on segane\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: võti `--%s' ei luba argumenti\n" msgstr "%s: võti `--%s' ei luba argumenti\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: võti `%c%s' ei luba argumenti\n" msgstr "%s: võti `%c%s' ei luba argumenti\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: võti `%s' nõuab argumenti\n" msgstr "%s: võti `%s' nõuab argumenti\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: tundmatu võti `--%s'\n" msgstr "%s: tundmatu võti `--%s'\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: tundmatu võti `%c%s'\n" msgstr "%s: tundmatu võti `%c%s'\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: lubamatu võti -- %c\n" msgstr "%s: lubamatu võti -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: vigane võti -- %c\n" msgstr "%s: vigane võti -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: võti nõuab argumenti -- %c\n" msgstr "%s: võti nõuab argumenti -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: võti `-W %s' on segane\n" msgstr "%s: võti `-W %s' on segane\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: võti `-W %s' ei luba argumenti\n" msgstr "%s: võti `-W %s' ei luba argumenti\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
msgid "memory exhausted" msgid "memory exhausted"
msgstr "mälu on otsas" msgstr "mälu on otsas"
@@ -791,11 +787,17 @@ msgstr "`"
msgid "'" msgid "'"
msgstr "'" msgstr "'"
#~ msgid "\t\t/* empty */" #~ msgid "DERIVES"
#~ msgstr "\t\t/* tühi */" #~ msgstr "DERIVES"
#~ msgid "multiple %%header_extension declarations" #~ msgid "%s derives"
#~ msgstr "korduvad %%header_extension eklaratsioonid" #~ msgstr "%s derives"
#~ msgid "multiple %%source_extension declarations" #~ msgid "Entering set_nullable"
#~ msgstr "korduvad %%source_extension deklaratsioonid" #~ 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"
BIN
View File
Binary file not shown.
+201 -184
View File
@@ -5,21 +5,21 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28d\n" "Project-Id-Version: GNU bison 1.30c\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 2001-08-29 20:00-0500\n" "PO-Revision-Date: 2001-11-19 12:00-0500\n"
"Last-Translator: Michel Robitaille <[email protected]>\n" "Last-Translator: Michel Robitaille <[email protected]>\n"
"Language-Team: French <[email protected]>\n" "Language-Team: French <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "nombre trop grand d'états (max %d)" msgstr "nombre trop grand d'états (max %d)"
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Erreur système inconnue" msgstr "Erreur système inconnue"
@@ -31,78 +31,78 @@ msgstr "AVERTISSEMENT: "
msgid "fatal error: " msgid "fatal error: "
msgstr "erreur fatale: " msgstr "erreur fatale: "
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n" "Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "réduction" msgstr "réduction"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "décalage" msgstr "décalage"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "une erreur" msgstr "une erreur"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, c-format
msgstr " 1 conflit décalage/réduction" 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 #: src/conflicts.c:426
#, c-format #, c-format
msgid " %d shift/reduce conflicts" msgid "State %d contains "
msgstr " %d conflits décalage/réduction" msgstr "L'état %d contient "
#: 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"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "conflits: " msgstr "conflits: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d décalage/réduction" msgstr " %d décalage/réduction"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d réduction/réduction" msgstr " %d réduction/réduction"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s contient" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[réduction par la règle %d (%s)\n" msgstr " %-4s\t[réduction par la règle %d (%s)\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -111,55 +111,46 @@ msgstr ""
" $défaut\tréduction par la règle %d (%s)\n" " $défaut\tréduction par la règle %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tréduction par la règle %d (%s)\n" msgstr " %-4s\tréduction par la règle %d (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $défaut\tréduction par la règle %d (%s)\n" msgstr " $défaut\tréduction par la règle %d (%s)\n"
#: src/derives.c:43 #: src/files.c:143
msgid "DERIVES"
msgstr "DÉRIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s dérive"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ne peut ouvrir le fichier `%s'" msgstr "ne peut ouvrir le fichier `%s'"
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "ne peut fermer le fichier" msgstr "ne peut fermer le fichier"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n" msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n"
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Usage: %s [OPTION]... FICHIER\n" msgstr "Usage: %s [OPTION]... FICHIER\n"
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
"Si une option de forme longue montre un paramètre comme étant obligatoire,\n" "Si une option de forme longue montre un arguement comme étant obligatoire,\n"
"il est alors obligatoire également pour une option de forme courte.\n" "il est alors obligatoire également pour une option de forme courte.\n"
"Il en est de même pour les paramètres optionnels.\n" "Il en est de même pour les arguments optionnels.\n"
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -171,7 +162,7 @@ msgstr ""
" -V, --version afficher le nom et la version du logiciel\n" " -V, --version afficher le nom et la version du logiciel\n"
" -y, --yacc émuler yacc en mode POSIX\n" " -y, --yacc émuler yacc en mode POSIX\n"
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -193,42 +184,42 @@ msgstr ""
" -r, --raw compter les jetons à partir de 3\n" " -r, --raw compter les jetons à partir de 3\n"
" -k, --token-table inclure la table des noms de jetons\n" " -k, --token-table inclure la table des noms de jetons\n"
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
"Sortie:\n" "Sortie:\n"
" -d, --defines produire un fichier d'en-tête\n" " -d, --defines produire un fichier d'en-tête\n"
" -v, --verbose produire une explication de l'automate\n" " -v, --verbose produire une explication de l'automate\n"
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n" " -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
" -o, --output-file=FICHIER produire la sortie dans le FICHIER\n" " -o, --output=FICHIER produire la sortie dans le FICHIER\n"
" -g, --graph produire aussi la description du graphe VCG de " " -g, --graph produire aussi la description du graphe VCG de "
"l'automate\n" "l'automate\n"
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "Rapporter toutes anomalies à <[email protected]>.\n" msgstr "Rapporter toutes anomalies à <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -237,168 +228,183 @@ msgstr ""
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n" "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n" "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' n'est plus supporté" msgstr "`%s' n'est plus supporté"
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Pour en savoir davantage, faites: `%s --help'.\n" msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: grammaire manquante\n" msgstr "%s: grammaire manquante\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: paramètres supplémentaires ignorés après `%s'\n" msgstr "%s: arguments supplémentaires ignorés après `%s'\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "nombre trop grand de \"goto\" (Max %d)" msgstr "nombre trop grand de \"goto\" (Max %d)"
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "`/' inattendu et ignoré" msgstr "`/' inattendu et ignoré"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "le commentaire ne se termine pas" msgstr "le commentaire ne se termine pas"
#: src/lex.c:139 #: src/lex.c:137
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Fin de fichier inattendue" msgstr "Fin de fichier inattendue"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "retour de chariot sans échappement dans une constante" msgstr "retour de chariot sans échappement dans une constante"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "valeur octale à l'extérieur de l'intervalle 0...255: \\%o" msgstr "valeur octale à l'extérieur de l'intervalle 0...255: \\%o"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "valeur hexadécimale supérieure à 255: \\x%x" msgstr "valeur hexadécimale supérieure à 255: \\x%x"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'" msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "le nom de type ne se termine pas avant la fin de fichier" msgstr "le nom de type ne se termine pas avant la fin de fichier"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "le nom de type ne se termine pas" msgstr "le nom de type ne se termine pas"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères" msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr "`%s' ne supporte aucun argument: %s"
#: src/lex.c:683
#, c-format
msgid "`%s' requires an argument"
msgstr "`%s': requiert un argument"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: erreur interne: %s\n" msgstr "%s: erreur interne: %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "Entré dans set_nullable"
#: src/output.c:986
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "taille maximale de la table (%d) dépassée" msgstr "taille maximale de la table (%d) dépassée"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " le type %d est %s\n" msgstr " le type %d est %s\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (règle %d)" msgstr " (règle %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $défaut\taccepter\n" msgstr " $défaut\taccepter\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " PAS D'ACTION\n" msgstr " PAS D'ACTION\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \taller à l'état %d\n" msgstr " $ \taller à l'état %d\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdécalage et aller à l'état %d\n" msgstr " %-4s\tdécalage et aller à l'état %d\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terreur (non-associatif)\n" msgstr " %-4s\terreur (non-associatif)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\taller à l'état %d\n" msgstr " %-4s\taller à l'état %d\n"
#: src/print.c:199 #: src/print.c:185
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "état %d" msgstr "état %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
msgid "Grammar" msgid "Grammar"
msgstr "Grammaire" msgstr "Grammaire"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "règle %-4d %s ->" msgstr "règle %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr "vide"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Terminaux, suivis des règles où ils apparaissent" msgstr "Terminaux, suivis des règles où ils apparaissent"
#: src/print.c:268 #: src/print.c:255
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Non-terminaux, suivis des règles où ils apparaissent" msgstr "Non-terminaux, suivis des règles où ils apparaissent"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " à gauche:" msgstr " à gauche:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " à droite:" msgstr " à droite:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\terreur (non-associatif)" msgstr "%-4s\terreur (non-associatif)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$défaut\tréduction par la règle %d (%s)" msgstr "$défaut\tréduction par la règle %d (%s)"
@@ -463,7 +469,7 @@ msgstr "symbole `%s' pr
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbole %s redéfini" msgstr "symbole %s redéfini"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "redéclaration du type de %s" msgstr "redéclaration du type de %s"
@@ -473,12 +479,12 @@ msgstr "red
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' n'est pas valide dans %s" msgstr "`%s' n'est pas valide dans %s"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "multiples déclarations %s" msgstr "multiples déclarations %s"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "la déclaration %s n'est pas valide" msgstr "la déclaration %s n'est pas valide"
@@ -508,139 +514,139 @@ msgstr ""
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "item inattendu: %s" msgstr "item inattendu: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "non appariement de %s" msgstr "non appariement de %s"
#: src/reader.c:792 #: src/reader.c:798
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "le paramètre de %%expect n'est pas un entier" msgstr "l'argument de %%expect n'est pas un entier"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "item %s non reconnu, un identificateur est attendu" msgstr "item %s non reconnu, un identificateur est attendu"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "chaîne de caractères constante attendue plutôt que %s" msgstr "chaîne de caractères constante attendue plutôt que %s"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "non reconnu: %s" msgstr "non reconnu: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "aucune grammaire en entrée" msgstr "aucune grammaire en entrée"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "caractère inconnu: %s" msgstr "caractère inconnu: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "clause %guard non terminée" msgstr "clause %guard non terminée"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'" msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "la grammaire débute par une barre verticale" msgstr "la grammaire débute par une barre verticale"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal" msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "deux @prec de suite" msgstr "deux @prec de suite"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié" msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "deux actions à la fin d'une même règle" msgstr "deux actions à la fin d'une même règle"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (`%s' `%s') pour l'action par défaut" msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action" msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "entrée non valide: %s" msgstr "entrée non valide: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (jeton plus non terminaux); maximum %d" msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles" msgstr "la grammaire n'a pas de règles"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas " "le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
"de règle" "de règle"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "les priorités pour %s et %s entrent en conflit"
#: src/reader.c:1724
#, 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:1770
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "les jetons %s et %s se sont vus assigner le nombre %d" msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
#: src/reader.c:1782 #: 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: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:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "le symbole de départ %s n'est pas défini" msgstr "le symbole de départ %s n'est pas défini"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "le symbole de départ %s est un terminal" msgstr "le symbole de départ %s est un terminal"
#: src/reduce.c:401 #: src/reduce.c:400
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Non-terminaux inutiles:" msgstr "Non-terminaux inutiles:"
#: src/reduce.c:416 #: src/reduce.c:414
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Terminaux non utilisés:" msgstr "Terminaux non utilisés:"
#: src/reduce.c:427 #: src/reduce.c:425
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Règles inutiles:" msgstr "Règles inutiles:"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -650,11 +656,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Valeur Spréc Sassoc Tag\n" msgstr "Valeur Spréc Sassoc Tag\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -664,7 +670,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -679,11 +685,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d règles jamais réduites\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 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -698,81 +699,73 @@ msgstr " et "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d règle(s) non productive(s)%s" msgstr "%d règle(s) non productive(s)%s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s" msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: l'option %s est ambigüe\n" msgstr "%s: l'option %s est ambigüe\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: l'option --%s n'admet pas de paramètre\n" msgstr "%s: l'option --%s n'admet pas d'argument\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'option %c%s n'admet pas de paramètre\n" msgstr "%s: l'option %c%s n'admet pas d'argument\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'option %s requiert un paramètre\n" msgstr "%s: l'option %s requiert un argument\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: l'option --%s est inconnue\n" msgstr "%s: l'option --%s est inconnue\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: l'option %c%s est inconnue\n" msgstr "%s: l'option %c%s est inconnue\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: option illégale -- %c\n" msgstr "%s: option illégale -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: option non valide -- %c\n" msgstr "%s: option non valide -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'option requiert un paramètre -- %c\n" msgstr "%s: l'option requiert un argument -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'option `-W %s' est ambiguë\n" msgstr "%s: l'option `-W %s' est ambiguë\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'option `-W %s' n'admet pas de paramètre\n" msgstr "%s: l'option `-W %s' n'admet pas d'argument\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
msgid "memory exhausted" msgid "memory exhausted"
msgstr "mémoire épuisée" msgstr "mémoire épuisée"
@@ -798,6 +791,30 @@ msgstr "`"
msgid "'" msgid "'"
msgstr "'" 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 */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* epsilon */" #~ msgstr "\t\t/* epsilon */"
BIN
View File
Binary file not shown.
+197 -175
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28\n" "Project-Id-Version: GNU bison 1.28\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 1999-09-28 21:10+0900\n" "PO-Revision-Date: 1999-09-28 21:10+0900\n"
"Last-Translator: Daisuke Yamashita <[email protected]>\n" "Last-Translator: Daisuke Yamashita <[email protected]>\n"
"Language-Team: Japanese <[email protected]>\n" "Language-Team: Japanese <[email protected]>\n"
@@ -13,12 +13,12 @@ msgstr ""
"Content-Type: text/plain; charset=EUC-JP\n" "Content-Type: text/plain; charset=EUC-JP\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "%s の数が多すぎます (最大 %d)"
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
@@ -31,77 +31,78 @@ msgstr ""
msgid "fatal error: " msgid "fatal error: "
msgstr "%s: 致命的エラー: " msgstr "%s: 致命的エラー: "
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n" msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "還元" msgstr "還元"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "シフト" msgstr "シフト"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "エラー" msgstr "エラー"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 シフト/還元衝突" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d シフト/還元衝突"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d シフト/還元衝突"
#: src/conflicts.c:432
msgid " and"
msgstr " および" msgstr " および"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 還元/還元衝突" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d 還元/還元衝突"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d 還元/還元衝突"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "状態 %d が含むのは" msgstr "状態 %d が含むのは"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "衝突: " msgstr "衝突: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d シフト/還元" msgstr " %d シフト/還元"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d 還元/還元" msgstr " %d 還元/還元"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s には" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n" msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -110,58 +111,43 @@ msgstr ""
" $default\t規則 %d を利用して還元 (%s)\n" " $default\t規則 %d を利用して還元 (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n" msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
#: src/derives.c:43 #: src/files.c:143
#, fuzzy
msgid "DERIVES"
msgstr ""
"\n"
"\n"
"\n"
"DERIVES\n"
"\n"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s は以下から派生"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr ""
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr ""
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -169,7 +155,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -181,161 +167,167 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: 文法ファイルが指定されていません\n" msgstr "%s: 文法ファイルが指定されていません\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n" msgstr "%s: '%s' より後ろの余分な引数は無視されました\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "%s の数が多すぎます (最大 %d)"
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "予期しない `/' が見つかり、無視されました" msgstr "予期しない `/' が見つかり、無視されました"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "閉じていないコメントです" msgstr "閉じていないコメントです"
#: src/lex.c:139 #: src/lex.c:137
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "予期しないファイルの終端です" msgstr "予期しないファイルの終端です"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "定数の中にエスケープされていない改行があります" msgstr "定数の中にエスケープされていない改行があります"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "8 進数の値が 0...255 の範囲外です: `\\%o'" msgstr "8 進数の値が 0...255 の範囲外です: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "16 進数の値が 255 を越えています: `\\x%x'" msgstr "16 進数の値が 255 を越えています: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "未知のエスケープシーケンス: `\\' の後に `%s'" msgstr "未知のエスケープシーケンス: `\\' の後に `%s'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "閉じられていないタイプ名が、ファイル末尾にあります" msgstr "閉じられていないタイプ名が、ファイル末尾にあります"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "閉じられていないタイプ名があります" msgstr "閉じられていないタイプ名があります"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう" msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: オプション `%s' は引数を要求します\n"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: 内部エラー: %s\n" msgstr "%s: 内部エラー: %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "set_nullable に入ります"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "最大テーブルサイズ (%s) を超えました" msgstr "最大テーブルサイズ (%s) を超えました"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " タイプ %d は %s です\n" msgstr " タイプ %d は %s です\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (規則 %d)" msgstr " (規則 %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taccept\n" msgstr " $default\taccept\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " 動作無し\n" msgstr " 動作無し\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \t状態 %d へ\n" msgstr " $ \t状態 %d へ\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tシフト、および状態 %d へ\n" msgstr " %-4s\tシフト、および状態 %d へ\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tエラー (非結合)\n" msgstr " %-4s\tエラー (非結合)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\t状態 %d へ\n" msgstr " %-4s\t状態 %d へ\n"
#: src/print.c:199 #: src/print.c:185
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -345,24 +337,24 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"文法\n" "文法\n"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "規則 %-4d %s ->" msgstr "規則 %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -370,7 +362,7 @@ msgstr ""
"終端トークン、およびそこに現れた規則\n" "終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:268 #: src/print.c:255
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -378,20 +370,29 @@ msgstr ""
"非終端トークン、およびそこに現れた規則\n" "非終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " 左辺:" msgstr " 左辺:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " 右辺:" msgstr " 右辺:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, fuzzy, c-format #, fuzzy, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tエラー (非結合)\n" msgstr " %-4s\tエラー (非結合)\n"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, fuzzy, c-format #, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
@@ -456,7 +457,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "シンボル %s が再定義されました" msgstr "シンボル %s が再定義されました"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s の型が再定義されました" msgstr "%s の型が再定義されました"
@@ -466,12 +467,12 @@ msgstr "%s
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "%2$s 内の `%1$s' は無効です" msgstr "%2$s 内の `%1$s' は無効です"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "複数の %start が宣言されました" msgstr "複数の %start が宣言されました"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "無効な %start が宣言されました" msgstr "無効な %start が宣言されました"
@@ -500,134 +501,134 @@ msgstr "̵
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "予期せぬアイテム: %s" msgstr "予期せぬアイテム: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "対応のない `{' です" msgstr "対応のない `{' です"
#: src/reader.c:792 #: src/reader.c:798
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "%expect の引数が整数値ではありません" msgstr "%expect の引数が整数値ではありません"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "認識できないアイテム %s、ここでは識別子が期待されます" msgstr "認識できないアイテム %s、ここでは識別子が期待されます"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "ここでは %s ではなく文字列定数が期待されます" msgstr "ここでは %s ではなく文字列定数が期待されます"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "認識できない: %s" msgstr "認識できない: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "文法の入力が無い" msgstr "文法の入力が無い"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "未知の文字: %s" msgstr "未知の文字: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "閉じられていない %%guard 節です" msgstr "閉じられていない %%guard 節です"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません" msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "文法は縦棒 (|) で始めます" msgstr "文法は縦棒 (|) で始めます"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "%s に規則が与えられ、それはトークンとなります" msgstr "%s に規則が与えられ、それはトークンとなります"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています" msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard がありますが %%semantic_parser が指定されていません" msgstr "%%guard がありますが %%semantic_parser が指定されていません"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "一つの規則の終りに二つの動作を指定しています" msgstr "一つの規則の終りに二つの動作を指定しています"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します" msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません" msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "無効な入力: %s" msgstr "無効な入力: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s" msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません" msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま" "シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
"せん" "せん"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "先行している %s と %s で競合が生じています"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "非結合値 %s と %s で競合が生じています"
#: src/reader.c:1770
#, fuzzy, c-format #, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました" msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
#: src/reader.c:1782 #: src/reader.c:1787
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "先行している %s と %s で競合が生じています"
#: src/reader.c:1799
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "非結合値 %s と %s で競合が生じています"
#: src/reader.c:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "開始シンボル %s は定義されていません" msgstr "開始シンボル %s は定義されていません"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "開始シンボル %s はトークンです" msgstr "開始シンボル %s はトークンです"
#: src/reduce.c:401 #: src/reduce.c:400
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"不使用非終端子:\n" "不使用非終端子:\n"
"\n" "\n"
#: src/reduce.c:416 #: src/reduce.c:414
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -636,7 +637,7 @@ msgstr ""
"利用されない終端子:\n" "利用されない終端子:\n"
"\n" "\n"
#: src/reduce.c:427 #: src/reduce.c:425
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -645,7 +646,7 @@ msgstr ""
"不使用規則:\n" "不使用規則:\n"
"\n" "\n"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -655,11 +656,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "値 前置 結合 タグ\n" msgstr "値 前置 結合 タグ\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -669,7 +670,7 @@ msgstr ""
"-----\n" "-----\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -684,11 +685,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d 個の規則は決して還元されません\n" msgstr "%d 個の規則は決して還元されません\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s には"
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -703,81 +699,73 @@ msgstr "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d 個の不使用規則%.0s" msgstr "%d 個の不使用規則%.0s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "開始シンボル %s はどの文にも由来しません" msgstr "開始シンボル %s はどの文にも由来しません"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: オプション `%s' は曖昧です\n" msgstr "%s: オプション `%s' は曖昧です\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: オプション `--%s' は引数を許しません\n" msgstr "%s: オプション `--%s' は引数を許しません\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: オプション `%c%s' は引数を許しません\n" msgstr "%s: オプション `%c%s' は引数を許しません\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: オプション `%s' は引数を要求します\n" msgstr "%s: オプション `%s' は引数を要求します\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: 認識できないオプション `--%s' です\n" msgstr "%s: 認識できないオプション `--%s' です\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: 認識できないオプション `%c%s' です\n" msgstr "%s: 認識できないオプション `%c%s' です\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: 定格外のオプション -- %c\n" msgstr "%s: 定格外のオプション -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: 無効なオプション -- %c\n" msgstr "%s: 無効なオプション -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: オプションは引数を要求します -- %c\n" msgstr "%s: オプションは引数を要求します -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: オプション `-W %s' は曖昧です\n" msgstr "%s: オプション `-W %s' は曖昧です\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: オプション `-W %s' は引数を許しません\n" msgstr "%s: オプション `-W %s' は引数を許しません\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
#, fuzzy #, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: メモリを使い果たしました\n" msgstr "%s: メモリを使い果たしました\n"
@@ -850,6 +838,31 @@ msgstr ""
#~ "%s は以下から派生\n" #~ "%s は以下から派生\n"
#~ "\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 "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -881,6 +894,9 @@ msgstr ""
#~ msgid "%s:%d: " #~ msgid "%s:%d: "
#~ msgstr "%s:%d: " #~ msgstr "%s:%d: "
#~ msgid "Entering set_nullable"
#~ msgstr "set_nullable に入ります"
#~ msgid "\t\t/* empty */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* 空 */" #~ msgstr "\t\t/* 空 */"
@@ -907,3 +923,9 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "邪悪な %type 宣言です" #~ msgstr "邪悪な %type 宣言です"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0s"
#~ "が定義されました\n"
BIN
View File
Binary file not shown.
+196 -174
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n" "PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
"Last-Translator: Erick Branderhorst <[email protected]>\n" "Last-Translator: Erick Branderhorst <[email protected]>\n"
"Language-Team: Dutch <[email protected]>\n" "Language-Team: Dutch <[email protected]>\n"
@@ -13,12 +13,12 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
@@ -31,77 +31,78 @@ msgstr ""
msgid "fatal error: " msgid "fatal error: "
msgstr "fatale fout: %s\n" msgstr "fatale fout: %s\n"
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n" msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "reduceer" msgstr "reduceer"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "verschuif" msgstr "verschuif"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "een fout" msgstr "een fout"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 verschuif/reduceer conflict" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d verschuif/reduceer conflicten"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d verschuif/reduceer conflicten"
#: src/conflicts.c:432
msgid " and"
msgstr " en" msgstr " en"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 reduceer/reduceer conflict" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d reduceer/reduceer conflicten"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d reduceer/reduceer conflicten"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "Stadium %d bevat" msgstr "Stadium %d bevat"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictueerd: " msgstr "conflictueerd: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d vershuif/reduceer" msgstr " %d vershuif/reduceer"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reduceer/reduceer" msgstr " %d reduceer/reduceer"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s bevat" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n" msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -110,58 +111,43 @@ msgstr ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/derives.c:43 #: src/files.c:143
#, 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:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr ""
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr ""
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -169,7 +155,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -181,161 +167,167 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
#: src/getargs.c:116 #: src/getargs.c:117
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr ""
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: geen grammatica bestand gegeven\n" msgstr "%s: geen grammatica bestand gegeven\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argumenten genegeerd na '%s'\n" msgstr "%s: extra argumenten genegeerd na '%s'\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "onverwachte `/' gevonden en genegeerd" msgstr "onverwachte `/' gevonden en genegeerd"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ongetermineerd commentaar" msgstr "ongetermineerd commentaar"
#: src/lex.c:139 #: src/lex.c:137
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Onverwacht bestandseinde" msgstr "Onverwacht bestandseinde"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "niet geescapete nieuwe regel in constante" msgstr "niet geescapete nieuwe regel in constante"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "octale waarde buiten domein 0...255: `\\%o'" msgstr "octale waarde buiten domein 0...255: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "hexadecimale waarde boven 255: `\\x%x'" msgstr "hexadecimale waarde boven 255: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "onbekende escape reeks: `\\' gevolgd door `%s'" msgstr "onbekende escape reeks: `\\' gevolgd door `%s'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "niet getermineerd type naam aan het einde van bestand" msgstr "niet getermineerd type naam aan het einde van bestand"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "niet getermineerd type naam" msgstr "niet getermineerd type naam"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "gebruik \"...\" voor meerdere karakters literal tekens" msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: optie `%s' vereist een argument\n"
#: src/main.c:128
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "interne fout, %s\n" msgstr "interne fout, %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "Inkomende set nullable"
#: src/output.c:986
#, fuzzy, c-format #, fuzzy, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale tabel grootte (%s) overschreden" msgstr "maximale tabel grootte (%s) overschreden"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr "" msgstr ""
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regel %d)" msgstr " (regel %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr "" msgstr ""
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " GEEN AKTIES\n" msgstr " GEEN AKTIES\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr "" msgstr ""
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr "" msgstr ""
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr "" msgstr ""
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr "" msgstr ""
#: src/print.c:199 #: src/print.c:185
#, fuzzy, c-format #, fuzzy, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr ""
@@ -345,24 +337,24 @@ msgstr ""
"\n" "\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
#, fuzzy #, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr ""
"\n" "\n"
"Grammatica\n" "Grammatica\n"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "regel %-4d %s ->" msgstr "regel %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
#, fuzzy #, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr ""
@@ -370,7 +362,7 @@ msgstr ""
"Terminals, met regels waar ze voorkomen\n" "Terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:268 #: src/print.c:255
#, fuzzy #, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr ""
@@ -378,20 +370,29 @@ msgstr ""
"Geen terminals, met regels waar ze voorkomen\n" "Geen terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " links:" msgstr " links:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " rechts:" msgstr " rechts:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "" msgstr ""
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, fuzzy, c-format #, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "" msgstr ""
@@ -458,7 +459,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbool %s opnieuw gedefinieerd" msgstr "symbool %s opnieuw gedefinieerd"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "type herdeclaratie voor %s" msgstr "type herdeclaratie voor %s"
@@ -468,12 +469,12 @@ msgstr "type herdeclaratie voor %s"
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' is onjuist in %s" msgstr "`%s' is onjuist in %s"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, fuzzy, c-format #, fuzzy, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "meerdere %start declaraties" msgstr "meerdere %start declaraties"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "onjuiste %start declaratie" msgstr "onjuiste %start declaratie"
@@ -502,135 +503,135 @@ msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "onbekend item: %s" msgstr "onbekend item: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "niet overeenkomstige `{'" msgstr "niet overeenkomstige `{'"
#: src/reader.c:792 #: src/reader.c:798
#, fuzzy, c-format #, fuzzy, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "argument van %expect is niet een integer" msgstr "argument van %expect is niet een integer"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "onbekend item %s, verwacht een identifier" msgstr "onbekend item %s, verwacht een identifier"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "verwacht string constante in plaats van %s" msgstr "verwacht string constante in plaats van %s"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "onbekend: %s" msgstr "onbekend: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "geen invoer grammatica" msgstr "geen invoer grammatica"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "onbekend karakter: %s" msgstr "onbekend karakter: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "niet getermineerde %%guard voorwaarde" msgstr "niet getermineerde %%guard voorwaarde"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "" msgstr ""
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt" "slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "grammatica start met een verticale bar" msgstr "grammatica start met een verticale bar"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "regel geven voor %s, welke een teken is" msgstr "regel geven voor %s, welke een teken is"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "twee @prec's in een regel" msgstr "twee @prec's in een regel"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd" msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "twee akties aan het einde van een regel" msgstr "twee akties aan het einde van een regel"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "type clash (`%s' `%s') bij standaard aktie" msgstr "type clash (`%s' `%s') bij standaard aktie"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "lege regel voor getypte niet terminal, en geen aktie" msgstr "lege regel voor getypte niet terminal, en geen aktie"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ongeldige invoer: %s" msgstr "ongeldige invoer: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, fuzzy, c-format #, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "te veel symbolen (tekens plus nietterminals); maximum %s" msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "geen regels voor invoer grammatica" msgstr "geen regels voor invoer grammatica"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n" "symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
"heeft geen regels" "heeft geen regels"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "conflictuerende associatieve waarden voor %s en %s"
#: src/reader.c:1770
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "" msgstr ""
#: src/reader.c:1782 #: src/reader.c:1787
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s"
#: 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:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "" msgstr ""
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "het start symbool %s is een token" msgstr "het start symbool %s is een token"
#: src/reduce.c:401 #: src/reduce.c:400
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Onbruikbare niet terminals:\n" "Onbruikbare niet terminals:\n"
"\n" "\n"
#: src/reduce.c:416 #: src/reduce.c:414
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -639,7 +640,7 @@ msgstr ""
"Terminals welke niet worden gebruikt:\n" "Terminals welke niet worden gebruikt:\n"
"\n" "\n"
#: src/reduce.c:427 #: src/reduce.c:425
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -648,7 +649,7 @@ msgstr ""
"Onbruikbare regels:\n" "Onbruikbare regels:\n"
"\n" "\n"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -658,11 +659,11 @@ msgstr ""
"----------\n" "----------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Waarde Sprec Sassoc Tag\n" msgstr "Waarde Sprec Sassoc Tag\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -672,7 +673,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -687,11 +688,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d regels nooit gereduceerd\n" msgstr "%d regels nooit gereduceerd\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s bevat"
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -706,81 +702,73 @@ msgstr " en "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d onbruikbare regels%s" msgstr "%d onbruikbare regels%s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Start symbool %s is niet afkomstig uit een zin" msgstr "Start symbool %s is niet afkomstig uit een zin"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: optie `%s' is niet eenduidig\n" msgstr "%s: optie `%s' is niet eenduidig\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: optie `--%s' staat geen argument toe\n" msgstr "%s: optie `--%s' staat geen argument toe\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: optie `%c%s' staat geen argument toe\n" msgstr "%s: optie `%c%s' staat geen argument toe\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: optie `%s' vereist een argument\n" msgstr "%s: optie `%s' vereist een argument\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: onbekende optie `--%s'\n" msgstr "%s: onbekende optie `--%s'\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: onbekende optie `%c%s'\n" msgstr "%s: onbekende optie `%c%s'\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: ongeldige optie -- %c\n" msgstr "%s: ongeldige optie -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: onjuiste optie -- %c\n" msgstr "%s: onjuiste optie -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: optie vereist een argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: optie `%s' is niet eenduidig\n" msgstr "%s: optie `%s' is niet eenduidig\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: optie `--%s' staat geen argument toe\n" msgstr "%s: optie `--%s' staat geen argument toe\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
#, fuzzy #, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: geen geheugen meer beschikbaar\n" msgstr "%s: geen geheugen meer beschikbaar\n"
@@ -853,6 +841,31 @@ msgstr ""
#~ "%s afgeleiden\n" #~ "%s afgeleiden\n"
#~ "\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 "" #~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n" #~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
@@ -883,6 +896,9 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "limiet van %d overschreden, te veel %s" #~ msgstr "limiet van %d overschreden, te veel %s"
#~ msgid "Entering set_nullable"
#~ msgstr "Inkomende set nullable"
#~ msgid "unterminated comment in `%{' definition" #~ msgid "unterminated comment in `%{' definition"
#~ msgstr "niet getermineerd commentaar in `%{' definitie" #~ msgstr "niet getermineerd commentaar in `%{' definitie"
@@ -906,3 +922,9 @@ msgstr ""
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "slecht geformuleerde %type declaratie" #~ msgstr "slecht geformuleerde %type declaratie"
#~ msgid ""
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ "gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d "
#~ "productie%s.\n"
BIN
View File
Binary file not shown.
+188 -169
View File
@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.29\n" "Project-Id-Version: bison 1.29\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 2001-09-09 13:49+04:00\n" "PO-Revision-Date: 2001-09-09 13:49+04:00\n"
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n" "Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
"Language-Team: Russian <[email protected]>\n" "Language-Team: Russian <[email protected]>\n"
@@ -13,12 +13,12 @@ msgstr ""
"Content-Type: text/plain; charset=koi8-r\n" "Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8-bit\n" "Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
@@ -30,78 +30,79 @@ msgstr "
msgid "fatal error: " msgid "fatal error: "
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: " msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n" "ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "×Ù×ÏÄ" msgstr "×Ù×ÏÄ"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "ÓÄ×ÉÇ" msgstr "ÓÄ×ÉÇ"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "ÏÛÉÂËÁ" msgstr "ÏÛÉÂËÁ"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:432
msgid " and"
msgstr " É" msgstr " É"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ" msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "ËÏÎÆÌÉËÔÙ: " msgstr "ËÏÎÆÌÉËÔÙ: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ" msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ" msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s ÓÏÄÅÒÖÉÔ" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n" msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -110,46 +111,37 @@ msgstr ""
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/derives.c:43 #: src/files.c:143
msgid "DERIVES"
msgstr "DERIVES"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n" msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n"
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n" msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n"
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
@@ -158,7 +150,7 @@ msgstr ""
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n" "Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
"ÁÒÇÕÍÅÎÔÏ×.\n" "ÁÒÇÕÍÅÎÔÏ×.\n"
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
@@ -170,7 +162,7 @@ msgstr ""
" -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n" " -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n" " -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -190,14 +182,15 @@ msgstr ""
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n" " -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n" " -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
#: src/getargs.c:116 #: src/getargs.c:117
#, fuzzy
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
"÷Ù×ÏÄ:\n" "÷Ù×ÏÄ:\n"
@@ -208,24 +201,24 @@ msgstr ""
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n" " -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
"VCG-ÇÒÁÆÁ\n" "VCG-ÇÒÁÆÁ\n"
#: src/getargs.c:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <[email protected]>.\n" msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -236,168 +229,183 @@ msgstr ""
"ðòéçïäîïóôé\n" "ðòéçïäîïóôé\n"
"äìñ ïðòåäåìåîîïê ãåìé.\n" "äìñ ïðòåäåìåîîïê ãåìé.\n"
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n" msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n" msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n" msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
#: src/lalr.c:311 #: src/lalr.c:293
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'" msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
#: src/lex.c:139 #: src/lex.c:137
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ" msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
#: src/lex.c:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'" msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'" msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'" msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/lex.c:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ" msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
#: src/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n" msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "÷ÈÏÄ × set_nullable"
#: src/output.c:986
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)" msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n" msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (ÐÒÁ×ÉÌÏ %d)" msgstr " (ÐÒÁ×ÉÌÏ %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tÐÒÉÎÑÔÉÅ\n" msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " îåô äåêóô÷éê\n" msgstr " îåô äåêóô÷éê\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n" msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:199 #: src/print.c:185
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "ÓÏÓÔÏÑÎÉÅ %d" msgstr "ÓÏÓÔÏÑÎÉÅ %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
msgid "Grammar" msgid "Grammar"
msgstr "çÒÁÍÍÁÔÉËÁ" msgstr "çÒÁÍÍÁÔÉËÁ"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->" msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:268 #: src/print.c:255
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ" msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " ÎÁÌÅ×Ï:" msgstr " ÎÁÌÅ×Ï:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:" msgstr " ÎÁÐÒÁ×Ï:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)" msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)" msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
@@ -462,7 +470,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
@@ -472,12 +480,12 @@ msgstr "
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s" msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s" msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
@@ -506,138 +514,138 @@ msgstr "
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "ÎÅÐÁÒÎÁÑ %s" msgstr "ÎÅÐÁÒÎÁÑ %s"
#: src/reader.c:792 #: src/reader.c:798
#, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ" msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
#: src/reader.c:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ" msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ" msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ" msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
#: src/reader.c:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ" msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ" msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ" msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ" msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ" msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ" msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ" "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s" msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ" msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ" msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1724
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1770
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d" msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
#: src/reader.c:1782 #: src/reader.c:1787
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1799
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ" msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ" msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reduce.c:401 #: src/reduce.c:400
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:416 #: src/reduce.c:414
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:" msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
#: src/reduce.c:427 #: src/reduce.c:425
msgid "Useless rules:" msgid "Useless rules:"
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -647,11 +655,11 @@ msgstr ""
"----------\n" "----------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n" msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -661,7 +669,7 @@ msgstr ""
"-------\n" "-------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -676,11 +684,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n" msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s ÓÏÄÅÒÖÉÔ "
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -695,81 +698,73 @@ msgstr "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s" msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ" msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n" msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n" msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n" msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n" msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n" msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: ËÌÀÞ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ -- %c\n" msgstr "%s: ËÌÀÞ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `-W %s'\n" msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `-W %s'\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
msgid "memory exhausted" msgid "memory exhausted"
msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ" msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
@@ -795,6 +790,24 @@ msgstr "`"
msgid "'" msgid "'"
msgstr "'" 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 */" #~ msgid "\t\t/* empty */"
#~ msgstr "\t\t/* ÐÕÓÔÏ */" #~ msgstr "\t\t/* ÐÕÓÔÏ */"
@@ -804,5 +817,11 @@ msgstr "'"
#~ msgid "multiple %%source_extension declarations" #~ msgid "multiple %%source_extension declarations"
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension" #~ 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" #~ msgid "@%s is invalid"
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s" #~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
+815
View File
@@ -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"
+214 -237
View File
@@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.28c\n" "Project-Id-Version: bison 1.30\n"
"POT-Creation-Date: 2001-10-02 18:30+0200\n" "POT-Creation-Date: 2001-11-20 14:16+0100\n"
"PO-Revision-Date: 2001-09-10 10:54GMT\n" "PO-Revision-Date: 2001-11-02 14:49GMT\n"
"Last-Translator: Altug Bayram <[email protected]>\n" "Last-Translator: Altug Bayram <[email protected]>\n"
"Language-Team: Turkish <[email protected]>\n" "Language-Team: Turkish <[email protected]>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -14,12 +14,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 0.9.5\n" "X-Generator: KBabel 0.9.5\n"
#: src/LR0.c:207 #: src/LR0.c:189
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "çok fazla durum (en fazla %d)" msgstr "çok fazla durum (en fazla %d)"
#: lib/error.c:117 src/complain.c:96 #: lib/error.c:128 lib/error.c:156 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "Bilinmeyen sistem hatasý" msgstr "Bilinmeyen sistem hatasý"
@@ -31,79 +31,80 @@ msgstr "uyar
msgid "fatal error: " msgid "fatal error: "
msgstr "ölümcül hata:" msgstr "ölümcül hata:"
#: src/conflicts.c:48 #: src/conflicts.c:45
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s " "%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s "
"olarakçözümlendi.\n" "olarakçözümlendi.\n"
#: src/conflicts.c:114 src/conflicts.c:137 #: src/conflicts.c:111 src/conflicts.c:134
msgid "reduce" msgid "reduce"
msgstr "indirgeme" msgstr "indirgeme"
#: src/conflicts.c:120 src/conflicts.c:133 #: src/conflicts.c:117 src/conflicts.c:130
msgid "shift" msgid "shift"
msgstr "öteleme" msgstr "öteleme"
#: src/conflicts.c:141 #: src/conflicts.c:138
msgid "an error" msgid "an error"
msgstr "bir hata" msgstr "bir hata"
#: src/conflicts.c:421 #: src/conflicts.c:389
msgid " 1 shift/reduce conflict" #, fuzzy, c-format
msgstr " 1 öteleme/indirgeme çeliþkisi" msgid "%d shift/reduce conflict"
msgid_plural "%d shift/reduce conflicts"
msgstr[0] " %d öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:426 #: src/conflicts.c:396
#, c-format #, fuzzy
msgid " %d shift/reduce conflicts" msgid "and"
msgstr " %d öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:432
msgid " and"
msgstr " ve" msgstr " ve"
#: src/conflicts.c:438 #: src/conflicts.c:402
msgid " 1 reduce/reduce conflict" #, fuzzy, c-format
msgstr " 1 indirgeme/indirgeme çeliþkisi" msgid "%d reduce/reduce conflict"
msgid_plural "%d reduce/reduce conflicts"
msgstr[0] " %d indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:443 #: src/conflicts.c:426
#, c-format #, fuzzy, c-format
msgid " %d reduce/reduce conflicts" msgid "State %d contains "
msgstr " %d indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:480
#, c-format
msgid "State %d contains"
msgstr "%d durumu içerir" msgstr "%d durumu içerir"
#. If invoked with `--yacc', use the output format specified by #. If invoked with `--yacc', use the output format specified by
#. POSIX. #. POSIX.
#: src/conflicts.c:491 #: src/conflicts.c:460
msgid "conflicts: " msgid "conflicts: "
msgstr "çeliþkiler: " msgstr "çeliþkiler: "
#: src/conflicts.c:493 #: src/conflicts.c:462
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d öteleme/indirgeme" msgstr " %d öteleme/indirgeme"
#: src/conflicts.c:497 #: src/conflicts.c:466
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d indirgeme/indirgeme" msgstr " %d indirgeme/indirgeme"
#: src/conflicts.c:502 #: src/conflicts.c:471 src/reduce.c:493
#, c-format #, c-format
msgid "%s contains" msgid "%s contains "
msgstr "%s içerir" 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 #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n" msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n"
#: src/conflicts.c:600 src/print.c:171 #: src/conflicts.c:579 src/print.c:156
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -112,67 +113,58 @@ msgstr ""
" $default\tindirgeme kural %d (%s)'i kullanýyor\n" " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
"\n" "\n"
#: src/conflicts.c:689 src/conflicts.c:703 #: src/conflicts.c:668 src/conflicts.c:682
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n" msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/conflicts.c:730 #: src/conflicts.c:708
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n" msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/derives.c:43 #: src/files.c:143
msgid "DERIVES"
msgstr "TÜRETÝLENLER"
#: src/derives.c:48
#, c-format
msgid "%s derives"
msgstr "%s türetildi"
#: src/files.c:133
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "`%s' dosyasý açýlamadý" msgstr "`%s' dosyasý açýlamadý"
#: src/files.c:152 #: src/files.c:162
msgid "cannot close file" msgid "cannot close file"
msgstr "dosya kapatýlamýyor" msgstr "dosya kapatýlamýyor"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:83 #: src/getargs.c:84
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison LALR(1) gramerler için ayrýþtýrýcýlar üretir.\n" msgstr "GNU bison LALR(1) gramerler için ayrýþtýrýcýlar üretir.\n"
#: src/getargs.c:87 #: src/getargs.c:88
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n" msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n"
#: src/getargs.c:91 #: src/getargs.c:92
msgid "" msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n" "If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n" "for the equivalent short option also. Similarly for optional arguments.\n"
msgstr "" msgstr ""
"Eðer bir uzun seçenek bir argümaný gerektirirse, bu gereklilik, denk olan\n" "Eðer bir uzun seçenek bir baðýmsýz deðiþkeni zorunlu gibi gösterilirse odenk "
"kýsa seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de\n" "kýsa\n"
"geçerlidir.\n" "seçenek için dahi zorunludur. Seçimli baðýmsýz deðiþkenler için "
"benzerþekildedir.\n"
#: src/getargs.c:97 #: src/getargs.c:98
msgid "" msgid ""
"Operation modes:\n" "Operation modes:\n"
" -h, --help display this help and exit\n" " -h, --help display this help and exit\n"
" -V, --version output version information and exit\n" " -V, --version output version information and exit\n"
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
"Çalýþma kipleri:\n"
" -h, --help bu yardýmý göster ve çýk\n" " -h, --help bu yardýmý göster ve çýk\n"
" -V, --version sürüm bilgisini ver ve çýk\n" " -V, --version sürüm bilgisini ver ve çýk\n"
" -y, --yacc POSIX yacc öykünmesi\n" " -y, --yacc POSIX yacc öykünmesi\n"
#: src/getargs.c:104 #: src/getargs.c:105
msgid "" msgid ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n" " -S, --skeleton=FILE specify the skeleton to use\n"
@@ -184,23 +176,23 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
"Ayrýþtýrýcý:\n" "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" " -t, --debug ayrýþtýrýcý için hata ayýklayýcý aracý\n"
" --locations konum hesaplamalarýný etkinleþtirir\n" " --locations konum hesaplamalarýný etkinleþtir\n"
" -p, --name-prefix=ÖNEK dýþ simgelere eklenen ÖNEK\n" " -p, --name-prefix=PREFIX dýþ simgelere hazýr bekletilen ÖNEK\n"
" -l, --no-lines `#line' bildirimlerini üretmez\n" " -l, --no-lines `#line' bildirimlerini üretme\n"
" -n, --no-parser sadece tablolarý üretir\n" " -n, --no-parser sadece tablolarý üret\n"
" -k, --token-table andaç isimlerinin bir tablosunu içerir\n" " -k, --token-table andaç isimlerinin bir tablosunu içer\n"
#: src/getargs.c:116 #: src/getargs.c:117
#, fuzzy #, fuzzy
msgid "" msgid ""
"Output:\n" "Output:\n"
" -d, --defines also produce a header file\n" " -d, --defines also produce a header file\n"
" -v, --verbose also produce an explanation of the automaton\n" " -v, --verbose also produce an explanation of the automaton\n"
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n" " -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
" -o, --output-file=FILE leave output to FILE\n" " -o, --output=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the " " -g, --graph also produce a VCG description of the "
"automaton\n" "automaton\n"
msgstr "" msgstr ""
"Çýktý:\n" "Çýktý:\n"
@@ -208,198 +200,212 @@ msgstr ""
" -v, --verbose otomatýn bir açýklamasýný da üretir\n" " -v, --verbose otomatýn bir açýklamasýný da üretir\n"
" -b, --file-prefix=ÖNEK çýktý dosyalarý için bir ÖNEK belirtir\n" " -b, --file-prefix=ÖNEK çýktý dosyalarý için bir ÖNEK belirtir\n"
" -o, --output-file=DOSYA çýktýyý DOSYAYA býrakýr\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:126 #: src/getargs.c:127
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" msgstr "Hatalarý <[email protected]>'a bildir.\n"
"Hatalarý <[email protected]>'a,\n"
"çeviri hatalarýný <[email protected]>'e bildir.\n"
#. Some efforts were made to ease the translators' task, please #. Some efforts were made to ease the translators' task, please
#. continue. #. continue.
#: src/getargs.c:140 #: src/getargs.c:141
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:145 #: src/getargs.c:146
msgid "" msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n" "Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr "" msgstr ""
"Telifhakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, " "Kopyahakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
"Inc.\n" "Inc.\n"
#: src/getargs.c:149 #: src/getargs.c:150
msgid "" msgid ""
"This is free software; see the source for copying conditions. There is NO\n" "This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr "" msgstr ""
"Bu bir serbest yazýlýmdýr; kopyalama koþullarý için kaynak koduna bakýnýz.\n" "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" "UYGUNLUÐU için bile garanti verilmez.\n"
#: src/getargs.c:214 src/lex.c:650 #: src/getargs.c:215 src/lex.c:694
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "`%s' artýk desteklenmiyor" msgstr "`%s' artýk desteklenmeyecek"
#: src/getargs.c:238 #: src/getargs.c:239
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Daha fazla bilgi için `%s --help' yazýn.\n" msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
#: src/getargs.c:245 #: src/getargs.c:246
#, c-format #, c-format
msgid "%s: no grammar file given\n" msgid "%s: no grammar file given\n"
msgstr "%s: gramer dosyasý verilmemiþ\n" msgstr "%s: verilen gramer dosyasý yok\n"
#: src/getargs.c:249 #: src/getargs.c:250
#, c-format #, c-format
msgid "%s: extra arguments ignored after `%s'\n" msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' den sonraki 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 #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "gotos çok fazla (en fazla %d)" msgstr "gotos çok fazla (en fazla %d)"
#: src/lex.c:78 #: src/lex.c:76
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "beklenmeyen `/' bulundu ve yoksayýldý" msgstr "beklenmeyen `/' bulundu ve yoksayýldý"
#: src/lex.c:107 src/reader.c:269 #: src/lex.c:105 src/reader.c:269
msgid "unterminated comment" msgid "unterminated comment"
msgstr "sonlandýrýlmamýþ açýklama" msgstr "sonlandýrýlmamýþ açýklama"
#: src/lex.c:139 #: src/lex.c:137
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "beklenmeyen dosya sonu" msgstr "beklenmeyen dosya sonu"
#: src/lex.c:168 #: src/lex.c:166
msgid "unescaped newline in constant" 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:210 #: src/lex.c:208
#, c-format #, c-format
msgid "octal value outside range 0...255: `\\%o'" msgid "octal value outside range 0...255: `\\%o'"
msgstr "sekizli deðer 0...255'in dýþýnda: `\\%o'" msgstr "sekizli deðer 0...255'in dýþýnda: `\\%o'"
#: src/lex.c:235 #: src/lex.c:233
#, c-format #, c-format
msgid "hexadecimal value above 255: `\\x%x'" msgid "hexadecimal value above 255: `\\x%x'"
msgstr "onaltýlýk deðer 255'in üstünde: `\\x%x'" msgstr "onaltýlýk deðer 255'in üstünde: `\\x%x'"
#: src/lex.c:247 #: src/lex.c:245
#, c-format #, c-format
msgid "unknown escape sequence: `\\' followed by `%s'" msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "bilinmeyen kaçýþ sýrasý: `\\' `%s' tarafýndan takip edildi" msgstr "bilinmeyen kaçýþ sýrasý: `\\' `%s' tarafýndan takip edildi"
#: src/lex.c:343 #: src/lex.c:342
msgid "unterminated type name at end of file" 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:346 #: src/lex.c:345
msgid "unterminated type name" msgid "unterminated type name"
msgstr "sonlandýrýlmamýþ tip ismi" msgstr "sonlandýrýlmamýþ tip ismi"
#: src/lex.c:437 #: src/lex.c:438
msgid "use \"...\" for multi-character literal tokens" 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/main.c:125 #: src/lex.c:667
#, c-format
msgid "`%s' supports no argument: %s"
msgstr ""
#: src/lex.c:683
#, fuzzy, c-format
msgid "`%s' requires an argument"
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
#: src/main.c:128
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: iç hata: %s\n" msgstr "%s: iç hata: %s\n"
#: src/nullable.c:51 #: src/output.c:979
msgid "Entering set_nullable"
msgstr "set_nullable'a girildi"
#: src/output.c:986
#, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "en büyük tablo uzunluðu (%d) aþýldý" msgstr "en büyük tablo uzunluðu (%d) aþýldý"
#: src/print.c:37 #: src/print.c:38
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " tip %d %s'dir\n" msgstr " tip %d %s'dir\n"
#: src/print.c:85 #: src/print.c:78
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (kural %d)" msgstr " (kural %d)"
#: src/print.c:111 #: src/print.c:98
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tonayla\n" msgstr " $default\tonayla\n"
#: src/print.c:113 #: src/print.c:100
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " EYLEM YOK\n" msgstr " EYLEMLER YOK\n"
#: src/print.c:132 #: src/print.c:120
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tdurum %d'ye git\n" msgstr " $ \tdurum %d'ye git\n"
#: src/print.c:135 #: src/print.c:123
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tötele, ve durum %d'ye git\n" msgstr " %-4s\tötele, ve durum %d'ye git\n"
#: src/print.c:159 #: src/print.c:144
#, c-format #, c-format
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\thata (birleþmeli deðil)\n" msgstr " %-4s\thata (birleþmeli deðil)\n"
#: src/print.c:187 #: src/print.c:173
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tdurum %d'ye git\n" msgstr " %-4s\tdurum %d'ye git\n"
#: src/print.c:199 #: src/print.c:185
#, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "durum %d" msgstr "durum %d"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:229 #: src/print.c:215
msgid "Grammar" msgid "Grammar"
msgstr "Gramer" msgstr "Gramer"
#: src/print.c:234 #: src/print.c:220
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "kural %-4d %s ->" msgstr "kural %-4d %s ->"
#: src/print.c:240 #: src/print.c:226
msgid "empty" msgid "empty"
msgstr "" msgstr "boþ"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:244 #: src/print.c:231
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde" msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:268 #: src/print.c:255
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde" msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:294 #: src/print.c:281
msgid " on left:" msgid " on left:"
msgstr " solda:" msgstr " solda:"
#: src/print.c:309 #: src/print.c:296
msgid " on right:" msgid " on right:"
msgstr " saðda:" msgstr " saðda:"
#: src/print_graph.c:174 #. If something has been added in the NODE_OBSTACK after
#. the declaration of the label, then we need a `\n'.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:166
#, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\thata (birleþmeli deðil)" msgstr "%-4s\thata (birleþmeli deðil)"
#: src/print_graph.c:187 #.
#. if (obstack_object_size (node_obstack) > node_output_size)
#. obstack_sgrow (node_obstack, "\n");
#.
#: src/print_graph.c:181
#, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor" msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor"
@@ -452,19 +458,19 @@ msgstr "%s'den sonra erken EOF"
#: src/reader.c:498 #: src/reader.c:498
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "simge `%s' birden fazla defa sabit dizge olarak kullanýldý" msgstr "simge `%s' bir harfiyen uyumlu dizgi gibi birden fazla kullanýldý"
#: src/reader.c:501 #: src/reader.c:501
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" 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 #: src/reader.c:522 src/reader.c:664
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "%s simgesi yeniden tanýmlandý" msgstr "%s simgesi yeniden tanýmlandý"
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285 #: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1280
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s için yeniden tip bildirimi" msgstr "%s için yeniden tip bildirimi"
@@ -474,12 +480,12 @@ msgstr "%s i
msgid "`%s' is invalid in %s" msgid "`%s' is invalid in %s"
msgstr "`%s' %s içinde geçersizdir" msgstr "`%s' %s içinde geçersizdir"
#: src/reader.c:558 src/reader.c:717 #: src/reader.c:558 src/reader.c:723
#, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri" msgstr "çoklu %s bildirimleri"
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263 #: src/reader.c:560 src/reader.c:902 src/reader.c:927 src/reader.c:1258
#, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "geçersiz %s bildirimi" msgstr "geçersiz %s bildirimi"
@@ -491,7 +497,7 @@ msgstr "%type bildirimi <tipad
#: src/reader.c:615 #: src/reader.c:615
#, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "geçersiz %%type bildirimine neden olan öðe: %s" msgstr "geçersiz %%type bildirimine neden olan öðe: `%s'"
#: src/reader.c:660 #: src/reader.c:660
#, c-format #, c-format
@@ -508,138 +514,140 @@ msgstr "ge
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "beklenmeyen öðe: %s" msgstr "beklenmeyen öðe: %s"
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160 #: src/reader.c:766 src/reader.c:1098 src/reader.c:1169
#, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "eþlenemeyen %s" msgstr "eþlenemeyen %s"
#: src/reader.c:792 #: src/reader.c:798
#, c-format #, c-format
msgid "argument of %%expect is not an integer" 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:838 #: src/reader.c:844
#, c-format #, c-format
msgid "unrecognized item %s, expected an identifier" msgid "unrecognized item %s, expected an identifier"
msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr" msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr"
#: src/reader.c:862 #: src/reader.c:866
#, c-format #, c-format
msgid "expected string constant instead of %s" msgid "expected string constant instead of %s"
msgstr "%s'in yerine sabit dizge beklendi" msgstr "%s'in yerine beklenen dizgi sabitidir"
#: src/reader.c:1005 #: src/reader.c:1014
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tanýnmayan: %s" msgstr "tanýnmayan: %s"
#: src/reader.c:1010 #: src/reader.c:1019
msgid "no input grammar" msgid "no input grammar"
msgstr "girdi grameri yok" msgstr "girdi grameri yok"
#: src/reader.c:1015 #: src/reader.c:1024
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "bilinmeyen karakter: %s" msgstr "bilinmeyen karakter: %s"
#: src/reader.c:1183 #: src/reader.c:1192
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "sonlandýrýlmamýþ %guard yantümcesi" msgstr "sonlandýrýlmamýþ %guard yantümcesi"
#: src/reader.c:1350 #: src/reader.c:1345
msgid "ill-formed rule: initial symbol not followed by colon" 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:1357 #: src/reader.c:1352
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "gramer düþey çubuk ile baþlýyor" msgstr "gramer düþey çubuk ile baþlýyor"
#: src/reader.c:1388 #: src/reader.c:1381
#, c-format #, c-format
msgid "rule given for %s, which is a token" msgid "rule given for %s, which is a token"
msgstr "bir andaç olan %s için verilen kural" msgstr "bir andaç olan %s için verilen kural"
#: src/reader.c:1490 #: src/reader.c:1483
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "bir satýrda iki @prec" msgstr "bir satýrda iki @prec"
#: src/reader.c:1498 #: src/reader.c:1491
#, c-format #, c-format
msgid "%%guard present but %%semantic_parser not specified" msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ" msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ"
#: src/reader.c:1507 #: src/reader.c:1500
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "bir kuralýn sonunda iki eylem" msgstr "bir kuralýn sonunda iki eylem"
#: src/reader.c:1521 #: src/reader.c:1514
#, c-format #, c-format
msgid "type clash (`%s' `%s') on default action" msgid "type clash (`%s' `%s') on default action"
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý" msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
#: src/reader.c:1527 #: src/reader.c:1520
msgid "empty rule for typed nonterminal, and no action" 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:1571 #: src/reader.c:1564
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "geçersiz girdi: %s" msgstr "geçersiz girdi: %s"
#: src/reader.c:1579 #: src/reader.c:1572
#, c-format #, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d" msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d" msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
#: src/reader.c:1582 #: src/reader.c:1575
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "girdi grameri içinde kurallar yok" msgstr "girdi grameri içinde kurallar yok"
#: src/reader.c:1606 #: src/reader.c:1599
#, c-format #, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules" msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "" msgstr ""
"simge %s kullanýldý, fakat bir andaç olarak tanýmlanmadý vekurallarý yok" "simge %s kullanýldý, fakat bir andaç gibi tanýmlanmadý ve kurallara "
"sahipdeðil"
#: src/reader.c:1712 #: src/reader.c:1734
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "%s ve %s için çeliþen öncelikler"
#: src/reader.c:1724
#, 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:1770
#, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý" msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý"
#: src/reader.c:1782 #: 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: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:1838
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "baþlangýç simgesi %s tanýmlanmadý" msgstr "baþlangýç simgesi %s tanýmlanmadý"
#: src/reader.c:1784 #: src/reader.c:1840
#, c-format #, c-format
msgid "the start symbol %s is a token" msgid "the start symbol %s is a token"
msgstr "baþlangýç simgesi %s bir andaçtýr" msgstr "baþlangýç simgesi %s bir andaçtýr"
#: src/reduce.c:401 #: src/reduce.c:400
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz kurallar:"
#: src/reduce.c:416 #: src/reduce.c:414
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "Kullanýlmayan sabit simgeler:" msgstr "Kullanýlmayan sabit simgeler:"
#: src/reduce.c:427 #: src/reduce.c:425
msgid "Useless rules:" msgid "Useless rules:"
msgstr "Yararsýz kurallar:" msgstr "Yararsýz kurallar:"
#: src/reduce.c:456 #: src/reduce.c:451
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -649,11 +657,11 @@ msgstr ""
"-----------\n" "-----------\n"
"\n" "\n"
#: src/reduce.c:458 #: src/reduce.c:452
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "Deðer Söncel Sbirleþ Etiket\n" msgstr "Deðer Söncel Sbirleþ Etiket\n"
#: src/reduce.c:463 #: src/reduce.c:456
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -663,7 +671,7 @@ msgstr ""
"--------\n" "--------\n"
"\n" "\n"
#: src/reduce.c:474 #: src/reduce.c:470
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -678,11 +686,6 @@ msgstr ""
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d kural asla indirgenmedi\n" msgstr "%d kural asla indirgenmedi\n"
#: src/reduce.c:493
#, c-format
msgid "%s contains "
msgstr "%s içerir "
#: src/reduce.c:497 #: src/reduce.c:497
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
@@ -697,81 +700,73 @@ msgstr " ve "
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d yararsýz kural%s" msgstr "%d yararsýz kural%s"
#: src/reduce.c:539 #: src/reduce.c:536
#, c-format #, c-format
msgid "Start symbol %s does not derive any sentence" msgid "Start symbol %s does not derive any sentence"
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez" msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
#: src/reduce.c:552 #: lib/getopt.c:694
#, 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:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: `%s' seçeneði belirsiz\n" msgstr "%s: `%s' seçeneði belirsiz\n"
#: lib/getopt.c:700 #: lib/getopt.c:719
#, c-format #, c-format
msgid "%s: option `--%s' doesn't allow an argument\n" msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: `--%s' seçeneði argümansýz kullanýlýr\n" msgstr "%s: `--%s' seçeneði argümansýz kullanýlýr\n"
#: lib/getopt.c:705 #: lib/getopt.c:724
#, c-format #, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n" msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: seçenek `%c%s' argümansýz kullanýlýr\n" msgstr "%s: seçenek `%c%s' argümansýz kullanýlýr\n"
#: lib/getopt.c:723 lib/getopt.c:896 #: lib/getopt.c:742 lib/getopt.c:915
#, c-format #, c-format
msgid "%s: option `%s' requires an argument\n" msgid "%s: option `%s' requires an argument\n"
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n" msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
#. --option #. --option
#: lib/getopt.c:752 #: lib/getopt.c:771
#, c-format #, c-format
msgid "%s: unrecognized option `--%s'\n" msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: `--%s' seçeneði bilinmiyor\n" msgstr "%s: `--%s' seçeneði bilinmiyor\n"
#. +option or -option #. +option or -option
#: lib/getopt.c:756 #: lib/getopt.c:775
#, c-format #, c-format
msgid "%s: unrecognized option `%c%s'\n" msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: `%c%s' seçeneði bilinmiyor\n" msgstr "%s: `%c%s' seçeneði bilinmiyor\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:782 #: lib/getopt.c:801
#, c-format #, c-format
msgid "%s: illegal option -- %c\n" msgid "%s: illegal option -- %c\n"
msgstr "%s: kuraldýþý seçenek -- %c\n" msgstr "%s: kuraldýþý seçenek -- %c\n"
#: lib/getopt.c:785 #: lib/getopt.c:804
#, c-format #, c-format
msgid "%s: invalid option -- %c\n" msgid "%s: invalid option -- %c\n"
msgstr "%s: geçersiz seçenek -- %c\n" msgstr "%s: geçersiz seçenek -- %c\n"
#. 1003.2 specifies the format of this message. #. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:834 lib/getopt.c:964
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: seçenek bir argümanla kullanýlýr -- %c\n" msgstr "%s: seçenek bir argümanla kullanýlýr -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:881
#, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: `-W %s' seçeneði belirsiz\n" msgstr "%s: `-W %s' seçeneði belirsiz\n"
#: lib/getopt.c:880 #: lib/getopt.c:899
#, c-format #, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n" msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: `-W %s' seçeneði argümansýz kullanýlýr\n" msgstr "%s: `-W %s' seçeneði argümansýz kullanýlýr\n"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
msgid "memory exhausted" msgid "memory exhausted"
msgstr "bellek tükendi" msgstr "bellek tükendi"
@@ -797,44 +792,26 @@ msgstr "`"
msgid "'" msgid "'"
msgstr "'" msgstr "'"
#~ msgid "\t\t/* empty */" #~ msgid " 1 shift/reduce conflict"
#~ msgstr "\t\t/* boþ */" #~ msgstr " 1 öteleme/indirgeme çeliþkisi"
#~ msgid "multiple %%header_extension declarations" #~ msgid " 1 reduce/reduce conflict"
#~ msgstr "çoklu %%header_extension bildirimleri" #~ msgstr " 1 indirgeme/indirgeme çeliþkisi"
#~ msgid "multiple %%source_extension declarations" #~ msgid "%s contains"
#~ msgstr "çoklu %%source_extension bildirimleri" #~ msgstr "%s içerir"
#~ msgid "vcg graph: no such color." #~ msgid "DERIVES"
#~ msgstr "vcg graph: böyle bir renk yok." #~ msgstr "TÜRETÝLENLER"
#~ msgid "vcg graph: no such text mode" #~ msgid "%s derives"
#~ msgstr "vcg graph: böyle bir metin kipi yok" #~ msgstr "%s türetildi"
#~ msgid "vcg graph: no such shape" #~ msgid "Entering set_nullable"
#~ msgstr "vcg graph: böyle bir þekil yok" #~ msgstr "set_nullable'a girildi"
#~ msgid "vcg graph: no such decision" #~ msgid ""
#~ msgstr "vcg graph: böyle bir karar yok" #~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
#~ msgstr ""
#~ msgid "vcg graph: no such an orientation" #~ "indirgenen %s tanýmlanan %d sabit simge%s, %d deðiþken simge%s,ve %d "
#~ msgstr "vcg graph: böyle bir konum yok" #~ "üretilen%s.\n"
#~ 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"
+76 -155
View File
@@ -1,5 +1,5 @@
/* Generate the nondeterministic finite state machine for bison, /* Generate the nondeterministic finite state machine for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -23,6 +23,8 @@
The entry point is generate_states. */ The entry point is generate_states. */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "reader.h"
#include "gram.h" #include "gram.h"
#include "state.h" #include "state.h"
#include "complain.h" #include "complain.h"
@@ -48,7 +50,7 @@ static short *redset = NULL;
static short *shiftset = NULL; static short *shiftset = NULL;
static short **kernel_base = NULL; static short **kernel_base = NULL;
static short **kernel_end = NULL; static size_t *kernel_size = NULL;
static short *kernel_items = NULL; static short *kernel_items = NULL;
/* hash table for states, to recognize equivalent ones. */ /* hash table for states, to recognize equivalent ones. */
@@ -60,8 +62,6 @@ static core **state_table = NULL;
static void static void
allocate_itemsets (void) allocate_itemsets (void)
{ {
short *itemp = NULL;
int symbol;
int i; int i;
int count; int count;
short *symbol_count = NULL; short *symbol_count = NULL;
@@ -69,17 +69,12 @@ allocate_itemsets (void)
count = 0; count = 0;
symbol_count = XCALLOC (short, nsyms); symbol_count = XCALLOC (short, nsyms);
itemp = ritem; for (i = 0; ritem[i]; ++i)
symbol = *itemp++; if (ritem[i] > 0)
while (symbol) {
{ count++;
if (symbol > 0) symbol_count[ritem[i]]++;
{ }
count++;
symbol_count[symbol]++;
}
symbol = *itemp++;
}
/* See comments before new_itemsets. All the vectors of items /* See comments before new_itemsets. All the vectors of items
live inside KERNEL_ITEMS. The number of active items after live inside KERNEL_ITEMS. The number of active items after
@@ -99,7 +94,7 @@ allocate_itemsets (void)
} }
shift_symbol = symbol_count; 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 (redset);
XFREE (shiftset); XFREE (shiftset);
XFREE (kernel_base); XFREE (kernel_base);
XFREE (kernel_end); XFREE (kernel_size);
XFREE (kernel_items); XFREE (kernel_items);
XFREE (state_table); XFREE (state_table);
} }
@@ -137,8 +132,7 @@ free_storage (void)
| shift_symbol is set to a vector of the symbols that can be | | shift_symbol is set to a vector of the symbols that can be |
| shifted. For each symbol in the grammar, kernel_base[symbol] | | shifted. For each symbol in the grammar, kernel_base[symbol] |
| points to a vector of item numbers activated if that symbol is | | points to a vector of item numbers activated if that symbol is |
| shifted, and kernel_end[symbol] points after the end of that | | shifted, and kernel_size[symbol] is their numbers. |
| vector. |
`----------------------------------------------------------------*/ `----------------------------------------------------------------*/
static void static void
@@ -146,37 +140,29 @@ new_itemsets (void)
{ {
int i; int i;
int shiftcount; int shiftcount;
short *isp;
short *ksp;
int symbol;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering new_itemsets\n"); fprintf (stderr, "Entering new_itemsets, state = %d\n",
#endif this_state->number);
for (i = 0; i < nsyms; i++) for (i = 0; i < nsyms; i++)
kernel_end[i] = NULL; kernel_size[i] = 0;
shiftcount = 0; shiftcount = 0;
isp = itemset; for (i = 0; i < itemsetsize; ++i)
while (isp < itemsetend)
{ {
i = *isp++; int symbol = ritem[itemset[i]];
symbol = ritem[i];
if (symbol > 0) if (symbol > 0)
{ {
ksp = kernel_end[symbol]; if (!kernel_size[symbol])
if (!ksp)
{ {
shift_symbol[shiftcount++] = symbol; shift_symbol[shiftcount] = symbol;
ksp = kernel_base[symbol]; shiftcount++;
} }
*ksp++ = i + 1; kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1;
kernel_end[symbol] = ksp; kernel_size[symbol]++;
} }
} }
@@ -193,36 +179,24 @@ new_itemsets (void)
static core * static core *
new_state (int symbol) new_state (int symbol)
{ {
int n;
core *p; core *p;
short *isp1;
short *isp2;
short *iend;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering new_state, symbol = %d\n", symbol); fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
#endif this_state->number, symbol, tags[symbol]);
if (nstates >= MAXSHORT) if (nstates >= MAXSHORT)
fatal (_("too many states (max %d)"), MAXSHORT); fatal (_("too many states (max %d)"), MAXSHORT);
isp1 = kernel_base[symbol]; p = CORE_ALLOC (kernel_size[symbol]);
iend = kernel_end[symbol];
n = iend - isp1;
p =
(core *) xcalloc ((unsigned) (sizeof (core) + (n - 1) * sizeof (short)), 1);
p->accessing_symbol = symbol; p->accessing_symbol = symbol;
p->number = nstates; p->number = nstates;
p->nitems = n; p->nitems = kernel_size[symbol];
isp2 = p->items; shortcpy (p->items, kernel_base[symbol], kernel_size[symbol]);
while (isp1 < iend)
*isp2++ = *isp1++;
last_state->next = p; last_state->next = p;
last_state = p; last_state = p;
nstates++; nstates++;
return p; return p;
@@ -232,54 +206,41 @@ new_state (int symbol)
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| Find the state number for the state we would get to (from the | | Find the state number for the state we would get to (from the |
| current state) by shifting symbol. Create a new state if no | | current state) by shifting symbol. Create a new state if no |
| equivalent one exists already. Used by append_states. | | equivalent one exists already. Used by append_states. |
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
static int static int
get_state (int symbol) get_state (int symbol)
{ {
int key; int key;
short *isp1;
short *isp2; short *isp2;
short *iend; int i;
core *sp; core *sp;
int found;
int n; if (trace_flag)
fprintf (stderr, "Entering get_state, state = %d, symbol = %d (%s)\n",
this_state->number, symbol, tags[symbol]);
#if TRACE /* Add up the target state's active item numbers to get a hash key.
fprintf (stderr, "Entering get_state, symbol = %d\n", symbol); */
#endif
isp1 = kernel_base[symbol];
iend = kernel_end[symbol];
n = iend - isp1;
/* add up the target state's active item numbers to get a hash key */
key = 0; key = 0;
while (isp1 < iend) for (i = 0; i < kernel_size[symbol]; ++i)
key += *isp1++; key += kernel_base[symbol][i];
key = key % STATE_TABLE_SIZE; key = key % STATE_TABLE_SIZE;
sp = state_table[key]; sp = state_table[key];
if (sp) if (sp)
{ {
found = 0; int found = 0;
while (!found) while (!found)
{ {
if (sp->nitems == n) if (sp->nitems == kernel_size[symbol])
{ {
int i;
found = 1; found = 1;
isp1 = kernel_base[symbol]; for (i = 0; i < kernel_size[symbol]; ++i)
isp2 = sp->items; if (kernel_base[symbol][i] != sp->items[i])
found = 0;
while (found && isp1 < iend)
{
if (*isp1++ != *isp2++)
found = 0;
}
} }
if (!found) if (!found)
@@ -301,6 +262,9 @@ get_state (int symbol)
state_table[key] = sp = new_state (symbol); state_table[key] = sp = new_state (symbol);
} }
if (trace_flag)
fprintf (stderr, "Exiting get_state => %d\n", sp->number);
return sp->number; return sp->number;
} }
@@ -318,9 +282,9 @@ append_states (void)
int j; int j;
int symbol; int symbol;
#if TRACE if (trace_flag)
fprintf (stderr, "Entering append_states\n"); fprintf (stderr, "Entering append_states, state = %d\n",
#endif this_state->number);
/* first sort shift_symbol into increasing order */ /* first sort shift_symbol into increasing order */
@@ -337,20 +301,14 @@ append_states (void)
} }
for (i = 0; i < nshifts; i++) for (i = 0; i < nshifts; i++)
{ shiftset[i] = get_state (shift_symbol[i]);
symbol = shift_symbol[i];
shiftset[i] = get_state (symbol);
}
} }
static void static void
new_states (void) new_states (void)
{ {
core *p; first_state = last_state = this_state = CORE_ALLOC (0);
p = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1);
first_state = last_state = this_state = p;
nstates = 1; nstates = 1;
} }
@@ -358,34 +316,18 @@ new_states (void)
static void static void
save_shifts (void) save_shifts (void)
{ {
shifts *p; shifts *p = SHIFTS_ALLOC (nshifts);
short *sp1;
short *sp2;
short *send;
p = (shifts *) xcalloc ((unsigned) (sizeof (shifts) +
(nshifts - 1) * sizeof (short)), 1);
p->number = this_state->number; p->number = this_state->number;
p->nshifts = nshifts; p->nshifts = nshifts;
sp1 = shiftset; shortcpy (p->shifts, shiftset, nshifts);
sp2 = p->shifts;
send = shiftset + nshifts;
while (sp1 < send)
*sp2++ = *sp1++;
if (last_shift) if (last_shift)
{ last_shift->next = p;
last_shift->next = p;
last_shift = p;
}
else else
{ first_shift = p;
first_shift = p; last_shift = p;
last_shift = p;
}
} }
@@ -400,7 +342,7 @@ insert_start_shift (void)
core *statep; core *statep;
shifts *sp; shifts *sp;
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates; statep->number = nstates;
statep->accessing_symbol = start_symbol; statep->accessing_symbol = start_symbol;
@@ -408,7 +350,7 @@ insert_start_shift (void)
last_state = statep; last_state = statep;
/* Make a shift from this state to (what will be) the final state. */ /* Make a shift from this state to (what will be) the final state. */
sp = XCALLOC (shifts, 1); sp = SHIFTS_ALLOC (1);
sp->number = nstates++; sp->number = nstates++;
sp->nshifts = 1; sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
@@ -465,10 +407,7 @@ augment_automaton (void)
if (sp && sp->number == k) if (sp && sp->number == k)
{ {
sp2 = (shifts *) xcalloc ((unsigned) (sizeof (shifts) sp2 = SHIFTS_ALLOC (sp->nshifts + 1);
+
sp->nshifts *
sizeof (short)), 1);
sp2->number = k; sp2->number = k;
sp2->nshifts = sp->nshifts + 1; sp2->nshifts = sp->nshifts + 1;
sp2->shifts[0] = nstates; sp2->shifts[0] = nstates;
@@ -485,7 +424,7 @@ augment_automaton (void)
} }
else else
{ {
sp2 = XCALLOC (shifts, 1); sp2 = SHIFTS_ALLOC (1);
sp2->number = k; sp2->number = k;
sp2->nshifts = 1; sp2->nshifts = 1;
sp2->shifts[0] = nstates; sp2->shifts[0] = nstates;
@@ -504,8 +443,7 @@ augment_automaton (void)
going to the next-to-final state (yet to be made). */ going to the next-to-final state (yet to be made). */
sp = first_shift; sp = first_shift;
sp2 = (shifts *) xcalloc (sizeof (shifts) sp2 = SHIFTS_ALLOC (sp->nshifts + 1);
+ sp->nshifts * sizeof (short), 1);
sp2->nshifts = sp->nshifts + 1; sp2->nshifts = sp->nshifts + 1;
/* Stick this shift into the vector at the proper place. */ /* 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. /* The initial state didn't even have any shifts.
Give it one shift, to the next-to-final state. */ Give it one shift, to the next-to-final state. */
sp = XCALLOC (shifts, 1); sp = SHIFTS_ALLOC (1);
sp->nshifts = 1; sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
@@ -556,7 +494,7 @@ augment_automaton (void)
/* There are no shifts for any state. /* There are no shifts for any state.
Make one shift, from the initial state to the next-to-final 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->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
@@ -572,13 +510,13 @@ augment_automaton (void)
/* Make the final state--the one that follows a shift from the /* Make the final state--the one that follows a shift from the
next-to-final state. next-to-final state.
The symbol for that shift is 0 (end-of-file). */ The symbol for that shift is 0 (end-of-file). */
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates; statep->number = nstates;
last_state->next = statep; last_state->next = statep;
last_state = statep; last_state = statep;
/* Make the shift from the final state to the termination state. */ /* Make the shift from the final state to the termination state. */
sp = XCALLOC (shifts, 1); sp = SHIFTS_ALLOC (1);
sp->number = nstates++; sp->number = nstates++;
sp->nshifts = 1; sp->nshifts = 1;
sp->shifts[0] = nstates; sp->shifts[0] = nstates;
@@ -590,7 +528,7 @@ augment_automaton (void)
final_state = nstates; final_state = nstates;
/* Make the termination state. */ /* Make the termination state. */
statep = (core *) xcalloc ((unsigned) (sizeof (core) - sizeof (short)), 1); statep = CORE_ALLOC (0);
statep->number = nstates++; statep->number = nstates++;
last_state->next = statep; last_state->next = statep;
last_state = statep; last_state = statep;
@@ -606,21 +544,15 @@ augment_automaton (void)
static void static void
save_reductions (void) save_reductions (void)
{ {
short *isp;
short *rp1;
short *rp2;
int item;
int count; int count;
reductions *p; int i;
short *rend;
/* Find and count the active items that represent ends of rules. */ /* Find and count the active items that represent ends of rules. */
count = 0; count = 0;
for (isp = itemset; isp < itemsetend; isp++) for (i = 0; i < itemsetsize; ++i)
{ {
item = ritem[*isp]; int item = ritem[itemset[i]];
if (item < 0) if (item < 0)
redset[count++] = -item; redset[count++] = -item;
} }
@@ -629,29 +561,18 @@ save_reductions (void)
if (count) if (count)
{ {
p = (reductions *) xcalloc ((unsigned) (sizeof (reductions) + reductions *p = REDUCTIONS_ALLOC (count);
(count - 1) * sizeof (short)), 1);
p->number = this_state->number; p->number = this_state->number;
p->nreds = count; p->nreds = count;
rp1 = redset; shortcpy (p->rules, redset, count);
rp2 = p->rules;
rend = rp1 + count;
for (/* nothing */; rp1 < rend; ++rp1, ++rp2)
*rp2 = *rp1;
if (last_reduction) if (last_reduction)
{ last_reduction->next = p;
last_reduction->next = p;
last_reduction = p;
}
else else
{ first_reduction = p;
first_reduction = p; last_reduction = p;
last_reduction = p;
}
} }
} }
+5 -6
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -187,9 +188,7 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile $(AUTOMAKE) --gnu src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
install-binPROGRAMS: $(bin_PROGRAMS) install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir) $(mkinstalldirs) $(DESTDIR)$(bindir)
@@ -228,7 +227,7 @@ ANSI2KNR = ../lib/ansi2knr
cd ../lib && $(MAKE) $(AM_MAKEFLAGS) ansi2knr cd ../lib && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
mostlyclean-kr: mostlyclean-kr:
-rm -f *_.c -test "$U" = "" || rm -f *_.c
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/LR0$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/LR0$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/closure$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/closure$U.Po@am__quote@
+57 -51
View File
@@ -76,10 +76,27 @@
# define YYSTACK_USE_ALLOCA 0 # define YYSTACK_USE_ALLOCA 0
#endif #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 #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 #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 #endif
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
@@ -291,7 +308,7 @@ yyparse (YYPARSE_PARAM_ARG)
/* Three stacks and their tools: /* Three stacks and their tools:
`yyss': related to states, `yyss': related to states,
`yysv': related to semantic values, `yyvs': related to semantic values,
`yyls': related to locations. `yyls': related to locations.
Refer to the stacks thru separate pointers, to allow yyoverflow Refer to the stacks thru separate pointers, to allow yyoverflow
@@ -368,40 +385,38 @@ yyparse (YYPARSE_PARAM_ARG)
if (yyssp >= yyss + yystacksize - 1) if (yyssp >= yyss + yystacksize - 1)
{ {
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into memory.
*/
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
#if YYLSP_NEEDED
YYLTYPE *yyls1 = yyls;
#endif
/* Get the current used size of the three stacks, in elements. */ /* Get the current used size of the three stacks, in elements. */
int size = yyssp - yyss + 1; int size = yyssp - yyss + 1;
#ifdef yyoverflow #ifdef yyoverflow
/* Each stack pointer address is followed by the size of the {
data in use in that stack, in bytes. */ /* Give user a chance to reallocate the stack. Use copies of
# if YYLSP_NEEDED these so that the &'s don't force the real ones into
/* This used to be a conditional around just the two extra args, memory. */
but that might be undefined if yyoverflow is a macro. */ YYSTYPE *yyvs1 = yyvs;
yyoverflow ("parser stack overflow", short *yyss1 = yyss;
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yyls1, size * sizeof (*yylsp),
&yystacksize);
# else
yyoverflow ("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yystacksize);
# endif
yyss = yyss1; yyvs = yyvs1; /* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. */
# if YYLSP_NEEDED # if YYLSP_NEEDED
yyls = yyls1; YYLTYPE *yyls1 = yyls;
/* This used to be a conditional around just the two extra args,
but that might be undefined if yyoverflow is a macro. */
yyoverflow ("parser stack overflow",
&yyss1, 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 # endif
yyss = yyss1;
yyvs = yyvs1;
}
#else /* no yyoverflow */ #else /* no yyoverflow */
/* Extend the stack our own way. */ /* Extend the stack our own way. */
if (yystacksize >= YYMAXDEPTH) if (yystacksize >= YYMAXDEPTH)
@@ -420,19 +435,11 @@ yyparse (YYPARSE_PARAM_ARG)
yystacksize *= 2; yystacksize *= 2;
if (yystacksize > YYMAXDEPTH) if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH; yystacksize = YYMAXDEPTH;
# if !YYSTACK_USE_ALLOCA
yyfree_stacks = 1; YYSTACK_REALLOC (short, yyss, yyssa);
# endif YYSTACK_REALLOC (YYSTYPE, yyvs, yyvsa);
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));
# if YYLSP_NEEDED # if YYLSP_NEEDED
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); YYSTACK_REALLOC (YYLTYPE, yyls, yylsa);
__yy_memcpy ((char *)yyls, (char *)yyls1,
size * (unsigned int) sizeof (*yylsp));
# endif # endif
#endif /* no yyoverflow */ #endif /* no yyoverflow */
@@ -664,30 +671,29 @@ yyerrlab:
int x, count; int x, count;
count = 0; count = 0;
/* Start X at -yyn if nec to avoid negative indexes in yycheck. */ /* Start X at -YYN if negative to avoid negative indexes in
for (x = (yyn < 0 ? -yyn : 0); YYCHECK. */
for (x = yyn < 0 ? -yyn : 0;
x < (int) (sizeof (yytname) / sizeof (char *)); x++) x < (int) (sizeof (yytname) / sizeof (char *)); x++)
if (yycheck[x + yyn] == x) if (yycheck[x + yyn] == x)
size += strlen (yytname[x]) + 15, count++; size += strlen (yytname[x]) + 15, count++;
size += strlen ("parse error, unexpected `") + 1; size += strlen ("parse error, unexpected ") + 1;
size += strlen (yytname[YYTRANSLATE (yychar)]); size += strlen (yytname[YYTRANSLATE (yychar)]);
msg = (char *) malloc (size); msg = (char *) malloc (size);
if (msg != 0) if (msg != 0)
{ {
strcpy (msg, "parse error, unexpected `"); strcpy (msg, "parse error, unexpected ");
strcat (msg, yytname[YYTRANSLATE (yychar)]); strcat (msg, yytname[YYTRANSLATE (yychar)]);
strcat (msg, "'");
if (count < 5) if (count < 5)
{ {
count = 0; count = 0;
for (x = (yyn < 0 ? -yyn : 0); for (x = yyn < 0 ? -yyn : 0;
x < (int) (sizeof (yytname) / sizeof (char *)); x++) x < (int) (sizeof (yytname) / sizeof (char *)); x++)
if (yycheck[x + yyn] == x) if (yycheck[x + yyn] == x)
{ {
strcat (msg, count == 0 ? ", expecting `" : " or `"); strcat (msg, count == 0 ? ", expecting " : " or ");
strcat (msg, yytname[x]); strcat (msg, yytname[x]);
strcat (msg, "'");
count++; count++;
} }
} }
@@ -695,7 +701,7 @@ yyerrlab:
free (msg); free (msg);
} }
else else
yyerror ("parse error; also virtual memory exceeded"); yyerror ("parse error; also virtual memory exhausted");
} }
else else
#endif /* YYERROR_VERBOSE */ #endif /* YYERROR_VERBOSE */
+66 -65
View File
@@ -1,5 +1,5 @@
/* Subroutines for bison /* Subroutines for bison
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -19,26 +19,32 @@
02111-1307, USA. */ 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "gram.h" #include "gram.h"
#include "reader.h"
#include "closure.h" #include "closure.h"
#include "derives.h" #include "derives.h"
#include "warshall.h" #include "warshall.h"
/* ITEMSETSIZE is the size of the array ITEMSET. */
short *itemset; short *itemset;
short *itemsetend; size_t itemsetsize;
static unsigned *ruleset; static unsigned *ruleset;
/* internal data. See comments before set_fderives and set_firsts. */ /* internal data. See comments before set_fderives and set_firsts. */
static unsigned *fderives; static unsigned *fderives;
static unsigned *firsts; static unsigned *firsts;
#define FDERIVES(Symbol) (fderives + (Symbol) * rulesetsize)
#define FIRSTS(Symbol) (firsts + (Symbol) * varsetsize)
/* number of words required to hold a bit for each rule */ /* number of words required to hold a bit for each rule */
static int rulesetsize; static int rulesetsize;
/* number of words required to hold a bit for each variable */ /* number of words required to hold a bit for each variable */
static int varsetsize; static int varsetsize;
#if DEBUG
/*-----------------. /*-----------------.
| Debugging code. | | Debugging code. |
@@ -47,11 +53,11 @@ static int varsetsize;
static void static void
print_closure (int n) print_closure (int n)
{ {
short *isp; int i;
fprintf (stderr, "n = %d\n", n);
printf ("\n\nn = %d\n\n", n); for (i = 0; i < itemsetsize; ++i)
for (isp = itemset; isp < itemsetend; isp++) fprintf (stderr, " %d\n", itemset[i]);
printf (" %d\n", *isp); fprintf (stderr, "\n\n");
} }
@@ -62,18 +68,19 @@ print_firsts (void)
int j; int j;
unsigned *rowp; unsigned *rowp;
printf ("\n\n\nFIRSTS\n\n"); fprintf (stderr, "FIRSTS\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf ("\n\n%s firsts\n\n", tags[i]); fprintf (stderr, "\t%s firsts\n", tags[i]);
rowp = firsts + ((i - ntokens) * varsetsize); rowp = FIRSTS (i - ntokens);
for (j = 0; j < nvars; j++) for (j = 0; j < nvars; j++)
if (BITISSET (rowp, 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; int j;
unsigned *rp; unsigned *rp;
printf ("\n\n\nFDERIVES\n"); fprintf (stderr, "FDERIVES\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf ("\n\n%s derives\n\n", tags[i]); fprintf (stderr, "\t%s derives\n", tags[i]);
rp = fderives + i * rulesetsize; rp = FDERIVES (i);
for (j = 0; j <= nrules; j++) for (j = 0; j <= nrules; j++)
if (BITISSET (rp, 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);
}
} }
fprintf (stderr, "\n\n");
fflush (stdout);
} }
#endif
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
| Set FIRSTS to be an NVARS by NVARS bit matrix indicating which | | Set FIRSTS to be an NVARS by NVARS bit matrix indicating which |
@@ -130,7 +141,7 @@ set_firsts (void)
sp = derives[i]; sp = derives[i];
while (*sp >= 0) while (*sp >= 0)
{ {
symbol = ritem[rrhs[*sp++]]; symbol = ritem[rule_table[*sp++].rhs];
if (ISVAR (symbol)) if (ISVAR (symbol))
{ {
symbol -= ntokens; symbol -= ntokens;
@@ -143,9 +154,8 @@ set_firsts (void)
RTC (firsts, nvars); RTC (firsts, nvars);
#ifdef DEBUG if (trace_flag)
print_firsts (); print_firsts ();
#endif
} }
/*-------------------------------------------------------------------. /*-------------------------------------------------------------------.
@@ -175,11 +185,11 @@ set_fderives (void)
set_firsts (); set_firsts ();
rrow = fderives + ntokens * rulesetsize; rrow = FDERIVES (ntokens);
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
vrow = firsts + ((i - ntokens) * varsetsize); vrow = FIRSTS (i - ntokens);
cword = *vrow++; cword = *vrow++;
b = 0; b = 0;
for (j = ntokens; j < nsyms; j++) for (j = ntokens; j < nsyms; j++)
@@ -188,9 +198,7 @@ set_fderives (void)
{ {
rp = derives[j]; rp = derives[j];
while ((ruleno = *rp++) > 0) while ((ruleno = *rp++) > 0)
{ SETBIT (rrow, ruleno);
SETBIT (rrow, ruleno);
}
} }
b++; b++;
@@ -204,9 +212,8 @@ set_fderives (void)
rrow += rulesetsize; rrow += rulesetsize;
} }
#ifdef DEBUG if (trace_flag)
print_fderives (); print_fderives ();
#endif
XFREE (firsts); XFREE (firsts);
} }
@@ -229,52 +236,47 @@ void
closure (short *core, int n) closure (short *core, int n)
{ {
int ruleno; int ruleno;
unsigned word;
short *csp; short *csp;
unsigned *dsp;
unsigned *rsp;
short *csend;
unsigned *rsend;
int symbol;
int itemno; int itemno;
int i;
rsp = ruleset; if (trace_flag)
rsend = ruleset + rulesetsize; {
csend = core + n; fprintf (stderr, "Entering closure (items = {");
for (i = 0; i < n; ++i)
fprintf (stderr, " %d ", core[i]);
fprintf (stderr, "}, nitems = %d)\n", n);
}
if (n == 0) if (n == 0)
{ {
dsp = fderives + start_symbol * rulesetsize; for (i = 0; i < rulesetsize; ++i)
while (rsp < rsend) ruleset[i] = FDERIVES (start_symbol)[i];
*rsp++ = *dsp++;
} }
else else
{ {
while (rsp < rsend) for (i = 0; i < rulesetsize; ++i)
*rsp++ = 0; ruleset[i] = 0;
csp = core; for (i = 0; i < n; ++i)
while (csp < csend)
{ {
symbol = ritem[*csp++]; int symbol = ritem[core[i]];
if (ISVAR (symbol)) if (ISVAR (symbol))
{ {
dsp = fderives + symbol * rulesetsize; int j;
rsp = ruleset; for (j = 0; j < rulesetsize; ++j)
while (rsp < rsend) ruleset[j] |= FDERIVES (symbol)[j];
*rsp++ |= *dsp++;
} }
} }
} }
ruleno = 0; ruleno = 0;
itemsetend = itemset; itemsetsize = 0;
csp = core; csp = core;
rsp = ruleset; for (i = 0; i < rulesetsize; ++i)
while (rsp < rsend)
{ {
word = *rsp++; int word = ruleset[i];
if (word == 0) if (word == 0)
{ {
ruleno += BITS_PER_WORD; ruleno += BITS_PER_WORD;
@@ -287,10 +289,10 @@ closure (short *core, int n)
{ {
if (word & (1 << b)) if (word & (1 << b))
{ {
itemno = rrhs[ruleno]; itemno = rule_table[ruleno].rhs;
while (csp < csend && *csp < itemno) while (csp < (core + n) && *csp < itemno)
*itemsetend++ = *csp++; itemset[itemsetsize++] = *csp++;
*itemsetend++ = itemno; itemset[itemsetsize++] = itemno;
} }
ruleno++; ruleno++;
@@ -298,12 +300,11 @@ closure (short *core, int n)
} }
} }
while (csp < csend) while (csp < (core + n))
*itemsetend++ = *csp++; itemset[itemsetsize++] = *csp++;
#if DEBUG if (trace_flag)
print_closure (n); print_closure (n);
#endif
} }
+2 -2
View File
@@ -1,5 +1,5 @@
/* Subroutines for bison /* Subroutines for bison
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -51,6 +51,6 @@ void closure PARAMS ((short *items, int n));
void free_closure PARAMS ((void)); void free_closure PARAMS ((void));
extern short *itemset; extern short *itemset;
extern short *itemsetend; extern size_t itemsetsize;
#endif /* !CLOSURE_H_ */ #endif /* !CLOSURE_H_ */
+142 -166
View File
@@ -19,6 +19,7 @@
02111-1307, USA. */ 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "complain.h"
#include "getargs.h" #include "getargs.h"
#include "files.h" #include "files.h"
#include "gram.h" #include "gram.h"
@@ -28,17 +29,13 @@
#include "reader.h" #include "reader.h"
#include "LR0.h" #include "LR0.h"
int any_conflicts = 0;
errs **err_table = NULL; errs **err_table = NULL;
int expected_conflicts; /* -1 stands for not specified. */
int expected_conflicts = -1;
static char *conflicts = NULL; static char *conflicts = NULL;
static unsigned *shiftset = NULL; static unsigned *shiftset = NULL;
static unsigned *lookaheadset = NULL; static unsigned *lookaheadset = NULL;
static int src_total;
static int rrc_total;
static int src_count;
static int rrc_count;
static inline void static inline void
@@ -63,7 +60,7 @@ flush_shift (int state, int token)
shifts *shiftp; shifts *shiftp;
int k, i; int k, i;
shiftp = shift_table[state]; shiftp = state_table[state].shift_table;
if (shiftp) if (shiftp)
{ {
@@ -71,7 +68,7 @@ flush_shift (int state, int token)
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (shiftp->shifts[i] if (shiftp->shifts[i]
&& token == accessing_symbol[shiftp->shifts[i]]) && token == state_table[shiftp->shifts[i]].accessing_symbol)
(shiftp->shifts[i]) = 0; (shiftp->shifts[i]) = 0;
} }
} }
@@ -93,14 +90,14 @@ resolve_sr_conflict (int state, int lookaheadnum)
unsigned *fp1; unsigned *fp1;
unsigned *fp2; unsigned *fp2;
int redprec; int redprec;
errs *errp = (errs *) xcalloc (sizeof (errs) + ntokens * sizeof (short), 1); errs *errp = ERRS_ALLOC (ntokens + 1);
short *errtokens = errp->errs; short *errtokens = errp->errs;
/* find the rule to reduce by to get precedence of reduction */ /* find the rule to reduce by to get precedence of reduction */
redprec = rprec[LAruleno[lookaheadnum]]; redprec = rule_table[LAruleno[lookaheadnum]].prec;
mask = 1; mask = 1;
fp1 = LA + lookaheadnum * tokensetsize; fp1 = LA (lookaheadnum);
fp2 = lookaheadset; fp2 = lookaheadset;
for (i = 0; i < ntokens; i++) 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 /* Some tokens have been explicitly made errors. Allocate
a permanent errs structure for this state, to record them. */ a permanent errs structure for this state, to record them. */
i = (char *) errtokens - (char *) errp; 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); bcopy (errp, err_table[state], i);
} }
else else
@@ -185,80 +182,53 @@ resolve_sr_conflict (int state, int lookaheadnum)
static void static void
set_conflicts (int state) set_conflicts (int state)
{ {
int i; int i, j;
int k;
shifts *shiftp; shifts *shiftp;
unsigned *fp2;
unsigned *fp3;
unsigned *fp4;
unsigned *fp1;
int symbol; int symbol;
if (consistent[state]) if (state_table[state].consistent)
return; return;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
lookaheadset[i] = 0; lookaheadset[i] = 0;
shiftp = shift_table[state]; shiftp = state_table[state].shift_table;
if (shiftp) if (shiftp)
{ for (i = 0; i < shiftp->nshifts; i++)
k = shiftp->nshifts; {
for (i = 0; i < k; i++) symbol = state_table[shiftp->shifts[i]].accessing_symbol;
{ if (ISVAR (symbol))
symbol = accessing_symbol[shiftp->shifts[i]]; break;
if (ISVAR (symbol)) SETBIT (lookaheadset, symbol);
break; }
SETBIT (lookaheadset, symbol);
}
}
k = lookaheads[state + 1];
fp4 = lookaheadset + tokensetsize;
/* Loop over all rules which require lookahead in this state. First /* Loop over all rules which require lookahead in this state. First
check for shift-reduce conflict, and try to resolve using check for shift-reduce conflict, and try to resolve using
precedence */ precedence */
for (i = lookaheads[state]; i < k; i++) for (i = state_table[state].lookaheads;
if (rprec[LAruleno[i]]) i < state_table[state + 1].lookaheads;
{ ++i)
fp1 = LA + i * tokensetsize; if (rule_table[LAruleno[i]].prec)
fp2 = fp1; for (j = 0; j < tokensetsize; ++j)
fp3 = lookaheadset; if (LA (i)[j] & lookaheadset[j])
while (fp3 < fp4)
{ {
if (*fp2++ & *fp3++) resolve_sr_conflict (state, i);
{ break;
resolve_sr_conflict (state, i);
break;
}
} }
}
/* Loop over all rules which require lookahead in this state. Check /* Loop over all rules which require lookahead in this state. Check
for conflicts not resolved above. */ for conflicts not resolved above. */
for (i = lookaheads[state]; i < k; i++) for (i = state_table[state].lookaheads;
i < state_table[state + 1].lookaheads;
++i)
{ {
fp1 = LA + i * tokensetsize; for (j = 0; j < tokensetsize; ++j)
fp2 = fp1; if (LA (i)[j] & lookaheadset[j])
fp3 = lookaheadset; conflicts[state] = 1;
while (fp3 < fp4) for (j = 0; j < tokensetsize; ++j)
{ lookaheadset[j] |= LA (i)[j];
if (*fp2++ & *fp3++)
{
conflicts[state] = 1;
any_conflicts = 1;
}
}
fp2 = fp1;
fp3 = lookaheadset;
while (fp3 < fp4)
*fp3++ |= *fp2++;
} }
} }
@@ -273,8 +243,6 @@ solve_conflicts (void)
err_table = XCALLOC (errs *, nstates); err_table = XCALLOC (errs *, nstates);
any_conflicts = 0;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
set_conflicts (i); set_conflicts (i);
} }
@@ -284,7 +252,7 @@ solve_conflicts (void)
| Count the number of shift/reduce conflicts. | | Count the number of shift/reduce conflicts. |
`---------------------------------------------*/ `---------------------------------------------*/
static void static int
count_sr_conflicts (int state) count_sr_conflicts (int state)
{ {
int i; int i;
@@ -296,11 +264,11 @@ count_sr_conflicts (int state)
unsigned *fp3; unsigned *fp3;
int symbol; int symbol;
src_count = 0; int src_count = 0;
shiftp = shift_table[state]; shiftp = state_table[state].shift_table;
if (!shiftp) if (!shiftp)
return; return 0;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
{ {
@@ -313,18 +281,18 @@ count_sr_conflicts (int state)
{ {
if (!shiftp->shifts[i]) if (!shiftp->shifts[i])
continue; continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
SETBIT (shiftset, symbol); SETBIT (shiftset, symbol);
} }
k = lookaheads[state + 1]; k = state_table[state + 1].lookaheads;
fp3 = lookaheadset + tokensetsize; 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; fp2 = lookaheadset;
while (fp2 < fp3) while (fp2 < fp3)
@@ -351,6 +319,8 @@ count_sr_conflicts (int state)
fp2++; fp2++;
} }
} }
return src_count;
} }
@@ -358,33 +328,29 @@ count_sr_conflicts (int state)
| Count the number of reduce/reduce conflicts. | | Count the number of reduce/reduce conflicts. |
`----------------------------------------------*/ `----------------------------------------------*/
static void static int
count_rr_conflicts (int state) count_rr_conflicts (int state)
{ {
int i; int i;
int j;
int count;
unsigned mask; unsigned mask;
unsigned *baseword; unsigned *baseword;
unsigned *wordp;
int m;
int n;
rrc_count = 0; int rrc_count = 0;
m = lookaheads[state]; int m = state_table[state].lookaheads;
n = lookaheads[state + 1]; int n = state_table[state + 1].lookaheads;
if (n - m < 2) if (n - m < 2)
return; return 0;
mask = 1; mask = 1;
baseword = LA + m * tokensetsize; baseword = LA (m);
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
wordp = baseword; unsigned *wordp = baseword;
count = 0; int count = 0;
int j;
for (j = m; j < n; j++) for (j = m; j < n; j++)
{ {
if (mask & *wordp) if (mask & *wordp)
@@ -403,6 +369,8 @@ count_rr_conflicts (int state)
baseword++; baseword++;
} }
} }
return rrc_count;
} }
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
@@ -416,31 +384,23 @@ conflict_report (int src_num, int rrc_num)
static char res[4096]; static char res[4096];
char *cp = res; char *cp = res;
if (src_num == 1) if (src_num >= 1)
{ {
sprintf (cp, _(" 1 shift/reduce conflict")); sprintf (cp, ngettext ("%d shift/reduce conflict",
cp += strlen (cp); "%d shift/reduce conflicts", src_num), src_num);
}
else if (src_num > 1)
{
sprintf (cp, _(" %d shift/reduce conflicts"), src_num);
cp += strlen (cp); cp += strlen (cp);
} }
if (src_num > 0 && rrc_num > 0) if (src_num > 0 && rrc_num > 0)
{ {
sprintf (cp, _(" and")); sprintf (cp, " %s ", _("and"));
cp += strlen (cp); cp += strlen (cp);
} }
if (rrc_num == 1) if (rrc_num >= 1)
{ {
sprintf (cp, _(" 1 reduce/reduce conflict")); sprintf (cp, ngettext ("%d reduce/reduce conflict",
cp += strlen (cp); "%d reduce/reduce conflicts", rrc_num), rrc_num);
}
else if (rrc_num > 1)
{
sprintf (cp, _(" %d reduce/reduce conflicts"), rrc_num);
cp += strlen (cp); 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 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; int i;
src_total = 0; int src_total = 0;
rrc_total = 0; int rrc_total = 0;
/* Count the total number of conflicts, and if wanted, give a /* Conflicts by state. */
detailed report in FOUTPUT. */
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ if (conflicts[i])
if (conflicts[i]) {
{ src_total += count_sr_conflicts (i);
count_sr_conflicts (i); rrc_total += count_rr_conflicts (i);
count_rr_conflicts (i); }
src_total += src_count;
rrc_total += rrc_count;
if (verbose_flag) /* Report the total number of conflicts on STDERR. */
{ if (src_total || rrc_total)
fprintf (out, _("State %d contains"), i); {
fputs (conflict_report (src_count, rrc_count), out); 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 (expected_conflicts != -1
if (yacc_flag) && src_total != expected_conflicts)
{ {
/* If invoked with `--yacc', use the output format specified by complain_message_count++;
POSIX. */ fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
fprintf (stderr, _("conflicts: ")); "expected %d shift/reduce conflicts\n",
if (src_total > 0) expected_conflicts),
fprintf (stderr, _(" %d shift/reduce"), src_total); expected_conflicts);
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);
} }
} }
void void
print_reductions (int state) print_reductions (FILE *out, int state)
{ {
int i; int i;
int j; int j;
@@ -531,7 +511,7 @@ print_reductions (int state)
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
shiftset[i] = 0; shiftset[i] = 0;
shiftp = shift_table[state]; shiftp = state_table[state].shift_table;
if (shiftp) if (shiftp)
{ {
k = shiftp->nshifts; k = shiftp->nshifts;
@@ -539,7 +519,7 @@ print_reductions (int state)
{ {
if (!shiftp->shifts[i]) if (!shiftp->shifts[i])
continue; continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
/* if this state has a shift for the error token, /* if this state has a shift for the error token,
@@ -563,14 +543,14 @@ print_reductions (int state)
} }
} }
m = lookaheads[state]; m = state_table[state].lookaheads;
n = lookaheads[state + 1]; n = state_table[state + 1].lookaheads;
if (n - m == 1 && !nodefault) if (n - m == 1 && !nodefault)
{ {
default_rule = LAruleno[m]; default_rule = LAruleno[m];
fp1 = LA + m * tokensetsize; fp1 = LA (m);
fp2 = shiftset; fp2 = shiftset;
fp3 = lookaheadset; fp3 = lookaheadset;
fp4 = lookaheadset + tokensetsize; fp4 = lookaheadset + tokensetsize;
@@ -584,9 +564,9 @@ print_reductions (int state)
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
if (mask & *fp3) if (mask & *fp3)
obstack_fgrow3 (&output_obstack, fprintf (out, _(" %-4s\t[reduce using rule %d (%s)]\n"),
_(" %-4s\t[reduce using rule %d (%s)]\n"), tags[i], default_rule,
tags[i], default_rule, tags[rlhs[default_rule]]); tags[rule_table[default_rule].lhs]);
mask <<= 1; mask <<= 1;
if (mask == 0) if (mask == 0)
@@ -596,9 +576,8 @@ print_reductions (int state)
} }
} }
obstack_fgrow2 (&output_obstack, fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
_(" $default\treduce using rule %d (%s)\n\n"), default_rule, tags[rule_table[default_rule].lhs]);
default_rule, tags[rlhs[default_rule]]);
} }
else if (n - m >= 1) else if (n - m >= 1)
{ {
@@ -609,7 +588,7 @@ print_reductions (int state)
if (!nodefault) if (!nodefault)
for (i = m; i < n; i++) for (i = m; i < n; i++)
{ {
fp1 = LA + i * tokensetsize; fp1 = LA (i);
fp2 = shiftset; fp2 = shiftset;
fp3 = lookaheadset; fp3 = lookaheadset;
@@ -656,7 +635,7 @@ print_reductions (int state)
{ {
if (!shiftp->shifts[i]) if (!shiftp->shifts[i])
continue; continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = state_table[shiftp->shifts[i]].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
SETBIT (shiftset, symbol); SETBIT (shiftset, symbol);
@@ -664,7 +643,7 @@ print_reductions (int state)
} }
mask = 1; mask = 1;
fp1 = LA + m * tokensetsize; fp1 = LA (m);
fp2 = shiftset; fp2 = shiftset;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
@@ -685,9 +664,9 @@ print_reductions (int state)
if (j != default_LA) if (j != default_LA)
{ {
rule = LAruleno[j]; rule = LAruleno[j];
obstack_fgrow3 (&output_obstack, fprintf (out,
_(" %-4s\treduce using rule %d (%s)\n"), _(" %-4s\treduce using rule %d (%s)\n"),
tags[i], rule, tags[rlhs[rule]]); tags[i], rule, tags[rule_table[rule].lhs]);
} }
else else
defaulted = 1; defaulted = 1;
@@ -699,15 +678,15 @@ print_reductions (int state)
if (defaulted) if (defaulted)
{ {
rule = LAruleno[default_LA]; rule = LAruleno[default_LA];
obstack_fgrow3 (&output_obstack, fprintf (out,
_(" %-4s\treduce using rule %d (%s)\n"), _(" %-4s\treduce using rule %d (%s)\n"),
tags[i], rule, tags[rlhs[rule]]); tags[i], rule, tags[rule_table[rule].lhs]);
defaulted = 0; defaulted = 0;
} }
rule = LAruleno[j]; rule = LAruleno[j];
obstack_fgrow3 (&output_obstack, fprintf (out,
_(" %-4s\t[reduce using rule %d (%s)]\n"), _(" %-4s\t[reduce using rule %d (%s)]\n"),
tags[i], rule, tags[rlhs[rule]]); tags[i], rule, tags[rule_table[rule].lhs]);
} }
} }
@@ -726,11 +705,8 @@ print_reductions (int state)
} }
if (default_LA >= 0) if (default_LA >= 0)
obstack_fgrow2 (&output_obstack, fprintf (out, _(" $default\treduce using rule %d (%s)\n"),
_(" $default\treduce using rule %d (%s)\n"), default_rule, tags[rule_table[default_rule].lhs]);
default_rule, tags[rlhs[default_rule]]);
obstack_1grow (&output_obstack, '\n');
} }
} }
+3 -3
View File
@@ -23,12 +23,12 @@
# include "state.h" # include "state.h"
void solve_conflicts PARAMS ((void)); void solve_conflicts PARAMS ((void));
void print_conflicts PARAMS ((FILE *out)); void conflicts_print PARAMS ((void));
void print_reductions PARAMS ((int)); void conflicts_output PARAMS ((FILE *out));
void print_reductions PARAMS ((FILE*out, int state));
void free_conflicts PARAMS ((void)); void free_conflicts PARAMS ((void));
/* Were there conflicts? */ /* Were there conflicts? */
extern int any_conflicts;
extern errs **err_table; extern errs **err_table;
extern int expected_conflicts; extern int expected_conflicts;
#endif /* !CONFLICTS_H_ */ #endif /* !CONFLICTS_H_ */
+15 -15
View File
@@ -1,5 +1,5 @@
/* Match rules with nonterminals for bison, /* Match rules with nonterminals for bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -25,38 +25,39 @@
*/ */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "types.h" #include "types.h"
#include "reader.h"
#include "gram.h" #include "gram.h"
#include "derives.h" #include "derives.h"
short **derives; short **derives;
#if DEBUG
static void static void
print_derives (void) print_derives (void)
{ {
int i; int i;
short *sp;
fputs ("\n\n\n", stdout); fputs ("DERIVES\n", stderr);
printf (_("DERIVES"));
fputs ("\n\n", stdout);
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
printf (_("%s derives"), tags[i]); short *sp;
fprintf (stderr, "\t%s derives\n", tags[i]);
for (sp = derives[i]; *sp > 0; sp++) for (sp = derives[i]; *sp > 0; sp++)
{ {
printf (" %d", *sp); short *rhsp;
fprintf (stderr, "\t\t%d:", *sp);
for (rhsp = ritem + rule_table[*sp].rhs; *rhsp > 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]);
fputc ('\n', stderr);
} }
putchar ('\n');
} }
putchar ('\n'); fputs ("\n\n", stderr);
} }
#endif
void void
set_derives (void) set_derives (void)
@@ -74,7 +75,7 @@ set_derives (void)
p = delts; p = delts;
for (i = nrules; i > 0; i--) for (i = nrules; i > 0; i--)
{ {
lhs = rlhs[i]; lhs = rule_table[i].lhs;
if (lhs >= 0) if (lhs >= 0)
{ {
p->next = dset[lhs]; p->next = dset[lhs];
@@ -99,9 +100,8 @@ set_derives (void)
*q++ = -1; *q++ = -1;
} }
#if DEBUG if (trace_flag)
print_derives (); print_derives ();
#endif
XFREE (dset + ntokens); XFREE (dset + ntokens);
XFREE (delts); XFREE (delts);
+18 -8
View File
@@ -86,26 +86,36 @@ stringappend (const char *string1, const char *string2)
} }
/*---------------------------------------------------------------. /*-----------------------------------------------------------------.
| Computes the macro name used to avoid double inclusion in the | | Computes the macro name used to avoid double inclusion in the |
| header of the parser and store it in header_macro_name. | | header of the parser and store it in header_macro_name. Be sure |
`---------------------------------------------------------------*/ | to produce valid CPP names (don't start with digit, remain |
| alphanumerical + underscore). |
`-----------------------------------------------------------------*/
static char * static char *
compute_header_macro (void) compute_header_macro (void)
{ {
const char *prefix = "BISON_";
char *macro_name, *cp; char *macro_name, *cp;
if (spec_defines_file) if (spec_defines_file)
macro_name = xstrdup (spec_defines_file); {
macro_name = XMALLOC (char,
strlen (prefix) +
strlen (spec_defines_file) + 1);
cp = stpcpy (macro_name, prefix);
cp = stpcpy (cp, spec_defines_file);
}
else else
{ {
macro_name = XMALLOC (char, macro_name = XMALLOC (char,
strlen (prefix) +
strlen (base_name) + strlen (base_name) +
strlen (header_extension) + 1); strlen (header_extension) + 1);
cp = stpcpy (macro_name, prefix);
stpcpy (macro_name, base_name); cp = stpcpy (cp, base_name);
strcat (macro_name, header_extension); cp = stpcpy (cp, header_extension);
} }
for (cp = macro_name; *cp; ++cp) for (cp = macro_name; *cp; ++cp)
+6 -5
View File
@@ -32,9 +32,9 @@ int no_lines_flag = 0;
int no_parser_flag = 0; int no_parser_flag = 0;
int token_table_flag = 0; int token_table_flag = 0;
int verbose_flag = 0; int verbose_flag = 0;
int statistics_flag = 0;
int yacc_flag = 0; /* for -y */ int yacc_flag = 0; /* for -y */
int graph_flag = 0; int graph_flag = 0;
int trace_flag = 0;
const char *skeleton = NULL; const char *skeleton = NULL;
@@ -63,11 +63,12 @@ static struct option longopts[] =
{"defines", optional_argument, 0, 'd'}, {"defines", optional_argument, 0, 'd'},
{"verbose", no_argument, 0, 'v'}, {"verbose", no_argument, 0, 'v'},
{"file-prefix", required_argument, 0, 'b'}, {"file-prefix", required_argument, 0, 'b'},
{"output", required_argument, 0, 'o'},
{"output-file", required_argument, 0, 'o'}, {"output-file", required_argument, 0, 'o'},
{"graph", optional_argument, 0, 'g'}, {"graph", optional_argument, 0, 'g'},
/* Hidden. */ /* Hidden. */
{"statistics", no_argument, &statistics_flag, 1}, {"trace", no_argument, &trace_flag, 1},
{0, 0, 0, 0} {0, 0, 0, 0}
}; };
@@ -118,9 +119,9 @@ Output:\n\
-d, --defines also produce a header file\n\ -d, --defines also produce a header file\n\
-v, --verbose also produce an explanation of the automaton\n\ -v, --verbose also produce an explanation of the automaton\n\
-b, --file-prefix=PREFIX specify a PREFIX for output files\n\ -b, --file-prefix=PREFIX specify a PREFIX for output files\n\
-o, --output-file=FILE leave output to FILE\n\ -o, --output=FILE leave output to FILE\n\
-g, --graph also produce a VCG graph description of the \ -g, --graph also produce a VCG description of the automaton\n\
automaton\n"), stream); "), stream);
putc ('\n', stream); putc ('\n', stream);
fputs (_("\ fputs (_("\
+1 -1
View File
@@ -31,11 +31,11 @@ extern int defines_flag; /* for -d */
extern int locations_flag; extern int locations_flag;
extern int no_lines_flag; /* for -l */ extern int no_lines_flag; /* for -l */
extern int no_parser_flag; /* for -n */ extern int no_parser_flag; /* for -n */
extern int statistics_flag;
extern int token_table_flag; /* for -k */ extern int token_table_flag; /* for -k */
extern int verbose_flag; /* for -v */ extern int verbose_flag; /* for -v */
extern int graph_flag; /* for -g */ extern int graph_flag; /* for -g */
extern int yacc_flag; /* for -y */ extern int yacc_flag; /* for -y */
extern int trace_flag;
void getargs PARAMS ((int argc, char *argv[])); void getargs PARAMS ((int argc, char *argv[]));
+3 -3
View File
@@ -1,5 +1,5 @@
/* Allocate input grammar variables for bison, /* Allocate input grammar variables for bison,
Copyright 1984, 1986, 1989 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -20,6 +20,7 @@ Boston, MA 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "gram.h"
void dummy PARAMS((void)); void dummy PARAMS((void));
@@ -32,8 +33,7 @@ int ntokens;
int nvars; int nvars;
short *ritem = NULL; short *ritem = NULL;
short *rlhs = NULL; rule_t *rule_table = NULL;
short *rrhs = NULL;
short *rprec = NULL; short *rprec = NULL;
short *rprecsym = NULL; short *rprecsym = NULL;
short *sprec = NULL; short *sprec = NULL;
+37 -19
View File
@@ -1,5 +1,5 @@
/* Data definitions for internal representation of bison's input, /* Data definitions for internal representation of bison's input,
Copyright 1984, 1986, 1989, 1992 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 1992, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -38,21 +38,36 @@
The rules receive rule numbers 1 to nrules in the order they are The rules receive rule numbers 1 to nrules in the order they are
written. Actions and guards are accessed via the rule number. written. Actions and guards are accessed via the rule number.
The rules themselves are described by three arrays: rrhs, rlhs and The rules themselves are described by several arrays: amongst which
ritem. rlhs[R] is the symbol number of the left hand side of rule RITEM, and RULE_TABLE.
R. The right hand side is stored as symbol numbers in a portion of
ritem. rrhs[R] contains the index in ritem of the beginning of the RULE_TABLE is an array of struct rule_s, which members are:
RULE_TABLE[R].lhs -- the symbol number of the left hand side of
rule R. If -1, the rule has been thrown out by reduce.c and should
be ignored.
RULE_TABLE[R].rhs -- the index in RITEM of the beginning of the
portion for rule R. portion for rule R.
If rlhs[R] is -1, the rule has been thrown out by reduce.c and RULE_TABLE[R].prec -- the precedence level of R.
should be ignored.
RULE_TABLE[R].precsym -- the symbol-number of the symbol in %prec
for R (if any).
RULE_TABLE[R].assoc -- the associativity of R.
RULE_TABLE[R].line -- the line where R was defined.
The right hand side is stored as symbol numbers in a portion of
RITEM.
The length of the portion is one greater than the number of symbols The length of the portion is one greater than the number of symbols
in the rule's right hand side. The last element in the portion in the rule's right hand side. The last element in the portion
contains minus R, which identifies it as the end of a portion and contains minus R, which identifies it as the end of a portion and
says which rule it is for. says which rule it is for.
The portions of ritem come in order of increasing rule number and The portions of RITEM come in order of increasing rule number and
are followed by an element which is zero to mark the end. nitems are followed by an element which is zero to mark the end. nitems
is the total length of ritem, not counting the final zero. Each is the total length of ritem, not counting the final zero. Each
element of ritem is called an "item" and its index in ritem is an element of ritem is called an "item" and its index in ritem is an
@@ -61,10 +76,7 @@
Item numbers are used in the finite state machine to represent Item numbers are used in the finite state machine to represent
places that parsing can get to. places that parsing can get to.
Precedence levels are recorded in the vectors sprec and rprec. SPREC records the precedence level of each symbol.
sprec records the precedence level of each symbol, rprec the
precedence level of each rule. rprecsym is the symbol-number of
the symbol in %prec for this rule (if any).
Precedence levels are assigned in increasing order starting with 1 Precedence levels are assigned in increasing order starting with 1
so that numerically higher precedence values mean tighter binding so that numerically higher precedence values mean tighter binding
@@ -84,18 +96,12 @@ extern int ntokens;
extern int nvars; extern int nvars;
extern short *ritem; extern short *ritem;
extern short *rlhs;
extern short *rrhs;
extern short *rprec;
extern short *rprecsym;
extern short *sprec; extern short *sprec;
extern short *rassoc;
extern short *sassoc; extern short *sassoc;
extern short *rline; /* Source line number of each rule */
extern int start_symbol; extern int start_symbol;
/* associativity values in elements of rassoc, sassoc. */ /* associativity values in elements of rassoc, sassoc. */
typedef enum typedef enum
{ {
@@ -105,6 +111,18 @@ typedef enum
} associativity; } 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 /* token translation table: indexed by a token number as returned by
the user's yylex routine, it yields the internal token number used the user's yylex routine, it yields the internal token number used
by the parser and throughout bison. */ by the parser and throughout bison. */
+121 -168
View File
@@ -1,5 +1,5 @@
/* Compute look-ahead criteria for bison, /* Compute look-ahead criteria for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -32,15 +32,15 @@
#include "nullable.h" #include "nullable.h"
#include "derives.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; int tokensetsize;
short *lookaheads;
short *LAruleno; short *LAruleno;
unsigned *LA; unsigned *LA;
short *accessing_symbol;
char *consistent;
core **state_table;
shifts **shift_table;
reductions **reduction_table;
short *goto_map; short *goto_map;
short *from_state; short *from_state;
short *to_state; short *to_state;
@@ -48,9 +48,13 @@ short *to_state;
extern void berror PARAMS ((const char *)); extern void berror PARAMS ((const char *));
static int infinity; static int infinity;
static int maxrhs;
static int ngotos; 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 short **includes;
static shorts **lookback; static shorts **lookback;
static short **R; static short **R;
@@ -74,8 +78,8 @@ traverse (int i)
VERTICES[++top] = i; VERTICES[++top] = i;
INDEX[i] = height = top; INDEX[i] = height = top;
base = F + i * tokensetsize; base = F (i);
fp3 = base + tokensetsize; fp3 = F (i + 1);
rp = R[i]; rp = R[i];
if (rp) if (rp)
@@ -89,7 +93,7 @@ traverse (int i)
INDEX[i] = INDEX[j]; INDEX[i] = INDEX[j];
fp1 = base; fp1 = base;
fp2 = F + j * tokensetsize; fp2 = F (j);
while (fp1 < fp3) while (fp1 < fp3)
*fp1++ |= *fp2++; *fp1++ |= *fp2++;
@@ -107,7 +111,7 @@ traverse (int i)
break; break;
fp1 = base; fp1 = base;
fp2 = F + j * tokensetsize; fp2 = F (j);
while (fp1 < fp3) while (fp1 < fp3)
*fp2++ = *fp1++; *fp2++ = *fp1++;
@@ -132,65 +136,85 @@ digraph (short **relation)
INDEX[i] = 0; INDEX[i] = 0;
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ if (INDEX[i] == 0 && R[i])
if (INDEX[i] == 0 && R[i]) traverse (i);
traverse (i);
}
XFREE (INDEX); XFREE (INDEX);
XFREE (VERTICES); XFREE (VERTICES);
} }
/*--------------------.
| Build STATE_TABLE. |
`--------------------*/
static void static void
set_state_table (void) set_state_table (void)
{ {
core *sp; /* NSTATES + 1 because lookahead for the pseudo state number NSTATES
might be used (see conflicts.c). It is too opaque for me to
provide a probably less hacky implementation. --akim */
state_table = XCALLOC (state_t, nstates + 1);
state_table = XCALLOC (core *, nstates); {
core *sp;
for (sp = first_state; sp; sp = sp->next)
{
state_table[sp->number].state = sp;
state_table[sp->number].accessing_symbol = sp->accessing_symbol;
}
}
for (sp = first_state; sp; sp = sp->next) {
state_table[sp->number] = sp; shifts *sp;
for (sp = first_shift; sp; sp = sp->next)
state_table[sp->number].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 /* Return the size of the longest ride hand side of the rules. */
set_accessing_symbol (void) static size_t
{ maxrhs (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)
{ {
short *itemp; short *itemp;
int length; int length;
@@ -212,7 +236,7 @@ set_maxrhs (void)
} }
} }
maxrhs = max; return max;
} }
@@ -221,65 +245,23 @@ initialize_LA (void)
{ {
int i; int i;
int j; int j;
int count;
reductions *rp;
shifts *sp;
short *np; short *np;
reductions *rp;
consistent = XCALLOC (char, nstates); size_t nLA = state_table[nstates].lookaheads;
lookaheads = XCALLOC (short, nstates + 1); if (!nLA)
nLA = 1;
count = 0; LA = XCALLOC (unsigned, nLA * tokensetsize);
for (i = 0; i < nstates; i++) LAruleno = XCALLOC (short, nLA);
{ lookback = XCALLOC (shorts *, nLA);
int k;
lookaheads[i] = count;
rp = reduction_table[i];
sp = shift_table[i];
if (rp && (rp->nreds > 1
|| (sp && !ISVAR (accessing_symbol[sp->shifts[0]]))))
count += rp->nreds;
else
consistent[i] = 1;
if (sp)
for (k = 0; k < sp->nshifts; k++)
{
if (accessing_symbol[sp->shifts[k]] == error_token_number)
{
consistent[i] = 0;
break;
}
}
}
lookaheads[nstates] = count;
if (count == 0)
{
LA = XCALLOC (unsigned, 1 * tokensetsize);
LAruleno = XCALLOC (short, 1);
lookback = XCALLOC (shorts *, 1);
}
else
{
LA = XCALLOC (unsigned, count * tokensetsize);
LAruleno = XCALLOC (short, count);
lookback = XCALLOC (shorts *, count);
}
np = LAruleno; np = LAruleno;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ if (!state_table[i].consistent)
if (!consistent[i]) if ((rp = state_table[i].reduction_table))
{ for (j = 0; j < rp->nreds; j++)
if ((rp = reduction_table[i])) *np++ = rp->rules[j];
for (j = 0; j < rp->nreds; j++)
*np++ = rp->rules[j];
}
}
} }
@@ -302,7 +284,7 @@ set_goto_map (void)
{ {
for (i = sp->nshifts - 1; i >= 0; i--) 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)) if (ISTOKEN (symbol))
break; break;
@@ -337,7 +319,7 @@ set_goto_map (void)
for (i = sp->nshifts - 1; i >= 0; i--) for (i = sp->nshifts - 1; i >= 0; i--)
{ {
state2 = sp->shifts[i]; state2 = sp->shifts[i];
symbol = accessing_symbol[state2]; symbol = state_table[state2].accessing_symbol;
if (ISTOKEN (symbol)) if (ISTOKEN (symbol))
break; break;
@@ -413,7 +395,7 @@ initialize_F (void)
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ {
stateno = to_state[i]; stateno = to_state[i];
sp = shift_table[stateno]; sp = state_table[stateno].shift_table;
if (sp) if (sp)
{ {
@@ -421,7 +403,7 @@ initialize_F (void)
for (j = 0; j < k; j++) for (j = 0; j < k; j++)
{ {
symbol = accessing_symbol[sp->shifts[j]]; symbol = state_table[sp->shifts[j]].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
SETBIT (rowp, symbol); SETBIT (rowp, symbol);
@@ -429,7 +411,7 @@ initialize_F (void)
for (; j < k; j++) for (; j < k; j++)
{ {
symbol = accessing_symbol[sp->shifts[j]]; symbol = state_table[sp->shifts[j]].accessing_symbol;
if (nullable[symbol]) if (nullable[symbol])
edge[nedges++] = map_goto (stateno, symbol); edge[nedges++] = map_goto (stateno, symbol);
} }
@@ -452,10 +434,7 @@ initialize_F (void)
digraph (reads); digraph (reads);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ XFREE (reads[i]);
if (reads[i])
XFREE (reads[i]);
}
XFREE (reads); XFREE (reads);
XFREE (edge); XFREE (edge);
@@ -470,8 +449,8 @@ add_lookback_edge (int stateno, int ruleno, int gotono)
int found; int found;
shorts *sp; shorts *sp;
i = lookaheads[stateno]; i = state_table[stateno].lookaheads;
k = lookaheads[stateno + 1]; k = state_table[stateno + 1].lookaheads;
found = 0; found = 0;
while (!found && i < k) while (!found && i < k)
{ {
@@ -568,13 +547,13 @@ build_relations (void)
includes = XCALLOC (short *, ngotos); includes = XCALLOC (short *, ngotos);
edge = XCALLOC (short, ngotos + 1); edge = XCALLOC (short, ngotos + 1);
states = XCALLOC (short, maxrhs + 1); states = XCALLOC (short, maxrhs () + 1);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ {
nedges = 0; nedges = 0;
state1 = from_state[i]; 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++) for (rulep = derives[symbol1]; *rulep > 0; rulep++)
{ {
@@ -582,23 +561,23 @@ build_relations (void)
states[0] = state1; states[0] = state1;
stateno = state1; stateno = state1;
for (rp = ritem + rrhs[*rulep]; *rp > 0; rp++) for (rp = ritem + rule_table[*rulep].rhs; *rp > 0; rp++)
{ {
symbol2 = *rp; symbol2 = *rp;
sp = shift_table[stateno]; sp = state_table[stateno].shift_table;
k = sp->nshifts; k = sp->nshifts;
for (j = 0; j < k; j++) for (j = 0; j < k; j++)
{ {
stateno = sp->shifts[j]; stateno = sp->shifts[j];
if (accessing_symbol[stateno] == symbol2) if (state_table[stateno].accessing_symbol == symbol2)
break; break;
} }
states[length++] = stateno; states[length++] = stateno;
} }
if (!consistent[stateno]) if (!state_table[stateno].consistent)
add_lookback_edge (stateno, *rulep, i); add_lookback_edge (stateno, *rulep, i);
length--; length--;
@@ -651,10 +630,7 @@ compute_FOLLOWS (void)
digraph (includes); digraph (includes);
for (i = 0; i < ngotos; i++) for (i = 0; i < ngotos; i++)
{ XFREE (includes[i]);
if (includes[i])
XFREE (includes[i]);
}
XFREE (includes); XFREE (includes);
} }
@@ -664,39 +640,20 @@ static void
compute_lookaheads (void) compute_lookaheads (void)
{ {
int i; int i;
int n;
unsigned *fp1;
unsigned *fp2;
unsigned *fp3;
shorts *sp; shorts *sp;
unsigned *rowp;
shorts *sptmp; /* JF */
rowp = LA; for (i = 0; i < state_table[nstates].lookaheads; i++)
n = lookaheads[nstates]; for (sp = lookback[i]; sp; sp = sp->next)
for (i = 0; i < n; i++) {
{ unsigned *fp1 = LA (i);
fp3 = rowp + tokensetsize; unsigned *fp2 = F (sp->value);
for (sp = lookback[i]; sp; sp = sp->next) while (fp1 < LA (i + 1))
{ *fp1++ |= *fp2++;
fp1 = rowp; }
fp2 = F + tokensetsize * sp->value;
while (fp1 < fp3)
*fp1++ |= *fp2++;
}
rowp = fp3; /* Free LOOKBACK. */
} for (i = 0; i < state_table[nstates].lookaheads; i++)
LIST_FREE (shorts, lookback[i]);
for (i = 0; i < n; i++)
{
/* JF removed ref to freed storage */
for (sp = lookback[i]; sp; sp = sptmp)
{
sptmp = sp->next;
XFREE (sp);
}
}
XFREE (lookback); XFREE (lookback);
XFREE (F); XFREE (F);
@@ -709,10 +666,6 @@ lalr (void)
tokensetsize = WORDSIZE (ntokens); tokensetsize = WORDSIZE (ntokens);
set_state_table (); set_state_table ();
set_accessing_symbol ();
set_shift_table ();
set_reduction_table ();
set_maxrhs ();
initialize_LA (); initialize_LA ();
set_goto_map (); set_goto_map ();
initialize_F (); initialize_F ();
+27 -13
View File
@@ -49,12 +49,6 @@ extern short *goto_map;
extern short *from_state; extern short *from_state;
extern short *to_state; extern short *to_state;
/* CONSISTENT[S] is nonzero if no lookahead is needed to decide what
to do in state S. */
extern char *consistent;
/* LARULENO is a vector which records the rules that need lookahead in /* LARULENO is a vector which records the rules that need lookahead in
various states. The elements of LARULENO that apply to state S are various states. The elements of LARULENO that apply to state S are
those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1. Each element those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1. Each element
@@ -72,15 +66,35 @@ extern short *LAruleno;
it is a conflict. */ it is a conflict. */
extern unsigned *LA; extern unsigned *LA;
#define LA(Rule) (LA + (Rule) * tokensetsize)
/* A structure decorating a state, with additional information. */
typedef struct state_s
{
/* A state. */
core *state;
/* Its accessing symbol. */
short accessing_symbol;
shifts *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 int tokensetsize;
extern short *lookaheads;
extern short *accessing_symbol;
extern core **state_table;
extern shifts **shift_table;
extern reductions **reduction_table;
/* The number of lookaheads. */
extern size_t nlookaheads;
#endif /* !LALR_H_ */ #endif /* !LALR_H_ */
+86 -42
View File
@@ -21,7 +21,6 @@
#include "system.h" #include "system.h"
#include "getargs.h" #include "getargs.h"
#include "files.h" #include "files.h"
#include "getopt.h" /* for optarg */
#include "symtab.h" #include "symtab.h"
#include "lex.h" #include "lex.h"
#include "complain.h" #include "complain.h"
@@ -32,14 +31,13 @@
struct obstack token_obstack; struct obstack token_obstack;
const char *token_buffer = NULL; const char *token_buffer = NULL;
bucket *symval; bucket *symval = NULL;
int numval; int numval;
/* these two describe a token to be reread */ /* A token to be reread, see unlex and lex. */
static token_t unlexed = tok_undef; static token_t unlexed = tok_undef;
/* by the next call to lex */
static bucket *unlexed_symval = NULL; static bucket *unlexed_symval = NULL;
static const char *unlexed_token_buffer = NULL;
void void
lex_init (void) lex_init (void)
@@ -324,6 +322,7 @@ void
unlex (token_t token) unlex (token_t token)
{ {
unlexed = token; unlexed = token;
unlexed_token_buffer = token_buffer;
unlexed_symval = symval; unlexed_symval = symval;
} }
@@ -368,6 +367,7 @@ lex (void)
{ {
token_t res = unlexed; token_t res = unlexed;
symval = unlexed_symval; symval = unlexed_symval;
token_buffer = unlexed_token_buffer;
unlexed = tok_undef; unlexed = tok_undef;
return res; return res;
} }
@@ -426,7 +426,7 @@ lex (void)
/* parse the literal token and compute character code in code */ /* parse the literal token and compute character code in code */
{ {
int code, discode; int code;
obstack_1grow (&token_obstack, '\''); obstack_1grow (&token_obstack, '\'');
literalchar (&token_obstack, &code, '\''); literalchar (&token_obstack, &code, '\'');
@@ -434,6 +434,7 @@ lex (void)
c = getc (finput); c = getc (finput);
if (c != '\'') if (c != '\'')
{ {
int discode;
complain (_("use \"...\" for multi-character literal tokens")); complain (_("use \"...\" for multi-character literal tokens"));
while (1) while (1)
if (!literalchar (0, &discode, '\'')) if (!literalchar (0, &discode, '\''))
@@ -444,7 +445,7 @@ lex (void)
token_buffer = obstack_finish (&token_obstack); token_buffer = obstack_finish (&token_obstack);
symval = getsym (token_buffer); symval = getsym (token_buffer);
symval->class = token_sym; symval->class = token_sym;
if (!symval->user_token_number) if (symval->user_token_number == SUNDEF)
symval->user_token_number = code; symval->user_token_number = code;
return tok_identifier; return tok_identifier;
} }
@@ -552,28 +553,27 @@ struct percent_table_struct percent_table[] =
{ "nonassoc", NULL, tok_nonassoc }, { "nonassoc", NULL, tok_nonassoc },
{ "binary", NULL, tok_nonassoc }, { "binary", NULL, tok_nonassoc },
{ "prec", NULL, tok_prec }, { "prec", NULL, tok_prec },
{ "locations", &locations_flag, tok_noop }, /* -l */ { "locations", &locations_flag, tok_intopt }, /* -l */
{ "no_lines", &no_lines_flag, tok_noop }, /* -l */ { "no-lines", &no_lines_flag, tok_intopt }, /* -l */
{ "raw", NULL, tok_obsolete }, /* -r */ { "raw", NULL, tok_obsolete }, /* -r */
{ "token_table", &token_table_flag, tok_noop }, /* -k */ { "token-table", &token_table_flag, tok_intopt }, /* -k */
{ "yacc", &yacc_flag, tok_noop }, /* -y */ { "yacc", &yacc_flag, tok_intopt }, /* -y */
{ "fixed_output_files",&yacc_flag, tok_noop }, /* -y */ { "fixed-output-files",&yacc_flag, tok_intopt }, /* -y */
{ "defines", &defines_flag, tok_noop }, /* -d */ { "defines", &defines_flag, tok_intopt }, /* -d */
{ "no_parser", &no_parser_flag, tok_noop }, /* -n */ { "no-parser", &no_parser_flag, tok_intopt }, /* -n */
{ "graph", &graph_flag, tok_noop }, /* -g */ { "graph", &graph_flag, tok_intopt }, /* -g */
#if 0
/* For the time being, this is not enabled yet, while it's possible /* FIXME: semantic parsers which will output an `include' of an
though, since we use obstacks. The only risk is with semantic output file: be sure that the name included is indeed the name of
parsers which will output an `include' of an output file: be sure the output file. */
that the name included is indeed the name of the output file. */ { "output", &spec_outfile, tok_stropt }, /* -o */
{ "output_file", &spec_outfile, tok_setopt }, /* -o */ { "file-prefix", &spec_file_prefix, tok_stropt }, /* -b */
{ "file_prefix", &spec_file_prefix, tok_setopt }, /* -b */ { "name-prefix", &spec_name_prefix, tok_stropt }, /* -p */
{ "name_prefix", &spec_name_prefix, tok_setopt }, /* -p */
#endif { "verbose", &verbose_flag, tok_intopt }, /* -v */
{ "verbose", &verbose_flag, tok_noop }, /* -v */ { "debug", &debug_flag, tok_intopt }, /* -t */
{ "debug", &debug_flag, tok_noop }, /* -t */ { "semantic-parser", &semantic_parser, tok_intopt },
{ "semantic_parser", &semantic_parser, tok_noop }, { "pure-parser", &pure_parser, tok_intopt },
{ "pure_parser", &pure_parser, tok_noop },
{ NULL, NULL, tok_illegal} { NULL, NULL, tok_illegal}
}; };
@@ -584,7 +584,10 @@ struct percent_table_struct percent_table[] =
token_t token_t
parse_percent_token (void) parse_percent_token (void)
{ {
struct percent_table_struct *tx; struct percent_table_struct *tx = NULL;
const char *arg = NULL;
/* Where the ARG was found in token_buffer. */
size_t arg_offset = 0;
int c = getc (finput); int c = getc (finput);
@@ -596,6 +599,8 @@ parse_percent_token (void)
case '{': case '{':
return tok_percent_left_curly; return tok_percent_left_curly;
/* FIXME: Who the heck are those 5 guys!?! `%<' = `%left'!!!
Let's ask for there removal. */
case '<': case '<':
return tok_left; return tok_left;
@@ -618,42 +623,81 @@ parse_percent_token (void)
obstack_1grow (&token_obstack, '%'); obstack_1grow (&token_obstack, '%');
while (isalpha (c) || c == '_' || c == '-') while (isalpha (c) || c == '_' || c == '-')
{ {
if (c == '-') if (c == '_')
c = '_'; c = '-';
obstack_1grow (&token_obstack, c); obstack_1grow (&token_obstack, c);
c = getc (finput); c = getc (finput);
} }
ungetc (c, 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 == '=')
{
/* End of the directive. We skip the `='. */
obstack_1grow (&token_obstack, '\0');
/* Fetch the ARG if present. */
c = getc (finput);
if (c == '"')
{
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'); obstack_1grow (&token_obstack, '\0');
token_buffer = obstack_finish (&token_obstack); token_buffer = obstack_finish (&token_obstack);
if (arg_offset)
arg = token_buffer + arg_offset;
/* table lookup % directive */ /* table lookup % directive */
for (tx = percent_table; tx->name; tx++) for (tx = percent_table; tx->name; tx++)
if (strcmp (token_buffer + 1, tx->name) == 0) if (strcmp (token_buffer + 1, tx->name) == 0)
break; break;
if (tx->set_flag) if (arg && tx->retval != tok_stropt)
{ fatal (_("`%s' supports no argument: %s"), token_buffer, quote (arg));
*((int *) (tx->set_flag)) = 1;
return tok_noop;
}
switch (tx->retval) switch (tx->retval)
{ {
case tok_setopt: case tok_stropt:
*((char **) (tx->set_flag)) = optarg; assert (tx->set_flag);
if (arg)
{
/* Keep only the first assignment: command line options have
already been processed, and we want them to have
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)) = xstrdup (arg);
}
else
fatal (_("`%s' requires an argument"), token_buffer);
return tok_noop;
break;
case tok_intopt:
assert (tx->set_flag);
*((int *) (tx->set_flag)) = 1;
return tok_noop; return tok_noop;
break; break;
case tok_obsolete: case tok_obsolete:
fatal (_("`%s' is no longer supported"), token_buffer); fatal (_("`%s' is no longer supported"), token_buffer);
return tok_noop;
break; break;
default: default:
/* Other cases do not apply here. */ return tx->retval;
break; break;
} }
abort ();
return tx->retval;
} }
+2 -1
View File
@@ -49,7 +49,8 @@ typedef enum token_e
tok_expect, tok_expect,
tok_thong, tok_thong,
tok_noop, tok_noop,
tok_setopt, tok_intopt,
tok_stropt,
tok_illegal, tok_illegal,
tok_obsolete tok_obsolete
} token_t; } token_t;
+12 -9
View File
@@ -62,15 +62,16 @@ main (int argc, char *argv[])
if (complain_message_count) if (complain_message_count)
exit (1); exit (1);
/* find useless nonterminals and productions and reduce the grammar. In /* Find useless nonterminals and productions and reduce the grammar.
file reduce.c */ In file reduce.c. */
reduce_grammar (); 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_derives ();
set_nullable (); 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. */ See state.h for more info. */
generate_states (); generate_states ();
@@ -82,6 +83,7 @@ main (int argc, char *argv[])
conflicts. Also resolve s/r conflicts based on precedence conflicts. Also resolve s/r conflicts based on precedence
declarations. */ declarations. */
solve_conflicts (); solve_conflicts ();
conflicts_print ();
/* Output file names. */ /* Output file names. */
compute_output_file_names (); compute_output_file_names ();
@@ -91,7 +93,7 @@ main (int argc, char *argv[])
if (complain_message_count) if (complain_message_count)
exit (1); exit (1);
/* Print information about results, if requested. */ /* Output the detailed report on the grammar. */
print_results (); print_results ();
/* Output the VCG graph. */ /* 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 the tables and the parser to ftable. In file output. */
output (); output ();
/* Close the input files. */
close_files ();
/* Free the symbol table data structure. */ /* Free the symbol table data structure. */
free_symtab (); free_symtab ();
lex_free (); lex_free ();
/* Close the input files. */ reduce_free ();
close_files ();
free_conflicts (); free_conflicts ();
free_nullable (); free_nullable ();
free_derives (); free_derives ();
output_files (); 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. */ /* Abort for an internal error denoted by string S. */
+27 -18
View File
@@ -1,5 +1,5 @@
/* Part of the bison parser generator, /* Part of the bison parser generator,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -24,32 +24,39 @@
do so. */ do so. */
#include "system.h" #include "system.h"
#include "getargs.h"
#include "reader.h"
#include "types.h" #include "types.h"
#include "gram.h" #include "gram.h"
#include "nullable.h" #include "nullable.h"
char *nullable = NULL; char *nullable = NULL;
static void
nullable_print (FILE *out)
{
int i;
fputs ("NULLABLE\n", out);
for (i = ntokens; i < nsyms; i++)
fprintf (out, "\t%s: %s\n", tags[i], nullable[i] ? "yes" : "no");
fputs ("\n\n", out);
}
void void
set_nullable (void) set_nullable (void)
{ {
short *r; short *r;
short *s1; short *s1;
short *s2; short *s2;
int ruleno;
int symbol;
shorts *p; shorts *p;
short *squeue; short *squeue;
short *rcount; short *rcount;
shorts **rsets; shorts **rsets;
shorts *relts; shorts *relts;
char any_tokens;
short *r1;
#ifdef TRACE if (trace_flag)
fprintf (stderr, _("Entering set_nullable")); fprintf (stderr, "Entering set_nullable\n");
#endif
nullable = XCALLOC (char, nvars) - ntokens; nullable = XCALLOC (char, nvars) - ntokens;
@@ -69,7 +76,7 @@ set_nullable (void)
{ {
if (*r < 0) if (*r < 0)
{ {
symbol = rlhs[-(*r++)]; int symbol = rule_table[-(*r++)].lhs;
if (symbol >= 0 && !nullable[symbol]) if (symbol >= 0 && !nullable[symbol])
{ {
nullable[symbol] = 1; nullable[symbol] = 1;
@@ -78,17 +85,16 @@ set_nullable (void)
} }
else else
{ {
r1 = r; int any_tokens = 0;
any_tokens = 0; int symbol;
short *r1 = r;
for (symbol = *r++; symbol > 0; symbol = *r++) for (symbol = *r++; symbol > 0; symbol = *r++)
{ if (ISTOKEN (symbol))
if (ISTOKEN (symbol)) any_tokens = 1;
any_tokens = 1;
}
if (!any_tokens) if (!any_tokens)
{ {
ruleno = -symbol; int ruleno = -symbol;
r = r1; r = r1;
for (symbol = *r++; symbol > 0; symbol = *r++) for (symbol = *r++; symbol > 0; symbol = *r++)
{ {
@@ -107,11 +113,11 @@ set_nullable (void)
p = rsets[*s1++]; p = rsets[*s1++];
while (p) while (p)
{ {
ruleno = p->value; int ruleno = p->value;
p = p->next; p = p->next;
if (--rcount[ruleno] == 0) if (--rcount[ruleno] == 0)
{ {
symbol = rlhs[ruleno]; int symbol = rule_table[ruleno].lhs;
if (symbol >= 0 && !nullable[symbol]) if (symbol >= 0 && !nullable[symbol])
{ {
nullable[symbol] = 1; nullable[symbol] = 1;
@@ -125,6 +131,9 @@ set_nullable (void)
XFREE (rcount); XFREE (rcount);
XFREE (rsets + ntokens); XFREE (rsets + ntokens);
XFREE (relts); XFREE (relts);
if (trace_flag)
nullable_print (stderr);
} }
+50 -72
View File
@@ -319,8 +319,15 @@ output_gram (void)
if (!semantic_parser && !no_parser_flag) if (!semantic_parser && !no_parser_flag)
obstack_sgrow (&table_obstack, "\n#if YYDEBUG != 0\n"); obstack_sgrow (&table_obstack, "\n#if YYDEBUG != 0\n");
output_short_table (&table_obstack, NULL, "yyprhs", rrhs, {
0, 1, nrules + 1); int i;
short *values = XCALLOC (short, nrules + 1);
for (i = 0; i < nrules + 1; ++i)
values[i] = rule_table[i].rhs;
output_short_table (&table_obstack, NULL, "yyprhs", values,
0, 1, nrules + 1);
XFREE (values);
}
{ {
size_t yyrhs_size = 1; size_t yyrhs_size = 1;
@@ -347,7 +354,13 @@ output_gram (void)
static void static void
output_stos (void) output_stos (void)
{ {
output_short_table (&table_obstack, NULL, "yystos", accessing_symbol, int i;
short *values = (short *) alloca (sizeof (short) * nstates);
for (i = 0; i < nstates; ++i)
values[i] = state_table[i].accessing_symbol;
output_short_table (&table_obstack,
"YYSTOS[STATE] -- Accessing symbol to the STATE",
"yystos", values,
0, 1, nstates); 0, 1, nstates);
} }
@@ -362,10 +375,16 @@ output_rule_data (void)
obstack_sgrow (&table_obstack, "\n\ obstack_sgrow (&table_obstack, "\n\
#if YYDEBUG != 0\n"); #if YYDEBUG != 0\n");
output_short_table (&table_obstack, {
"YYRLINE[YYN] -- source line where rule number YYN was defined", short *values = XCALLOC (short, nrules + 1);
"yyrline", rline, for (i = 0; i < nrules + 1; ++i)
0, 1, nrules + 1); values[i] = rule_table[i].line;
output_short_table (&table_obstack,
"YYRLINE[YYN] -- source line where rule number YYN was defined",
"yyrline", values,
0, 1, nrules + 1);
XFREE (values);
}
obstack_sgrow (&table_obstack, "#endif\n\n"); obstack_sgrow (&table_obstack, "#endif\n\n");
@@ -449,19 +468,24 @@ output_rule_data (void)
} }
/* Output YYR1. */ /* Output YYR1. */
output_short_table (&table_obstack, {
short *values = XCALLOC (short, nrules + 1);
for (i = 0; i < nrules + 1; ++i)
values[i] = rule_table[i].lhs;
output_short_table (&table_obstack,
"YYR1[YYN] -- Symbol number of symbol that rule YYN derives", "YYR1[YYN] -- Symbol number of symbol that rule YYN derives",
"yyr1", rlhs, "yyr1", values,
0, 1, nrules + 1); 0, 1, nrules + 1);
XFREE (rlhs + 1); XFREE (values);
}
obstack_1grow (&table_obstack, '\n'); obstack_1grow (&table_obstack, '\n');
/* Output YYR2. */ /* Output YYR2. */
short_tab = XMALLOC (short, nrules + 1); short_tab = XMALLOC (short, nrules + 1);
for (i = 1; i < nrules; i++) for (i = 1; i < nrules; i++)
short_tab[i] = rrhs[i + 1] - rrhs[i] - 1; short_tab[i] = rule_table[i + 1].rhs - rule_table[i].rhs - 1;
short_tab[nrules] = nitems - rrhs[nrules] - 1; short_tab[nrules] = nitems - rule_table[nrules].rhs - 1;
output_short_table (&table_obstack, output_short_table (&table_obstack,
"YYR2[YYN] -- Number of symbols composing right hand side of rule YYN", "YYR2[YYN] -- Number of symbols composing right hand side of rule YYN",
"yyr2", short_tab, "yyr2", short_tab,
@@ -470,7 +494,7 @@ output_rule_data (void)
XFREE (short_tab); XFREE (short_tab);
XFREE (rrhs + 1); XFREE (rule_table + 1);
} }
@@ -524,7 +548,7 @@ action_row (int state)
default_rule = 0; default_rule = 0;
nreds = 0; nreds = 0;
redp = reduction_table[state]; redp = state_table[state].reduction_table;
if (redp) if (redp)
{ {
@@ -534,13 +558,13 @@ action_row (int state)
{ {
/* loop over all the rules available here which require /* loop over all the rules available here which require
lookahead */ lookahead */
m = lookaheads[state]; m = state_table[state].lookaheads;
n = lookaheads[state + 1]; n = state_table[state + 1].lookaheads;
for (i = n - 1; i >= m; i--) for (i = n - 1; i >= m; i--)
{ {
rule = -LAruleno[i]; rule = -LAruleno[i];
wordp = LA + i * tokensetsize; wordp = LA (i);
mask = 1; mask = 1;
/* and find each token which the rule finds acceptable /* 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 /* Now see which tokens are allowed for shifts in this state. For
them, record the shift as the thing to do. So shift is preferred them, record the shift as the thing to do. So shift is preferred
@@ -579,7 +603,7 @@ action_row (int state)
if (!shift_state) if (!shift_state)
continue; continue;
symbol = accessing_symbol[shift_state]; symbol = state_table[shift_state].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
@@ -614,7 +638,7 @@ action_row (int state)
if (nreds >= 1 && !nodefault) if (nreds >= 1 && !nodefault)
{ {
if (consistent[state]) if (state_table[state].consistent)
default_rule = redp->rules[0]; default_rule = redp->rules[0];
else else
{ {
@@ -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 static void
save_column (int symbol, int default_state) save_column (int symbol, int default_state)
{ {
@@ -1116,12 +1109,10 @@ output_actions (void)
width = XCALLOC (short, nvectors); width = XCALLOC (short, nvectors);
token_actions (); token_actions ();
free_shifts (); LIST_FREE (shifts, first_shift);
free_reductions (); LIST_FREE (reductions, first_reduction);
XFREE (lookaheads);
XFREE (LA); XFREE (LA);
XFREE (LAruleno); XFREE (LAruleno);
XFREE (accessing_symbol);
goto_actions (); goto_actions ();
XFREE (goto_map + ntokens); XFREE (goto_map + ntokens);
@@ -1288,21 +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. | | Output the parsing tables and the parser code to ftable. |
`----------------------------------------------------------*/ `----------------------------------------------------------*/
@@ -1334,7 +1310,7 @@ output (void)
if (!no_parser_flag) if (!no_parser_flag)
obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n"); obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n");
free_itemsets (); LIST_FREE (core, first_state);
output_defines (); output_defines ();
output_token_translations (); output_token_translations ();
/* if (semantic_parser) */ /* if (semantic_parser) */
@@ -1345,6 +1321,8 @@ output (void)
output_stos (); output_stos ();
output_rule_data (); output_rule_data ();
output_actions (); output_actions ();
XFREE (state_table);
if (!no_parser_flag) if (!no_parser_flag)
output_parser (); output_parser ();
output_program (); output_program ();
+46 -59
View File
@@ -1,5 +1,5 @@
/* Print information on generated parser, for bison, /* Print information on generated parser, for bison,
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1986, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -29,6 +29,7 @@
#include "state.h" #include "state.h"
#include "reader.h" #include "reader.h"
#include "print.h" #include "print.h"
#include "reduce.h"
#if 0 #if 0
static void static void
@@ -47,40 +48,32 @@ static void
print_core (FILE *out, int state) print_core (FILE *out, int state)
{ {
int i; int i;
int k; core *statep = state_table[state].state;
int rule;
core *statep;
short *sp;
short *sp1;
statep = state_table[state]; if (!statep->nitems)
k = statep->nitems;
if (k == 0)
return; return;
for (i = 0; i < k; i++) for (i = 0; i < statep->nitems; i++)
{ {
short *sp;
short *sp1;
int rule;
sp1 = sp = ritem + statep->items[i]; sp1 = sp = ritem + statep->items[i];
while (*sp > 0) while (*sp > 0)
sp++; sp++;
rule = -(*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++) for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
{ fprintf (out, "%s ", tags[*sp]);
fprintf (out, "%s ", tags[*sp]);
}
fputc ('.', out); fputc ('.', out);
while (*sp > 0) for (/* Nothing */; *sp > 0; ++sp)
{ fprintf (out, " %s", tags[*sp]);
fprintf (out, " %s", tags[*sp]);
sp++;
}
fprintf (out, _(" (rule %d)"), rule); fprintf (out, _(" (rule %d)"), rule);
fputc ('\n', out); fputc ('\n', out);
@@ -94,16 +87,10 @@ print_actions (FILE *out, int state)
{ {
int i; int i;
int k; int k;
int state1;
int symbol;
shifts *shiftp;
errs *errp;
reductions *redp;
int rule;
shiftp = shift_table[state]; shifts *shiftp = state_table[state].shift_table;
redp = reduction_table[state]; reductions *redp = state_table[state].reduction_table;
errp = err_table[state]; errs *errp = err_table[state];
if (!shiftp && !redp) if (!shiftp && !redp)
{ {
@@ -120,10 +107,11 @@ print_actions (FILE *out, int state)
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (!shiftp->shifts[i]) int symbol;
int state1 = shiftp->shifts[i];
if (!state1)
continue; continue;
state1 = shiftp->shifts[i]; symbol = state_table[state1].accessing_symbol;
symbol = accessing_symbol[state1];
/* The following line used to be turned off. */ /* The following line used to be turned off. */
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
@@ -147,15 +135,12 @@ print_actions (FILE *out, int state)
if (errp) if (errp)
{ {
int j, nerrs; int j;
for (j = 0; j < errp->nerrs; j++)
nerrs = errp->nerrs;
for (j = 0; j < nerrs; j++)
{ {
if (!errp->errs[j]) int symbol = errp->errs[j];
if (!symbol)
continue; continue;
symbol = errp->errs[j];
fprintf (out, _(" %-4s\terror (nonassociative)\n"), fprintf (out, _(" %-4s\terror (nonassociative)\n"),
tags[symbol]); tags[symbol]);
} }
@@ -164,26 +149,27 @@ print_actions (FILE *out, int state)
fputc ('\n', out); fputc ('\n', out);
} }
if (consistent[state] && redp) if (state_table[state].consistent && redp)
{ {
rule = redp->rules[0]; int rule = redp->rules[0];
symbol = rlhs[rule]; int symbol = rule_table[rule].lhs;
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"), fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
rule, tags[symbol]); rule, tags[symbol]);
} }
else if (redp) else if (redp)
{ {
print_reductions (state); print_reductions (out, state);
} }
if (i < k) if (i < k)
{ {
for (; i < k; i++) for (; i < k; i++)
{ {
if (!shiftp->shifts[i]) int symbol;
int state1 = shiftp->shifts[i];
if (!state1)
continue; continue;
state1 = shiftp->shifts[i]; symbol = state_table[state1].accessing_symbol;
symbol = accessing_symbol[state1];
fprintf (out, _(" %-4s\tgo to state %d\n"), fprintf (out, _(" %-4s\tgo to state %d\n"),
tags[symbol], state1); tags[symbol], state1);
} }
@@ -226,18 +212,19 @@ print_grammar (FILE *out)
int column = 0; int column = 0;
/* rule # : LHS -> RHS */ /* rule # : LHS -> RHS */
fprintf (out, "\n%s\n", _("Grammar")); fprintf (out, "\n%s\n\n", _("Grammar"));
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
/* Don't print rules disabled in reduce_grammar_tables. */ /* Don't print rules disabled in reduce_grammar_tables. */
if (rlhs[i] >= 0) if (rule_table[i].lhs >= 0)
{ {
fprintf (out, _("rule %-4d %s ->"), i, tags[rlhs[i]]); fprintf (out, _("rule %-4d %s ->"), i, tags[rule_table[i].lhs]);
rule = &ritem[rrhs[i]]; rule = &ritem[rule_table[i].rhs];
if (*rule > 0) if (*rule > 0)
while (*rule > 0) while (*rule > 0)
fprintf (out, " %s", tags[*rule++]); fprintf (out, " %s", tags[*rule++]);
else else
fprintf (out, " /* %s */\n", _("empty")); fprintf (out, " /* %s */", _("empty"));
fputc ('\n', out);
} }
/* TERMINAL (type #) : rule #s terminal is on RHS */ /* TERMINAL (type #) : rule #s terminal is on RHS */
@@ -254,7 +241,7 @@ print_grammar (FILE *out)
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == token_translations[i]) if (*rule == token_translations[i])
{ {
END_TEST (65); END_TEST (65);
@@ -272,9 +259,9 @@ print_grammar (FILE *out)
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
if (rlhs[j] == i) if (rule_table[j].lhs == i)
left_count++; left_count++;
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == i) if (*rule == i)
{ {
right_count++; right_count++;
@@ -296,7 +283,7 @@ print_grammar (FILE *out)
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
END_TEST (65); END_TEST (65);
if (rlhs[j] == i) if (rule_table[j].lhs == i)
sprintf (buffer + strlen (buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
} }
} }
@@ -309,7 +296,7 @@ print_grammar (FILE *out)
sprintf (buffer + strlen (buffer), _(" on right:")); sprintf (buffer + strlen (buffer), _(" on right:"));
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rule_table[j].rhs]; *rule > 0; rule++)
if (*rule == i) if (*rule == i)
{ {
END_TEST (65); END_TEST (65);
@@ -336,8 +323,8 @@ print_results (void)
size_t size = obstack_object_size (&output_obstack); size_t size = obstack_object_size (&output_obstack);
fwrite (obstack_finish (&output_obstack), 1, size, out); fwrite (obstack_finish (&output_obstack), 1, size, out);
if (any_conflicts) reduce_output (out);
print_conflicts (out); conflicts_output (out);
print_grammar (out); print_grammar (out);
+58 -72
View File
@@ -31,42 +31,25 @@
#include "obstack.h" #include "obstack.h"
#include "print_graph.h" #include "print_graph.h"
#include "vcg.h" #include "vcg.h"
#include "quotearg.h"
static graph_t graph; static graph_t graph;
static FILE *fgraph = NULL; static FILE *fgraph = NULL;
static size_t node_output_size = 0;
/* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */
static char const *
quote (char const *name)
{
return quotearg_n_style (0, escape_quoting_style, name);
}
/* This part will construct the label of nodes. */ /* This part will construct the label of nodes. */
static void static void
print_core (int state, struct obstack *node_obstack) print_core (int state, struct obstack *node_obstack)
{ {
int i; int i;
int k; core *statep = state_table[state].state;
int rule;
core *statep;
short *sp;
short *sp1;
statep = state_table[state]; if (!statep->nitems)
k = statep->nitems;
if (k == 0)
return; return;
for (i = 0; i < k; i++) for (i = 0; i < statep->nitems; i++)
{ {
if (i) short *sp;
obstack_sgrow (node_obstack, "\\n"); short *sp1;
int rule;
sp1 = sp = ritem + statep->items[i]; sp1 = sp = ritem + statep->items[i];
@@ -75,23 +58,30 @@ print_core (int state, struct obstack *node_obstack)
rule = -(*sp); rule = -(*sp);
if (i)
obstack_1grow (node_obstack, '\n');
obstack_fgrow1 (node_obstack, "%d: ", rule); obstack_fgrow1 (node_obstack, "%d: ", rule);
obstack_fgrow1 (node_obstack, " %s -> ", quote (tags[rlhs[rule]])); obstack_fgrow1 (node_obstack, " %s -> ",
tags[rule_table[rule].lhs]);
for (sp = ritem + rrhs[rule]; sp < sp1; sp++) for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
obstack_fgrow1 (node_obstack, "%s ", quote (tags[*sp])); obstack_fgrow1 (node_obstack, "%s ", tags[*sp]);
obstack_1grow (node_obstack, '.'); obstack_1grow (node_obstack, '.');
while (*sp > 0) for (/* Nothing */; *sp > 0; ++sp)
obstack_fgrow1 (node_obstack, " %s", quote (tags[*sp++])); obstack_fgrow1 (node_obstack, " %s", tags[*sp]);
} }
} }
/* Output in graph_obstack edges specifications in incidence with current
node. */ /*---------------------------------------------------------------.
| Output in graph_obstack edges specifications in incidence with |
| current node. |
`---------------------------------------------------------------*/
static void static void
print_actions (int state, const char *node_name, struct obstack *node_obstack) print_actions (int state, const char *node_name)
{ {
int i; int i;
int k; int k;
@@ -104,16 +94,18 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
static char buff[10]; static char buff[10];
edge_t edge; edge_t edge;
shiftp = shift_table[state]; shiftp = state_table[state].shift_table;
redp = reduction_table[state]; redp = state_table[state].reduction_table;
errp = err_table[state]; errp = err_table[state];
if (!shiftp && !redp) if (!shiftp && !redp)
{ {
#if 0
if (final_state == state) if (final_state == state)
obstack_sgrow (node_obstack, "$default: accept"); obstack_sgrow (node_obstack, "$default: accept");
else else
obstack_sgrow (node_obstack, "NO ACTIONS"); obstack_sgrow (node_obstack, "NO ACTIONS");
#endif
return; return;
} }
@@ -126,7 +118,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
if (!shiftp->shifts[i]) if (!shiftp->shifts[i])
continue; continue;
state1 = shiftp->shifts[i]; state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1]; symbol = state_table[state1].accessing_symbol;
if (ISVAR (symbol)) if (ISVAR (symbol))
break; break;
@@ -142,9 +134,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
sprintf (buff, "%d", state1); sprintf (buff, "%d", state1);
edge.targetname = buff; edge.targetname = buff;
edge.color = (symbol == 0) ? red : blue; edge.color = (symbol == 0) ? red : blue;
/* FIXME: Be aware that quote uses static memory. The string edge.label = tags[symbol];
must be output immediately (which is the case here). */
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
output_edge (&edge, fgraph); output_edge (&edge, fgraph);
close_edge (fgraph); close_edge (fgraph);
} }
@@ -156,6 +146,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
k = 0; k = 0;
} }
#if 0
if (errp) if (errp)
{ {
int j, nerrs; int j, nerrs;
@@ -168,25 +159,29 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
continue; continue;
symbol = errp->errs[j]; symbol = errp->errs[j];
/* If something has been added in the NODE_OBSTACK after /* If something has been added in the NODE_OBSTACK after
the declaration of the label, then we need a `\n'. */ the declaration of the label, then we need a `\n'.
if (obstack_object_size (node_obstack) > node_output_size) if (obstack_object_size (node_obstack) > node_output_size)
obstack_sgrow (node_obstack, "\\n"); obstack_sgrow (node_obstack, "\n");
*/
obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"), obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"),
tags[symbol]); tags[symbol]);
} }
if (j > 0) if (j > 0)
obstack_sgrow (node_obstack, "\\n"); obstack_1grow (node_obstack, '\n');
} }
if (consistent[state] && redp) if (state_table[state].consistent && redp)
{ {
rule = redp->rules[0]; rule = redp->rules[0];
symbol = rlhs[rule]; symbol = rule_table[rule].lhs;
/*
if (obstack_object_size (node_obstack) > node_output_size) if (obstack_object_size (node_obstack) > node_output_size)
obstack_sgrow (node_obstack, "\\n"); obstack_sgrow (node_obstack, "\n");
*/
obstack_fgrow2 (node_obstack, _("$default\treduce using rule %d (%s)"), obstack_fgrow2 (node_obstack, _("$default\treduce using rule %d (%s)"),
rule, tags[symbol]); rule, tags[symbol]);
} }
#endif
if (i < k) if (i < k)
{ {
@@ -195,7 +190,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
if (!shiftp->shifts[i]) if (!shiftp->shifts[i])
continue; continue;
state1 = shiftp->shifts[i]; state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1]; symbol = state_table[state1].accessing_symbol;
new_edge (&edge); new_edge (&edge);
open_edge (&edge, fgraph); open_edge (&edge, fgraph);
@@ -203,15 +198,19 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
sprintf (buff, "%d", state1); sprintf (buff, "%d", state1);
edge.targetname = buff; edge.targetname = buff;
edge.color = red; edge.color = red;
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL; edge.label = tags[symbol];
output_edge (&edge, fgraph); output_edge (&edge, fgraph);
close_edge (fgraph); close_edge (fgraph);
} }
} }
} }
/* Output in GRAPH_OBSTACK the current node specifications and edges
which go out from that node. */ /*-------------------------------------------------------------.
| Output in FGRAPH the current node specifications and exiting |
| edges. |
`-------------------------------------------------------------*/
static void static void
print_state (int state) print_state (int state)
{ {
@@ -219,35 +218,22 @@ print_state (int state)
struct obstack node_obstack; struct obstack node_obstack;
node_t node; node_t node;
/* The labels of the nodes are their the items. */
obstack_init (&node_obstack); obstack_init (&node_obstack);
new_node (&node); /* Set node attributs default value. */ new_node (&node);
sprintf (name, "%d", state); sprintf (name, "%d", state);
node.title = name; /* Give a name to the node. */ node.title = name;
print_core (state, &node_obstack);
{ obstack_1grow (&node_obstack, '\0');
/* Here we begin to compute the node label. */ node.label = obstack_finish (&node_obstack);
obstack_sgrow (&node_obstack, "\t\tlabel:\t\""); /* Open Label */
/* Keep the size of NODE_OBSTACK before computing the label. It is
useful to format the label. */
node_output_size = obstack_object_size (&node_obstack);
/* Compute the labels of nodes on the fly. */
print_core (state, &node_obstack);
/* Compute edges and additionnal parts of node label. */
print_actions (state, node.title, &node_obstack);
obstack_sgrow (&node_obstack, "\"\n"); /* Close Label. */
}
open_node (fgraph); open_node (fgraph);
/* Output a VCG formatted attributs list. */
output_node (&node, fgraph); output_node (&node, fgraph);
/* Save the node label. */
fwrite (obstack_base (&node_obstack),
obstack_object_size (&node_obstack), 1, fgraph);
close_node (fgraph); close_node (fgraph);
/* Output the edges. */
print_actions (state, name);
obstack_free (&node_obstack, 0); obstack_free (&node_obstack, 0);
} }
@@ -256,7 +242,7 @@ void
print_graph (void) print_graph (void)
{ {
int i; int i;
if (!graph_flag) if (!graph_flag)
return; return;
@@ -267,7 +253,7 @@ print_graph (void)
#if 0 #if 0
graph.smanhattan_edges = yes; graph.smanhattan_edges = yes;
graph.manhattan_edges = yes; graph.manhattan_edges = yes;
#endif #endif
graph.display_edge_labels = yes; graph.display_edge_labels = yes;
@@ -285,8 +271,8 @@ print_graph (void)
open_graph (fgraph); open_graph (fgraph);
output_graph (&graph, fgraph); output_graph (&graph, fgraph);
/* Output nodes and edges. */
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
/* Output nodes & edges. */
print_state (i); print_state (i);
/* Close graph. */ /* Close graph. */
+129 -107
View File
@@ -1,5 +1,5 @@
/* Input parser for bison /* Input parser for bison
Copyright 1984, 1986, 1989, 1992, 1998, 2000 Copyright 1984, 1986, 1989, 1992, 1998, 2000, 2001
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -695,7 +695,6 @@ token_buffer);
} }
prev = t; prev = t;
} }
} }
@@ -712,6 +711,13 @@ parse_union_decl (void)
{ {
int c; int c;
int count = 0; int count = 0;
const char *prologue = "\
#ifndef YYSTYPE\n\
typedef union";
const char *epilogue = "\
yystype;\n\
# define YYSTYPE yystype\n\
#endif\n";
if (typed) if (typed)
complain (_("multiple %s declarations"), "%union"); complain (_("multiple %s declarations"), "%union");
@@ -724,9 +730,9 @@ parse_union_decl (void)
else else
obstack_1grow (&attrs_obstack, '\n'); obstack_1grow (&attrs_obstack, '\n');
obstack_sgrow (&attrs_obstack, "typedef union"); obstack_sgrow (&attrs_obstack, prologue);
if (defines_flag) if (defines_flag)
obstack_sgrow (&defines_obstack, "typedef union"); obstack_sgrow (&defines_obstack, prologue);
c = getc (finput); c = getc (finput);
@@ -761,9 +767,9 @@ parse_union_decl (void)
count--; count--;
if (count <= 0) if (count <= 0)
{ {
obstack_sgrow (&attrs_obstack, " YYSTYPE;\n"); obstack_sgrow (&attrs_obstack, epilogue);
if (defines_flag) if (defines_flag)
obstack_sgrow (&defines_obstack, " YYSTYPE;\n"); obstack_sgrow (&defines_obstack, epilogue);
/* JF don't choke on trailing semi */ /* JF don't choke on trailing semi */
c = skip_white_space (); c = skip_white_space ();
if (c != ';') if (c != ';')
@@ -821,7 +827,7 @@ parse_thong_decl (void)
token_t token; token_t token;
struct bucket *symbol; struct bucket *symbol;
char *typename = 0; char *typename = 0;
int usrtoknum; int usrtoknum = SUNDEF;
token = lex (); /* fetch typename or first token */ token = lex (); /* fetch typename or first token */
if (token == tok_typename) if (token == tok_typename)
@@ -852,8 +858,6 @@ parse_thong_decl (void)
usrtoknum = numval; usrtoknum = numval;
token = lex (); /* okay, did number, now get literal */ token = lex (); /* okay, did number, now get literal */
} }
else
usrtoknum = 0;
/* process literal string token */ /* process literal string token */
@@ -875,10 +879,11 @@ parse_thong_decl (void)
} }
/*-----------------------------------------------------------------------------. /*------------------------------------------------------------------.
| Parse a double quoted parameter. It was used for %{source,header}_extension. | | Parse a double quoted parameter. It was used for |
| For the moment, It is not used since extension features have been removed. | | %{source,header}_extension. For the moment, It is not used since |
`-----------------------------------------------------------------------------*/ | extension features have been removed. |
`------------------------------------------------------------------*/
#if 0 #if 0
@@ -938,16 +943,13 @@ parse_dquoted_param (const char *from)
static void static void
read_declarations (void) read_declarations (void)
{ {
int c;
int tok;
for (;;) for (;;)
{ {
c = skip_white_space (); int c = skip_white_space ();
if (c == '%') if (c == '%')
{ {
tok = parse_percent_token (); token_t tok = parse_percent_token ();
switch (tok) switch (tok)
{ {
@@ -1001,6 +1003,13 @@ read_declarations (void)
case tok_noop: case tok_noop:
break; break;
case tok_stropt:
case tok_intopt:
case tok_obsolete:
case tok_illegal:
abort ();
break;
default: default:
complain (_("unrecognized: %s"), token_buffer); complain (_("unrecognized: %s"), token_buffer);
skip_to_char ('%'); skip_to_char ('%');
@@ -1206,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 | | Generate a dummy symbol, a nonterminal, whose name cannot conflict |
| with the user's names. | | with the user's names. |
@@ -1362,8 +1357,6 @@ readgram (void)
nrules++; nrules++;
nitems++; nitems++;
record_rule_line ();
p = XCALLOC (symbol_list, 1); p = XCALLOC (symbol_list, 1);
p->sym = lhs; p->sym = lhs;
@@ -1441,7 +1434,6 @@ readgram (void)
just read can belong to it. */ just read can belong to it. */
nrules++; nrules++;
nitems++; nitems++;
record_rule_line ();
p = XCALLOC (symbol_list, 1); p = XCALLOC (symbol_list, 1);
if (crule1) if (crule1)
crule1->next = p; crule1->next = p;
@@ -1449,9 +1441,10 @@ readgram (void)
grammar = p; grammar = p;
p->sym = sdummy; p->sym = sdummy;
crule1 = XCALLOC (symbol_list, 1); crule1 = XCALLOC (symbol_list, 1);
p->next = crule1;
crule1->next = crule; crule1->next = crule;
p->next = crule1;
/* Insert the dummy generated by that rule into this /* Insert the dummy generated by that rule into this
rule. */ rule. */
nitems++; nitems++;
@@ -1663,6 +1656,89 @@ 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. |
`------------------------------------------------------------------*/
static void
token_translations_init (void)
{
bucket *bp = NULL;
int i;
token_translations = XCALLOC (short, max_user_token_number + 1);
/* Initialize all entries for literal tokens to 2, the internal
token number for $undefined., which represents all invalid
inputs. */
for (i = 0; i <= max_user_token_number; i++)
token_translations[i] = 2;
for (bp = firstsymbol; bp; bp = bp->next)
{
/* Non-terminal? */
if (bp->value >= ntokens)
continue;
/* A token string alias? */
if (bp->user_token_number == SALIAS)
continue;
assert (bp->user_token_number != SUNDEF);
/* A token which translation has already been set? */
if (token_translations[bp->user_token_number] != 2)
complain (_("tokens %s and %s both assigned number %d"),
tags[token_translations[bp->user_token_number]],
bp->tag, bp->user_token_number);
token_translations[bp->user_token_number] = bp->value;
}
}
/*------------------------------------------------------------------. /*------------------------------------------------------------------.
| Assign symbol numbers, and write definition of token names into | | Assign symbol numbers, and write definition of token names into |
| FDEFINES. Set up vectors TAGS and SPREC of names and precedences | | FDEFINES. Set up vectors TAGS and SPREC of names and precedences |
@@ -1674,20 +1750,19 @@ packsymbols (void)
{ {
bucket *bp = NULL; bucket *bp = NULL;
int tokno = 1; int tokno = 1;
int i, j;
int last_user_token_number; int last_user_token_number;
static char DOLLAR[] = "$"; static char DOLLAR[] = "$";
/* int lossage = 0; JF set but not used */
tags = XCALLOC (char *, nsyms + 1); tags = XCALLOC (char *, nsyms + 1);
tags[0] = DOLLAR;
user_toknums = XCALLOC (short, nsyms + 1); user_toknums = XCALLOC (short, nsyms + 1);
user_toknums[0] = 0;
sprec = XCALLOC (short, nsyms); sprec = XCALLOC (short, nsyms);
sassoc = XCALLOC (short, nsyms); sassoc = XCALLOC (short, nsyms);
/* The EOF token. */
tags[0] = DOLLAR;
user_toknums[0] = 0;
max_user_token_number = 256; max_user_token_number = 256;
last_user_token_number = 256; last_user_token_number = 256;
@@ -1740,7 +1815,7 @@ packsymbols (void)
if (bp->class == token_sym) if (bp->class == token_sym)
{ {
if (!bp->user_token_number) if (bp->user_token_number == SUNDEF)
bp->user_token_number = ++last_user_token_number; bp->user_token_number = ++last_user_token_number;
if (bp->user_token_number > max_user_token_number) if (bp->user_token_number > max_user_token_number)
max_user_token_number = bp->user_token_number; max_user_token_number = bp->user_token_number;
@@ -1752,26 +1827,7 @@ packsymbols (void)
sassoc[bp->value] = bp->assoc; sassoc[bp->value] = bp->assoc;
} }
token_translations = XCALLOC (short, max_user_token_number + 1); token_translations_init ();
/* initialize all entries for literal tokens to 2, the internal
token number for $undefined., which represents all invalid
inputs. */
for (j = 0; j <= max_user_token_number; j++)
token_translations[j] = 2;
for (bp = firstsymbol; bp; bp = bp->next)
{
if (bp->value >= ntokens)
continue; /* non-terminal */
if (bp->user_token_number == SALIAS)
continue;
if (token_translations[bp->user_token_number] != 2)
complain (_("tokens %s and %s both assigned number %d"),
tags[token_translations[bp->user_token_number]],
bp->tag, bp->user_token_number);
token_translations[bp->user_token_number] = bp->value;
}
error_token_number = errtoken->value; error_token_number = errtoken->value;
@@ -1784,36 +1840,6 @@ packsymbols (void)
fatal (_("the start symbol %s is a token"), startval->tag); fatal (_("the start symbol %s is a token"), startval->tag);
start_symbol = startval->value; start_symbol = startval->value;
if (defines_flag)
{
output_token_defines (&defines_obstack);
if (!pure_parser)
{
if (spec_name_prefix)
obstack_fgrow1 (&defines_obstack, "\nextern YYSTYPE %slval;\n",
spec_name_prefix);
else
obstack_sgrow (&defines_obstack,
"\nextern YYSTYPE yylval;\n");
}
if (semantic_parser)
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
}
} }
@@ -1832,11 +1858,7 @@ packgram (void)
bucket *ruleprec; bucket *ruleprec;
ritem = XCALLOC (short, nitems + 1); ritem = XCALLOC (short, nitems + 1);
rlhs = XCALLOC (short, nrules) - 1; rule_table = XCALLOC (rule_t, nrules) - 1;
rrhs = XCALLOC (short, nrules) - 1;
rprec = XCALLOC (short, nrules) - 1;
rprecsym = XCALLOC (short, nrules) - 1;
rassoc = XCALLOC (short, nrules) - 1;
itemno = 0; itemno = 0;
ruleno = 1; ruleno = 1;
@@ -1844,8 +1866,9 @@ packgram (void)
p = grammar; p = grammar;
while (p) while (p)
{ {
rlhs[ruleno] = p->sym->value; rule_table[ruleno].lhs = p->sym->value;
rrhs[ruleno] = itemno; rule_table[ruleno].rhs = itemno;
rule_table[ruleno].line = p->sym->line;
ruleprec = p->ruleprec; ruleprec = p->ruleprec;
p = p->next; p = p->next;
@@ -1856,8 +1879,8 @@ packgram (void)
of the last token in it. */ of the last token in it. */
if (p->sym->class == token_sym) if (p->sym->class == token_sym)
{ {
rprec[ruleno] = p->sym->prec; rule_table[ruleno].prec = p->sym->prec;
rassoc[ruleno] = p->sym->assoc; rule_table[ruleno].assoc = p->sym->assoc;
} }
if (p) if (p)
p = p->next; p = p->next;
@@ -1867,9 +1890,9 @@ packgram (void)
the specified symbol's precedence replaces the default. */ the specified symbol's precedence replaces the default. */
if (ruleprec) if (ruleprec)
{ {
rprec[ruleno] = ruleprec->prec; rule_table[ruleno].prec = ruleprec->prec;
rassoc[ruleno] = ruleprec->assoc; rule_table[ruleno].assoc = ruleprec->assoc;
rprecsym[ruleno] = ruleprec->value; rule_table[ruleno].precsym = ruleprec->value;
} }
ritem[itemno++] = -ruleno; ritem[itemno++] = -ruleno;
@@ -1900,8 +1923,6 @@ reader (void)
nvars = 0; nvars = 0;
nrules = 0; nrules = 0;
nitems = 0; nitems = 0;
rline_allocated = 10;
rline = XCALLOC (short, rline_allocated);
typed = 0; typed = 0;
lastprec = 0; lastprec = 0;
@@ -1929,7 +1950,6 @@ reader (void)
/* Read the declaration section. Copy %{ ... %} groups to /* Read the declaration section. Copy %{ ... %} groups to
TABLE_OBSTACK and FDEFINES file. Also notice any %token, %left, TABLE_OBSTACK and FDEFINES file. Also notice any %token, %left,
etc. found there. */ etc. found there. */
obstack_1grow (&table_obstack, '\n');
obstack_fgrow3 (&table_obstack, "\ obstack_fgrow3 (&table_obstack, "\
/* %s, made from %s\n\ /* %s, made from %s\n\
by GNU bison %s. */\n\ by GNU bison %s. */\n\
@@ -1958,6 +1978,8 @@ reader (void)
packsymbols (); packsymbols ();
/* Convert the grammar into the format described in gram.h. */ /* Convert the grammar into the format described in gram.h. */
packgram (); packgram ();
/* Output the headers. */
symbols_output ();
} }
+109 -114
View File
@@ -1,5 +1,5 @@
/* Grammar reduction for Bison. /* 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. 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 /* A production is useful if all of the nonterminals in its appear
in the set of useful nonterminals. */ in the set of useful nonterminals. */
for (r = &ritem[rrhs[i]]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
if (ISVAR (n = *r)) if (ISVAR (n = *r))
if (!BITISSET (N0, n - ntokens)) if (!BITISSET (N0, n - ntokens))
return FALSE; return FALSE;
@@ -149,7 +149,7 @@ useless_nonterminals (void)
{ {
if (useful_production (i, N)) if (useful_production (i, N))
{ {
SETBIT (Np, rlhs[i] - ntokens); SETBIT (Np, rule_table[i].lhs - ntokens);
SETBIT (P, i); SETBIT (P, i);
} }
} }
@@ -200,38 +200,33 @@ inaccessable_symbols (void)
Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1)); Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1));
/* If the start symbol isn't useful, then nothing will be useful. */ /* If the start symbol isn't useful, then nothing will be useful. */
if (!BITISSET (N, start_symbol - ntokens)) if (BITISSET (N, start_symbol - ntokens))
goto end_iteration;
SETBIT (V, start_symbol);
while (1)
{ {
for (i = WORDSIZE (nsyms) - 1; i >= 0; i--) SETBIT (V, start_symbol);
Vp[i] = V[i];
for (i = 1; i <= nrules; i++) while (1)
{ {
if (!BITISSET (Pp, i) && BITISSET (P, i) && BITISSET (V, rlhs[i])) for (i = WORDSIZE (nsyms) - 1; i >= 0; i--)
Vp[i] = V[i];
for (i = 1; i <= nrules; i++)
{ {
for (r = &ritem[rrhs[i]]; *r >= 0; r++) if (!BITISSET (Pp, i)
&& BITISSET (P, i)
&& BITISSET (V, rule_table[i].lhs))
{ {
if (ISTOKEN (t = *r) || BITISSET (N, t - ntokens)) for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
{ if (ISTOKEN (t = *r) || BITISSET (N, t - ntokens))
SETBIT (Vp, t); SETBIT (Vp, t);
} SETBIT (Pp, i);
} }
SETBIT (Pp, i);
} }
if (bits_equal (V, Vp, WORDSIZE (nsyms)))
break;
Vs = Vp;
Vp = V;
V = Vs;
} }
if (bits_equal (V, Vp, WORDSIZE (nsyms)))
{
break;
}
Vs = Vp;
Vp = V;
V = Vs;
} }
end_iteration:
XFREE (V); XFREE (V);
V = Vp; V = Vp;
@@ -255,8 +250,8 @@ end_iteration:
/* A token that was used in %prec should not be warned about. */ /* A token that was used in %prec should not be warned about. */
for (i = 1; i < nrules; i++) for (i = 1; i < nrules; i++)
if (rprecsym[i] != 0) if (rule_table[i].precsym != 0)
SETBIT (V1, rprecsym[i]); SETBIT (V1, rule_table[i].precsym);
} }
static void static void
@@ -279,15 +274,15 @@ reduce_grammar_tables (void)
np++; np++;
if (pn != np) if (pn != np)
{ {
rlhs[np] = rlhs[pn]; rule_table[np].lhs = rule_table[pn].lhs;
rline[np] = rline[pn]; rline[np] = rline[pn];
rprec[np] = rprec[pn]; rule_table[np].prec = rule_table[pn].prec;
rassoc[np] = rassoc[pn]; rule_table[np].assoc = rule_table[pn].assoc;
rrhs[np] = rrhs[pn]; rule_table[np].rhs = rule_table[pn].rhs;
if (rrhs[np] != ni) if (rule_table[np].rhs != ni)
{ {
pi = rrhs[np]; pi = rule_table[np].rhs;
rrhs[np] = ni; rule_table[np].rhs = ni;
while (ritem[pi] >= 0) while (ritem[pi] >= 0)
ritem[ni++] = ritem[pi++]; ritem[ni++] = ritem[pi++];
ritem[ni++] = -np; ritem[ni++] = -np;
@@ -319,7 +314,7 @@ reduce_grammar_tables (void)
{ {
if (!BITISSET (P, pn)) 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++) for (i = 1; i <= nrules; i++)
{ {
/* Ignore the rules disabled above. */ /* Ignore the rules disabled above. */
if (rlhs[i] >= 0) if (rule_table[i].lhs >= 0)
rlhs[i] = nontermmap[rlhs[i]]; rule_table[i].lhs = nontermmap[rule_table[i].lhs];
if (ISVAR (rprecsym[i])) if (ISVAR (rule_table[i].precsym))
/* Can this happen? */ /* Can this happen? */
rprecsym[i] = nontermmap[rprecsym[i]]; rule_table[i].precsym = nontermmap[rule_table[i].precsym];
} }
for (r = ritem; *r; r++) 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; int i;
/* short j; JF unused */
rule r; rule r;
bool b; bool b;
if (nuseless_nonterminals > 0) if (nuseless_nonterminals > 0)
{ {
obstack_sgrow (&output_obstack, _("Useless nonterminals:")); fprintf (out, _("Useless nonterminals:"));
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, "\n\n");
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
if (!BITISSET (V, i)) if (!BITISSET (V, i))
obstack_fgrow1 (&output_obstack, " %s\n", tags[i]); fprintf (out, " %s\n", tags[i]);
} }
b = FALSE; b = FALSE;
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
@@ -411,81 +410,82 @@ print_results (void)
{ {
if (!b) if (!b)
{ {
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, "\n\n");
obstack_sgrow (&output_obstack, fprintf (out, _("Terminals which are not used:"));
_("Terminals which are not used:")); fprintf (out, "\n\n");
obstack_sgrow (&output_obstack, "\n\n");
b = TRUE; b = TRUE;
} }
obstack_fgrow1 (&output_obstack, " %s\n", tags[i]); fprintf (out, " %s\n", tags[i]);
} }
} }
if (nuseless_productions > 0) if (nuseless_productions > 0)
{ {
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, "\n\n");
obstack_sgrow (&output_obstack, _("Useless rules:")); fprintf (out, _("Useless rules:"));
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, "\n\n");
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
{ if (!BITISSET (P, i))
if (!BITISSET (P, i)) {
{ fprintf (out, "#%-4d ", i);
obstack_fgrow1 (&output_obstack, "#%-4d ", i); fprintf (out, "%s :\t", tags[rule_table[i].lhs]);
obstack_fgrow1 (&output_obstack, "%s :\t", tags[rlhs[i]]); for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
for (r = &ritem[rrhs[i]]; *r >= 0; r++) fprintf (out, " %s", tags[*r]);
obstack_fgrow1 (&output_obstack, " %s", tags[*r]); fprintf (out, ";\n");
obstack_sgrow (&output_obstack, ";\n"); }
}
}
} }
if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b) 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 static void
dump_grammar (void) dump_grammar (FILE *out)
{ {
int i; int i;
rule r; 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 = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n",
ntokens, nvars, nsyms, nrules, nitems); ntokens, nvars, nsyms, nrules, nitems);
obstack_sgrow (&output_obstack, fprintf (out, _("Variables\n---------\n\n"));
_("Variables\n---------\n\n")); fprintf (out, _("Value Sprec Sassoc Tag\n"));
obstack_sgrow (&output_obstack,
_("Value Sprec Sassoc Tag\n"));
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
obstack_fgrow4 (&output_obstack, fprintf (out, "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]);
"%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]); fprintf (out, "\n\n");
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, _("Rules\n-----\n\n"));
obstack_sgrow (&output_obstack, _("Rules\n-----\n\n"));
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
{ {
obstack_fgrow5 (&output_obstack, "%-5d(%5d%5d)%5d : (@%-5d)", fprintf (out, "%-5d(%5d%5d)%5d : (@%-5d)",
i, rprec[i], rassoc[i], rlhs[i], rrhs[i]); i,
for (r = &ritem[rrhs[i]]; *r > 0; r++) rule_table[i].prec,
obstack_fgrow1 (&output_obstack, "%5d", *r); rule_table[i].assoc,
obstack_fgrow1 (&output_obstack, " [%d]\n", -(*r)); 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"); fprintf (out, "\n\n");
obstack_sgrow (&output_obstack, fprintf (out, _("Rules interpreted\n-----------------\n\n"));
_("Rules interpreted\n-----------------\n\n"));
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
{ {
obstack_fgrow2 (&output_obstack, "%-5d %s :", i, tags[rlhs[i]]); fprintf (out, "%-5d %s :", i, tags[rule_table[i].lhs]);
for (r = &ritem[rrhs[i]]; *r > 0; r++) for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
obstack_fgrow1 (&output_obstack, " %s", tags[*r]); fprintf (out, " %s", tags[*r]);
obstack_grow1 (&output_obstack, '\n'); fputc ('\n', out);
} }
obstack_sgrow (&output_obstack, "\n\n"); fprintf (out, "\n\n");
} }
#endif
/*-------------------------------.
| Report the results to STDERR. |
`-------------------------------*/
static void static void
print_notices (void) reduce_print (void)
{ {
if (yacc_flag && nuseless_productions) if (yacc_flag && nuseless_productions)
fprintf (stderr, _("%d rules never reduced\n"), nuseless_productions); fprintf (stderr, _("%d rules never reduced\n"), nuseless_productions);
@@ -527,42 +527,37 @@ reduce_grammar (void)
reduced = (bool) (nuseless_nonterminals + nuseless_productions > 0); reduced = (bool) (nuseless_nonterminals + nuseless_productions > 0);
if (verbose_flag) if (!reduced)
print_results (); return;
if (reduced == FALSE) reduce_print ();
goto done_reducing;
print_notices ();
if (!BITISSET (N, start_symbol - ntokens)) if (!BITISSET (N, start_symbol - ntokens))
fatal (_("Start symbol %s does not derive any sentence"), fatal (_("Start symbol %s does not derive any sentence"),
tags[start_symbol]); tags[start_symbol]);
reduce_grammar_tables (); reduce_grammar_tables ();
#if 0
if (verbose_flag) if (trace_flag)
{ {
obstack_fgrow1 (&output_obstack, "REDUCED GRAMMAR\n\n"); dump_grammar (stderr);
dump_grammar ();
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 (N);
XFREE (V); XFREE (V);
XFREE (V1);
XFREE (P); XFREE (P);
} }
+3 -2
View File
@@ -1,5 +1,5 @@
/* Grammar reduction for Bison. /* 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. This file is part of Bison, the GNU Compiler Compiler.
@@ -22,5 +22,6 @@
# define REDUCE_H_ # define REDUCE_H_
void reduce_grammar PARAMS ((void)); void reduce_grammar PARAMS ((void));
void reduce_output PARAMS ((FILE *out));
void reduce_free PARAMS ((void));
#endif /* !REDUCE_H_ */ #endif /* !REDUCE_H_ */
+14 -1
View File
@@ -99,7 +99,9 @@ typedef struct core
} }
core; core;
#define CORE_ALLOC(Nitems) \
(core *) xcalloc ((unsigned) (sizeof (core) \
+ (Nitems - 1) * sizeof (short)), 1)
typedef struct shifts typedef struct shifts
{ {
@@ -110,6 +112,9 @@ typedef struct shifts
} }
shifts; shifts;
#define SHIFTS_ALLOC(Nshifts) \
(shifts *) xcalloc ((unsigned) (sizeof (shifts) \
+ (Nshifts - 1) * sizeof (short)), 1)
typedef struct errs typedef struct errs
@@ -119,6 +124,10 @@ typedef struct errs
} }
errs; errs;
#define ERRS_ALLOC(Nerrs) \
(errs *) xcalloc ((unsigned) (sizeof (errs) \
+ (Nerrs - 1) * sizeof (short)), 1)
typedef struct reductions typedef struct reductions
@@ -130,4 +139,8 @@ typedef struct reductions
} }
reductions; reductions;
#define REDUCTIONS_ALLOC(Nreductions) \
(reductions *) xcalloc ((unsigned) (sizeof (reductions) \
+ (Nreductions - 1) * sizeof (short)), 1)
#endif /* !STATE_H_ */ #endif /* !STATE_H_ */
+6 -2
View File
@@ -1,5 +1,5 @@
/* Symbol table manager for Bison, /* Symbol table manager for Bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -49,6 +49,9 @@ hash (const char *key)
static bucket * static bucket *
bucket_new (const char *tag, int hashval) bucket_new (const char *tag, int hashval)
{ {
/* Hack, until we have a Bison parser. */
extern int lineno;
bucket *res = XMALLOC (bucket, 1); bucket *res = XMALLOC (bucket, 1);
res->link = symtab[hashval]; res->link = symtab[hashval];
@@ -58,9 +61,10 @@ bucket_new (const char *tag, int hashval)
res->value = 0; res->value = 0;
res->prec = 0; res->prec = 0;
res->assoc = right_assoc; res->assoc = right_assoc;
res->user_token_number = 0; res->user_token_number = SUNDEF;
res->alias = NULL; res->alias = NULL;
res->class = unknown_sym; res->class = unknown_sym;
res->line = lineno;
nsyms++; nsyms++;
+5 -1
View File
@@ -1,5 +1,5 @@
/* Definitions for symtab.c and callers, part of bison, /* Definitions for symtab.c and callers, part of bison,
Copyright 1984, 1989, 1992, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -33,6 +33,7 @@ typedef enum
nterm_sym /* non-terminal */ nterm_sym /* non-terminal */
} symbol_class; } symbol_class;
#define SUNDEF -1 /* For undefined user number. */
#define SALIAS -9991 /* for symbol generated with an alias */ #define SALIAS -9991 /* for symbol generated with an alias */
typedef struct bucket typedef struct bucket
@@ -41,6 +42,9 @@ typedef struct bucket
struct bucket *link; struct bucket *link;
struct bucket *next; struct bucket *next;
/* The line it was found in. */
short line;
/* The key, name of the symbol. */ /* The key, name of the symbol. */
char *tag; char *tag;
/* Its type. */ /* Its type. */
+32 -2
View File
@@ -40,6 +40,18 @@
# include <stdlib.h> # include <stdlib.h>
#endif #endif
/* The following test is to work around the gross typo in
systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE
is defined to 0, not 1. */
#if !EXIT_FAILURE
# undef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
#ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
#endif
#if HAVE_UNISTD_H #if HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif
@@ -126,10 +138,13 @@ size_t strnlen PARAMS ((const char *s, size_t maxlen));
# include <libintl.h> # include <libintl.h>
# define _(Text) gettext (Text) # define _(Text) gettext (Text)
#else #else
# undef bindtextdomain # undef bindtextdomain
# define bindtextdomain(Domain, Directory) # define bindtextdomain(Domain, Directory)
# undef textdomain # undef textdomain
# define textdomain(Domain) # define textdomain(Domain)
# undef ngettext
# define ngettext(Singular, Plural, Number) \
((Number == 1) ? Singular : Plural)
# define _(Text) Text # define _(Text) Text
#endif #endif
#define N_(Text) Text #define N_(Text) Text
@@ -264,6 +279,21 @@ do { \
#endif #endif
/* As memcpy, but for shorts. */
#define shortcpy(Dest, Src, Num) \
memcpy (Dest, Src, Num * sizeof (short))
/* Free a linked list. */
#define LIST_FREE(Type, List) \
do { \
Type *_node, *_next; \
for (_node = List; _node; _node = _next) \
{ \
_next = _node->next; \
XFREE (_node); \
} \
} while (0)
/*---------------------------------. /*---------------------------------.
| Debugging the memory allocator. | | Debugging the memory allocator. |
`---------------------------------*/ `---------------------------------*/
+46 -35
View File
@@ -21,6 +21,16 @@
#include "system.h" #include "system.h"
#include "vcg.h" #include "vcg.h"
#include "vcg_defaults.h" #include "vcg_defaults.h"
#include "quotearg.h"
/* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */
static char const *
quote (char const *name)
{
return quotearg_n_style (0, c_quoting_style, name);
}
/* Initialize a graph with the default values. */ /* Initialize a graph with the default values. */
void void
@@ -429,7 +439,7 @@ void
add_classname (graph_t *g, int val, const char *name) add_classname (graph_t *g, int val, const char *name)
{ {
struct classname_s *classname; struct classname_s *classname;
classname = XMALLOC (struct classname_s, 1); classname = XMALLOC (struct classname_s, 1);
classname->no = val; classname->no = val;
classname->name = name; classname->name = name;
@@ -441,7 +451,7 @@ void
add_infoname (graph_t *g, int integer, const char *string) add_infoname (graph_t *g, int integer, const char *string)
{ {
struct infoname_s *infoname; struct infoname_s *infoname;
infoname = XMALLOC (struct infoname_s, 1); infoname = XMALLOC (struct infoname_s, 1);
infoname->integer = integer; infoname->integer = integer;
infoname->string = string; infoname->string = string;
@@ -451,11 +461,11 @@ add_infoname (graph_t *g, int integer, const char *string)
/* Build a colorentry struct and add it to the list. */ /* Build a colorentry struct and add it to the list. */
void void
add_colorentry (graph_t *g, int color_idx, int red_cp, add_colorentry (graph_t *g, int color_idx, int red_cp,
int green_cp, int blue_cp) int green_cp, int blue_cp)
{ {
struct colorentry_s *ce; struct colorentry_s *ce;
ce = XMALLOC (struct colorentry_s, 1); ce = XMALLOC (struct colorentry_s, 1);
ce->color_index = color_idx; ce->color_index = color_idx;
ce->red_cp = red_cp; ce->red_cp = red_cp;
@@ -556,9 +566,9 @@ void
output_node (node_t *node, FILE *fout) output_node (node_t *node, FILE *fout)
{ {
if (node->title != N_TITLE) if (node->title != N_TITLE)
fprintf (fout, "\t\ttitle:\t\"%s\"\n", node->title); fprintf (fout, "\t\ttitle:\t%s\n", quote (node->title));
if (node->label != N_LABEL) if (node->label != N_LABEL)
fprintf (fout, "\t\tlabel:\t\"%s\"\n", node->label); fprintf (fout, "\t\tlabel:\t%s\n", quote (node->label));
if ((node->locx != N_LOCX) && (node->locy != N_LOCY)) if ((node->locx != N_LOCX) && (node->locy != N_LOCY))
fprintf (fout, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy); fprintf (fout, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy);
@@ -600,12 +610,13 @@ output_node (node_t *node, FILE *fout)
fprintf (fout, "\t\tbordercolor:\t%s\n", fprintf (fout, "\t\tbordercolor:\t%s\n",
get_color_str (node->bordercolor)); get_color_str (node->bordercolor));
if (node->infos[0]) {
fprintf (fout, "\t\tinfo1:\t\"%s\"\n", node->infos[0]); int i;
if (node->infos[1]) for (i = 0; i < 3; ++i)
fprintf (fout, "\t\tinfo2:\t\"%s\"\n", node->infos[1]); if (node->infos[i])
if (node->infos[2]) fprintf (fout, "\t\tinfo%d:\t%s\n",
fprintf (fout, "\t\tinfo3:\t\"%s\"\n", node->infos[2]); i, quote (node->infos[i]));
}
} }
void void
@@ -614,16 +625,16 @@ output_edge (edge_t *edge, FILE *fout)
/* FIXME: SOURCENAME and TARGETNAME are mandatory /* FIXME: SOURCENAME and TARGETNAME are mandatory
so it has to be fatal not to give these informations. */ so it has to be fatal not to give these informations. */
if (edge->sourcename != E_SOURCENAME) if (edge->sourcename != E_SOURCENAME)
fprintf (fout, "\t\tsourcename:\t\"%s\"\n", edge->sourcename); fprintf (fout, "\t\tsourcename:\t%s\n", quote (edge->sourcename));
if (edge->targetname != E_TARGETNAME) if (edge->targetname != E_TARGETNAME)
fprintf (fout, "\t\ttargetname:\t\"%s\"\n", edge->targetname); fprintf (fout, "\t\ttargetname:\t%s\n", quote (edge->targetname));
if (edge->label != E_LABEL) if (edge->label != E_LABEL)
fprintf (fout, "\t\tlabel:\t\"%s\"\n", edge->label); fprintf (fout, "\t\tlabel:\t%s\n", quote (edge->label));
if (edge->linestyle != E_LINESTYLE) if (edge->linestyle != E_LINESTYLE)
fprintf (fout, "\t\tlinestyle:\t\"%s\"\n", fprintf (fout, "\t\tlinestyle:\t%s\n",
get_linestyle_str(edge->linestyle)); quote (get_linestyle_str(edge->linestyle)));
if (edge->thickness != E_THICKNESS) if (edge->thickness != E_THICKNESS)
fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness); fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness);
@@ -666,16 +677,16 @@ void
output_graph (graph_t *graph, FILE *fout) output_graph (graph_t *graph, FILE *fout)
{ {
if (graph->title) if (graph->title)
fprintf (fout, "\ttitle:\t\"%s\"\n", graph->title); fprintf (fout, "\ttitle:\t%s\n", quote (graph->title));
if (graph->label) if (graph->label)
fprintf (fout, "\tlabel:\t\"%s\"\n", graph->label); fprintf (fout, "\tlabel:\t%s\n", quote (graph->label));
if (graph->infos[0]) {
fprintf (fout, "\tinfo1:\t\"%s\"\n", graph->infos[0]); int i;
if (graph->infos[1]) for (i = 0; i < 3; ++i)
fprintf (fout, "\tinfo2:\t\"%s\"\n", graph->infos[1]); if (graph->infos[i])
if (graph->infos[2]) fprintf (fout, "\tinfo%d:\t%s\n", i, quote (graph->infos[i]));
fprintf (fout, "\tinfo3:\t\"%s\"\n", graph->infos[2]); }
if (graph->color != G_COLOR) if (graph->color != G_COLOR)
fprintf (fout, "\tcolor:\t%s\n", get_color_str (graph->color)); fprintf (fout, "\tcolor:\t%s\n", get_color_str (graph->color));
@@ -711,11 +722,11 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->shape != G_SHAPE) if (graph->shape != G_SHAPE)
fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape)); fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape));
if (graph->vertical_order != G_VERTICAL_ORDER) if (graph->vertical_order != G_VERTICAL_ORDER)
fprintf (fout, "\tvertical_order:\t%d\n", graph->vertical_order); fprintf (fout, "\tvertical_order:\t%d\n", graph->vertical_order);
if (graph->horizontal_order != G_HORIZONTAL_ORDER) if (graph->horizontal_order != G_HORIZONTAL_ORDER)
fprintf (fout, "\thorizontal_order:\t%d\n", graph->horizontal_order); fprintf (fout, "\thorizontal_order:\t%d\n", graph->horizontal_order);
if (graph->xmax != G_XMAX) if (graph->xmax != G_XMAX)
fprintf (fout, "\txmax:\t%d\n", graph->xmax); fprintf (fout, "\txmax:\t%d\n", graph->xmax);
@@ -743,8 +754,8 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->hidden != G_HIDDEN) if (graph->hidden != G_HIDDEN)
fprintf (fout, "\thidden:\t%d\n", graph->hidden); fprintf (fout, "\thidden:\t%d\n", graph->hidden);
/* FIXME: Unallocate struct list if required. /* FIXME: Unallocate struct list if required.
Maybe with a little function. */ Maybe with a little function. */
if (graph->classname != G_CLASSNAME) if (graph->classname != G_CLASSNAME)
{ {
@@ -765,15 +776,15 @@ output_graph (graph_t *graph, FILE *fout)
if (graph->colorentry != G_COLORENTRY) if (graph->colorentry != G_COLORENTRY)
{ {
struct colorentry_s *ite; struct colorentry_s *ite;
for (ite = graph->colorentry; ite; ite = ite->next) for (ite = graph->colorentry; ite; ite = ite->next)
{ {
fprintf (fout, "\tcolorentry %d :\t%d %d %d\n", fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
ite->color_index, ite->color_index,
ite->red_cp, ite->red_cp,
ite->green_cp, ite->green_cp,
ite->blue_cp); ite->blue_cp);
} }
} }
if (graph->layoutalgorithm != G_LAYOUTALGORITHM) if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
+3 -6
View File
@@ -18,14 +18,14 @@
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA. ## 02111-1307, USA.
EXTRA_DIST = atlocal.in $(TESTSUITE_AT) testsuite EXTRA_DIST = $(TESTSUITE_AT) testsuite
DISTCLEANFILES = atconfig atlocal bison package.m4 DISTCLEANFILES = atconfig bison package.m4
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at regression.at output.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
AUTOTEST = $(AUTOM4TE) --language=autotest AUTOTEST = $(AUTOM4TE) --language=autotest
@@ -36,9 +36,6 @@ $(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
atconfig: $(top_builddir)/config.status atconfig: $(top_builddir)/config.status
cd $(top_builddir) && ./config.status tests/$@ cd $(top_builddir) && ./config.status tests/$@
atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
cd $(top_builddir) && ./config.status tests/$@
clean-local: clean-local:
$(SHELL) $(TESTSUITE) --clean $(SHELL) $(TESTSUITE) --clean
+12 -14
View File
@@ -1,4 +1,5 @@
# Makefile.in generated automatically by automake 1.5a from Makefile.am. # Makefile.in generated by automake 1.5a from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@@ -83,8 +84,8 @@ INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@ INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@ INTLOBJS = @INTLOBJS@
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
LIB = @LIB@
LIBICONV = @LIBICONV@ LIBICONV = @LIBICONV@
LIBOBJS = @LIBOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@ MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@ PACKAGE = @PACKAGE@
@@ -100,14 +101,14 @@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
EXTRA_DIST = atlocal.in $(TESTSUITE_AT) testsuite EXTRA_DIST = $(TESTSUITE_AT) testsuite
DISTCLEANFILES = atconfig atlocal bison package.m4 DISTCLEANFILES = atconfig bison package.m4
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE) MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
TESTSUITE_AT = \ TESTSUITE_AT = \
testsuite.at \ testsuite.at \
output.at calc.at regression.at output.at calc.at torture.at regression.at
TESTSUITE = $(srcdir)/testsuite TESTSUITE = $(srcdir)/testsuite
@@ -115,9 +116,9 @@ AUTOTEST = $(AUTOM4TE) --language=autotest
subdir = tests subdir = tests
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = bison CONFIG_CLEAN_FILES = bison atlocal
DIST_SOURCES = DIST_SOURCES =
DIST_COMMON = Makefile.am Makefile.in bison.in DIST_COMMON = Makefile.am Makefile.in atlocal.in bison.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@@ -125,11 +126,11 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu tests/Makefile $(AUTOMAKE) --gnu tests/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
bison: $(top_builddir)/config.status bison.in bison: $(top_builddir)/config.status bison.in
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
atlocal: $(top_builddir)/config.status atlocal.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
@@ -240,9 +241,6 @@ $(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
atconfig: $(top_builddir)/config.status atconfig: $(top_builddir)/config.status
cd $(top_builddir) && ./config.status tests/$@ cd $(top_builddir) && ./config.status tests/$@
atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
cd $(top_builddir) && ./config.status tests/$@
clean-local: clean-local:
$(SHELL) $(TESTSUITE) --clean $(SHELL) $(TESTSUITE) --clean
+1 -1
View File
@@ -10,4 +10,4 @@ CFLAGS='@CFLAGS@'
GCC='@GCC@' GCC='@GCC@'
# We need `config.h'. # We need `config.h'.
CPPFLAGS="-I $top_builddir @CPPFLAGS@" CPPFLAGS="-I $top_buildpath @CPPFLAGS@"
+17 -10
View File
@@ -64,7 +64,8 @@ static void yyungetc (int c);
extern void perror (const char *s); extern void perror (const char *s);
%} %}
/* BISON Declarations */ /* Bison Declarations */
%token CALC_EOF 0
%token NUM %token NUM
%nonassoc '=' /* comparison */ %nonassoc '=' /* comparison */
@@ -204,7 +205,7 @@ yylex (void)
/* Return end-of-file. */ /* Return end-of-file. */
if (c == EOF) if (c == EOF)
return 0; return CALC_EOF;
/* Return single chars. */ /* Return single chars. */
return c; return c;
@@ -337,8 +338,14 @@ AT_CHECK([bison calc.y -o calc.c m4_bpatsubst([$1], [--yyerror-verbose])],
# Maybe some day we will have proper Autoconf macros to disable these # Maybe some day we will have proper Autoconf macros to disable these
# warnings, but this place is not the right one for that. # warnings, but this place is not the right one for that.
# So let's keep only GCC warnings, which we know are sane. # So let's keep only GCC warnings, which we know are sane.
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [stderr]) # Well, that's only part of the story: some assemblers issue warnings
AT_CHECK([if test "$GCC" = yes; then cat stderr; else true; fi]) # which can be totally useless, and actually polluting. It seems that
# the best bet be to completely ignore stderr, but to pass -Werror
# to GCC.
if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Werror"
fi
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [ignore])
# Test the priorities. # Test the priorities.
_AT_CHECK_CALC([$1], _AT_CHECK_CALC([$1],
@@ -359,24 +366,24 @@ _AT_CHECK_CALC([$1],
# Some parse errors. # Some parse errors.
_AT_CHECK_CALC_ERROR([$1], [+1], [8], _AT_CHECK_CALC_ERROR([$1], [+1], [8],
[1.0:1.1], [1.0:1.1],
[unexpected `'+'']) [unexpected '+'])
_AT_CHECK_CALC_ERROR([$1], [1//2], [17], _AT_CHECK_CALC_ERROR([$1], [1//2], [17],
[1.2:1.3], [1.2:1.3],
[unexpected `'/'', expecting `NUM' or `'-'' or `'('']) [unexpected '/', expecting NUM or '-' or '('])
_AT_CHECK_CALC_ERROR([$1], [error], [8], _AT_CHECK_CALC_ERROR([$1], [error], [8],
[1.0:1.1], [1.0:1.1],
[unexpected `$undefined.']) [unexpected $undefined.])
_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [23], _AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [23],
[1.6:1.7], [1.6:1.7],
[unexpected `'='']) [unexpected '='])
_AT_CHECK_CALC_ERROR([$1], _AT_CHECK_CALC_ERROR([$1],
[ [
+1], +1],
[16], [16],
[2.0:2.1], [2.0:2.1],
[unexpected `'+'']) [unexpected '+'])
AT_CLEANUP(calc calc.c calc.h calc.output) AT_CLEANUP
])# AT_CHECK_CALC ])# AT_CHECK_CALC
+11 -1
View File
@@ -31,7 +31,7 @@ foo: {}
AT_CHECK([bison $3 $1], 0) AT_CHECK([bison $3 $1], 0)
AT_CHECK([ls $4], [], [ignore]) AT_CHECK([ls $4], [], [ignore])
AT_CLEANUP($4) AT_CLEANUP
]) ])
AT_CHECK_OUTPUT([foo.y], [], [-dv], AT_CHECK_OUTPUT([foo.y], [], [-dv],
@@ -53,6 +53,16 @@ AT_CHECK_OUTPUT([foo.y], [%defines %verbose], [],
AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[], AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[],
[y.output y.tab.c y.tab.h]) [y.output y.tab.c y.tab.h])
# Exercise %output and %file-prefix
AT_CHECK_OUTPUT([foo.y], [%file-prefix="bar" %defines %verbose], [],
[bar.output bar.tab.c bar.tab.h])
AT_CHECK_OUTPUT([foo.y], [%output="bar.c" %defines %verbose %yacc],[],
[bar.output bar.c bar.h])
AT_CHECK_OUTPUT([foo.y],
[%file-prefix="baz" %output="bar.c" %defines %verbose %yacc],
[],
[bar.output bar.c bar.h])
# Check priorities of extension control. # Check priorities of extension control.
AT_CHECK_OUTPUT([foo.yy], [%defines %verbose], [], AT_CHECK_OUTPUT([foo.yy], [%defines %verbose], [],
+321 -15
View File
@@ -40,7 +40,285 @@ exp: '(' exp ')' | NUM ;
AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore) AT_CHECK([bison -v duplicate.y -o duplicate.c], 0, ignore, ignore)
AT_CLEANUP([duplicate.*]) AT_CLEANUP
## ------------------------- ##
## 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. ##
## ---------------------- ##
AT_SETUP([Mixing %token styles])
# Taken from the documentation.
AT_DATA([input.y],
[[%token <operator> OR "||"
%token <operator> LE 134 "<="
%left OR "<="
%%
exp: ;
%%
]])
AT_CHECK([bison -v input.y -o input.c], 0, ignore, ignore)
AT_CLEANUP
@@ -63,7 +341,7 @@ exp: {};
AT_CHECK([bison --defines union.y]) AT_CHECK([bison --defines union.y])
AT_CLEANUP([union.*]) AT_CLEANUP
## --------------------------------------- ## ## --------------------------------------- ##
@@ -86,15 +364,15 @@ exp: {};
AT_CHECK([bison union-comment.y]) AT_CHECK([bison union-comment.y])
AT_CHECK([fgrep '//*' union-comment.tab.c], [1], []) AT_CHECK([fgrep '//*' union-comment.tab.c], [1], [])
AT_CLEANUP([union-comment.*]) AT_CLEANUP
## --------------- ## ## ----------------- ##
## invalid input. ## ## Invalid input 1. ##
## --------------- ## ## ----------------- ##
AT_SETUP([Invalid input]) AT_SETUP([Invalid input: 1])
AT_DATA([input.y], AT_DATA([input.y],
[[%% [[%%
@@ -109,23 +387,51 @@ input.y:3: fatal error: no rules in the input grammar
AT_CLEANUP AT_CLEANUP
## ----------------- ##
## Invalid input 2. ##
## ----------------- ##
AT_SETUP([Invalid input: 2])
AT_DATA([input.y],
[[%%
default: 'a' }
]])
AT_CHECK([bison input.y], [1], [],
[input.y:2: invalid input: `}'
])
AT_CLEANUP
## --------------------- ## ## --------------------- ##
## Invalid CPP headers. ## ## Invalid CPP headers. ##
## --------------------- ## ## --------------------- ##
AT_SETUP([Invalid CPP headers]) # AT_TEST_CPP_GUARD_H([INPUT-FILE-BASE)
# -------------------------------------
m4_define([AT_TEST_CPP_GUARD_H],
[AT_SETUP([Invalid CPP guards: $1])
mkdir input # Possibly create inner directories.
dirname=`AS_DIRNAME([$1])`
AS_MKDIR_P([$dirname])
AT_DATA([input/input.y], AT_DATA([$1.y],
[%% [%%
dummy: dummy:
]) ])
AT_CHECK([bison --defines input/input.y]) AT_CHECK([bison --defines=$1.h $1.y])
AT_CHECK([sed 1q input/input.tab.h], 0, # CPP should be happy with it.
[[#ifndef INPUT_INPUT_TAB_H AT_CHECK([$CC -E $1.h], 0, [ignore])
]])
AT_CLEANUP(input) AT_CLEANUP
])
AT_TEST_CPP_GUARD_H([input/input])
AT_TEST_CPP_GUARD_H([9foo])
+2 -1
View File
@@ -19,7 +19,7 @@
# 02111-1307, USA. # 02111-1307, USA.
# We need a recent Autotest. # We need a recent Autotest.
m4_version_prereq([2.52e]) m4_version_prereq([2.52g])
AT_INIT AT_INIT
@@ -27,4 +27,5 @@ AT_TESTED([bison])
m4_include([output.at]) m4_include([output.at])
m4_include([calc.at]) m4_include([calc.at])
m4_include([torture.at])
m4_include([regression.at]) m4_include([regression.at])
+116
View File
@@ -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