Compare commits

..
Author SHA1 Message Date
Akim Demaille 645ff8cdee Regen. 2001-09-22 16:13:59 +00:00
Akim Demaille a726df0b44 * configure.in (ALL_LINGUAS): Add "tr".
* po/.cvsignore: Ignore GMO files.
2001-09-21 16:52:42 +00:00
Akim Demaille ce209526ed * tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend upon package.m4. 2001-09-21 16:41:46 +00:00
Akim Demaille b94bf14aac More ignores. 2001-09-21 16:35:45 +00:00
Akim Demaille 2a4426474d Version 1.29a.
* Makefile.maint, config/config.guess, config/config.sub,
* config/missing: Update from masters.
2001-09-21 16:28:06 +00:00
Marc Autret 9022c575cc Update. 2001-09-21 15:45:54 +00:00
Akim Demaille dae9263b7b Adjust. 2001-09-21 14:45:03 +00:00
Akim Demaille cdd11a9322 * tests/Makefile.am (package.m4): Move to...
($(srcdir)/$(TESTSUITE)): here.
2001-09-21 14:44:22 +00:00
Akim Demaille da7ab9b7b0 * src/complain.c: No longer try to be standalone: use system.h.
Don't assume __STDC__ is defined to 1. Just test if it is defined.
* src/complain.h: Likewise.
* src/reduce.c (useless_nonterminals, inaccessable_symbols):
Remove the unused variable `n'.
From Albert Chin-A-Young.
2001-09-20 17:08:42 +00:00
Akim Demaille 0899b02570 Regen. 2001-09-20 17:08:06 +00:00
Marc Autret 0f23d6d25b * doc/bison.1: Update.
* doc/bison.texinfo (Bison Options): Update --defines and --graph
descriptions.
(Option Cross Key): Update.
Add --graph.
2001-09-19 13:09:32 +00:00
Marc Autret 47cef7a2ff * tests/regression.at: New test (comment in %union). 2001-09-18 15:18:26 +00:00
Marc Autret 7972022dac * src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment
do that.
Reported by Keith Browne.
2001-09-18 11:37:11 +00:00
Marc Autret ea4f4c4c1b * tests/output.at: Add tests for --defines and --graph. 2001-09-18 11:14:21 +00:00
Marc Autret d97207ad77 * tests/output.at: Removes tests of %{header,src}_extension features. 2001-09-18 11:04:29 +00:00
Akim Demaille 3068221b53 * tests/Makefile.am (package.m4): New.
* tests/calc.at (_AT_CHECK_CALC): Just run `calc input'.
(_AT_CHECK_CALC_ERROR): Likewise.
Factor the `, ' part of verbose error messages.
2001-09-18 10:51:36 +00:00
Akim Demaille 6f0d1fd89d Regen. 2001-09-18 10:44:11 +00:00
Marc Autret 6526f6dbf7 * src/getargs.c (longopts): Declare --defines and --graph as options
with optional arguments.
* src/files.h: Add extern declarations.
* src/files.c (spec_graph_file, spec_defines_file): New.
(output_files): Update.
Remove CPP-outed code.
2001-09-17 23:00:01 +00:00
Marc Autret 817e461c23 Update. 2001-09-17 22:21:16 +00:00
Marc Autret c4e3dae3ac Turn off %{source,header}_extension feature.
* src/files.c (compute_exts_from_gf): Update.
(compute_exts_from_src): Update.
(output_files): CPP-out useless code.
* src/files.h: Remove {header,source}_extension extern declarations.
* src/reader.c (parse_dquoted_param): CPP-out.
(parse_header_extension_decl): Remove.
(parse_source_extension_decl): Remove.
(read_declarations): Remove cases tok_{hdrext,srcext}.
* src/lex.c (percent_table): Remove {header,source}_extension entries.
* src/lex.h (token_t): Remove tok_hdrext and tok_srcext.
2001-09-17 22:20:08 +00:00
Akim Demaille 8cedc168fa * tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT):
(AT_CHECK_BISON_PERCENT_FLAGS): Merge into...
(AT_CHECK_OUTPUT): this.
Merely check ls' exit status, its output is useless.
2001-09-10 09:59:39 +00:00
Akim Demaille 3b14996787 * tests/calc.at: Use m4_match.
(_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'.
2001-09-10 09:31:50 +00:00
Akim Demaille 041cad1677 * src/vcg.h (graph_s): color, textcolor, bordercolor are now
enum color_e.
* src/print_graph.c (print_graph): Initalize graph.layoutalgorithm
to `normal'.
* src/reader.c (parse_token_decl): Initialize token with tok_eof.
* src/lex.h: Adjust prototype.
(token_t): Add `tok_undef'.
* src/lex.c (struct percent_table_struct): Retval is now a token_t.
(parse_percent_token): Now returns token_t.
Add default statement in switch.
(lex): Separate `c' as an input variable, from the token_t result
part.
(unlexed): Is a token_t.
2001-09-10 08:33:25 +00:00
Akim Demaille 31478b7ab7 * configure.in: Bump to 1.29a. 2001-09-10 08:23:56 +00:00
Akim Demaille e957bbb7d4 . 2001-09-07 12:56:52 +00:00
Akim Demaille b5f513ef2c In config/ now. 2001-09-07 12:34:16 +00:00
Akim Demaille 3afa674b1d Version 1.29. 2001-09-07 12:12:30 +00:00
Akim Demaille ac481f3b08 Newer translations. 2001-08-31 14:11:48 +00:00
Marc Autret 010c94a243 Update 2001-08-31 00:08:57 +00:00
Akim Demaille d37a7c45b3 Regen. and fix typo in configure.in. 2001-08-30 15:41:41 +00:00
Akim Demaille d63e24071f * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove.
* m4/atconfig.m4: Remove.
* tests/testsuite.at, tests/atlocal.in, tests/output.at,
* tests/bison: New.
* tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER,
m4_if, m4_patsubst, and m4_regexp.
* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an
`input' file instead of echo.
2001-08-30 15:36:37 +00:00
Akim Demaille afd36419df Bump to 1.28e. 2001-08-29 12:54:26 +00:00
Akim Demaille 6918b5fcc9 Version 1.28d. 2001-08-29 12:32:10 +00:00
Robert Anisko 38e616f0f5 * src/bison.simple (yyparse): Don't take the address of an
item before the start of an array, as that doesn't conform to
the C Standard.
2001-08-29 12:21:38 +00:00
Akim Demaille db433e9db8 * doc/bison.texinfo (Location Tracking Calc): New node. 2001-08-29 12:16:04 +00:00
Robert Anisko 870f12c270 * src/output.c (output): Do not define const, as this now
causes more problems than it cures.
2001-08-29 12:13:03 +00:00
Akim Demaille e0a53a7f4a More ignores. 2001-08-29 12:08:41 +00:00
Akim Demaille 27c1ceb8da * doc/bison.texinfo: Modernize @node' and @top' use: just name
the nodes.
Be sure to tag the `detailmenu'.
2001-08-29 12:07:46 +00:00
Akim Demaille 8f5d3a2dd5 Update. 2001-08-29 10:46:39 +00:00
Akim Demaille adfd774c80 * Makefile.maint (do-po-update): Wget refuses to overwrite files:
download in a tmp dir.
2001-08-29 10:46:17 +00:00
Marc Autret 057194c61e * config/depcomp: New file. 2001-08-28 16:25:45 +00:00
Marc Autret a6f622cd50 * doc/bison.1 (mandoc): Adjust.
From Juan Manuel Guerrero.
2001-08-28 13:58:27 +00:00
Marc Autret 2b8ce46775 * src/print_graph.c (print_state): Fix. 2001-08-28 11:33:36 +00:00
Marc Autret 19553c4e06 * src/vcg.h (classname_s, infoname_s, node_s): Constify the
char * members.
Echo modifications to the functions prototypes.
* src/vcg.c (add_classname, add_infoname): Adjust arguments.
2001-08-27 22:16:23 +00:00
Marc Autret b1722803ec * src/vcg.c: Include `xalloc.h'.
(add_colorentry): New.
(add_classname): New.
(add_infoname): New.
* src/vcg.h: Add new prototypes.
2001-08-27 12:02:47 +00:00
Akim Demaille 6f5e0eea04 Regen. 2001-08-27 10:50:12 +00:00
Akim Demaille e4ad4676be * Makefile.maint: Sync. again with CVS Autoconf. 2001-08-27 10:44:39 +00:00
Akim Demaille 7b50efe542 Run update. 2001-08-27 10:14:26 +00:00
Akim Demaille cf90ca5d46 * Makefile.maint: Formatting changes.
(po-update, cvs-update, update): New targets.
(AMTAR): Remove.
2001-08-27 10:14:05 +00:00
Akim Demaille e373aad966 * Makefile.am (AUTOMAKE_OPTIONS): 1.5.
* Makefile.maint: Sync. with CVS Autoconf.
2001-08-27 09:33:34 +00:00
Marc Autret 3e4c37cf7b * src/vcg.h (struct infoname_s): New.
(struct colorentry_s): New.
(graph_s): New fields {vertical,horizontal}_order in structure.
Add `infoname' field.
Add `colorentry' field;
* src/vcg_defaults.h (G_VERTICAL_ORDER): New.
(G_HORIZONTAL_ORDER): New.
(G_INFONAME): New.
(G_COLORENTRY): New.
* src/vcg.c (output_graph): Add output of {vertical,horizontal}_order.
Add output of `infoname'.
Add output of `colorentry'.
2001-08-26 23:48:50 +00:00
Marc Autret dfaa776005 * src/reader.c (parse_dquoted_param): Rename variable index' to i'.
This one shadowed a global parameter.
2001-08-26 23:36:42 +00:00
Marc Autret aecd294cb0 Adjust 2001-08-26 23:31:49 +00:00
Marc Autret 52eddd8c33 * src/print_graph.c (node_output_size): Declared POSIX `size_t' type,
instead of `unsigned'.
(print_state): Donnot call obstack_object_size () in obstack_grow ()
to avoid macro variables shadowing.
2001-08-24 18:47:20 +00:00
Marc Autret 60403d1bc1 * src/lex.c (percent_table): Typo: s/naem/name/.
Add graph option.
Normalize new options declarations.
2001-08-24 18:36:50 +00:00
Pascal Bart dd9f12de60 * tests/suite.at: Exercise %header_extension and %source_extension. 2001-08-21 07:30:37 +00:00
Marc Autret 6085f203e1 Update with new graph option. 2001-08-16 20:56:55 +00:00
Marc Autret 7a360eeaed * src/reader.c (parse_dquoted_param): New.
(parse_header_extension_decl): Use it.
(parse_source_extension_decl): Likewise.
2001-08-16 20:48:02 +00:00
Marc Autret af550e2927 * src/vcg.c: Remove includes of complain.h' and xalloc.h'.
(get_xxxx_str): Use assert () instead of complain ().
Remove return invokations in default cases.
(get_decision_str): Modify default behaviour. Remove second argument.
Echo modifications on calls.
(output_graph): Fix.
2001-08-16 20:01:14 +00:00
Marc Autret 78632bbcdc * src/getargs.c (usage): Update with ``-g, --graph''. 2001-08-16 18:50:04 +00:00
Marc Autret 483c899a17 * doc/bison.texinfo (Bison Options): Add items -g', --graph'.
(Option Cross Key): Likewise.
* doc/bison.1: Update.
2001-08-16 18:29:46 +00:00
93 changed files with 5714 additions and 6173 deletions
+2 -2
View File
@@ -3,10 +3,10 @@ config.cache
config.h config.h
config.log config.log
config.status config.status
stamp-h stamp-h*
bison-* bison-*
patches patches
*.patch *.log log patches applied *.patch *.log log patches applied
*.prj *.prj
releases releases
*.flc autom4te.cache
+194 -290
View File
@@ -1,364 +1,268 @@
2001-09-25 Pascal Bart <pascal.bart@epita.fr> 2001-09-21 Akim Demaille <akim@epita.fr>
* src/output.c (output_master_parser): Don't finish action_obstack. Version 1.29a.
(output_parser): Don't care about the muscle action, here. * Makefile.maint, config/config.guess, config/config.sub,
(prepare): Copy the action_obstack in the action muscle. * config/missing: Update from masters.
(output): Free action_obstack. * tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend
upon package.m4.
* configure.in (ALL_LINGUAS): Add `tr'.
2001-09-23 Pascal Bart <pascal.bart@epita.fr> 2001-09-21 Akim Demaille <akim@epita.fr>
* src/reader.c (parse_union_decl): Add new obstack union_obstack. Which * tests/Makefile.am (package.m4): Move to...
will contain `%union' declaration. ($(srcdir)/$(TESTSUITE)): here.
(parse_union_decl): Delete #line directive output.
(parse_union_decl): Substitute /attrs_obstack/union_obstack for all
informations about %union.
(parse_union_decl): Copy the union_obstack in the muscle stype.
* src/bison.simple: Add new #line directive.
Add typdef %%stype YYSTYPE.
2001-09-23 Pascal Bart <pascal.bart@epita.fr> 2001-09-20 Akim Demaille <akim@epita.fr>
* src/bison.simple: Add new `#line' directive. * src/complain.c: No longer try to be standalone: use system.h.
Don't assume __STDC__ is defined to 1. Just test if it is defined.
* src/complain.h: Likewise.
* src/reduce.c (useless_nonterminals, inaccessable_symbols):
Remove the unused variable `n'.
From Albert Chin-A-Young.
2001-09-22 Pascal Bart <pascal.bart@epita.fr> 2001-09-18 Marc Autret <autret_m@epita.fr>
* src/bison.simple: New `#line' directive. * doc/bison.1: Update.
* src/output.c (output_parser): Support new dynamic muscle input_line. * doc/bison.texinfo (Bison Options): Update --defines and --graph
descriptions.
(Option Cross Key): Update.
Add --graph.
2001-09-22 Marc Autret <[email protected]> 2001-09-18 Marc Autret <[email protected]>
* src/output.c (output_master_parser): New. * tests/regression.at: New test (comment in %union).
(output_parser): Be more re-entrant.
2001-09-21 Marc Autret <[email protected]> 2001-09-18 Marc Autret <[email protected]>
* src/reader.c (copy_definition, parse_union_decl): Update and use * src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment
`linef' muscle. do that.
(copy_action): Likewise. Reported by Keith Browne.
Use obstack_1grow ().
* src/muscle_tab.c (muscle_init): Add muscle `linef'.
2001-09-21 Marc Autret <[email protected]> 2001-09-18 Marc Autret <[email protected]>
* src/options.c (option_table): Adjust. * tests/output.at: Add tests for --defines and --graph.
* src/lex.c (parse_percent_token): Fix.
2001-09-20 Pascal Bart <pascal.bart@epita.fr> 2001-09-18 Marc Autret <autret_m@epita.fr>
* src/options.c (symtab.h): Include it, need by lex.h. * tests/output.at: Removes tests of %{header,src}_extension features.
2001-09-20 Pascal Bart <pascal.bart@epita.fr> 2001-09-18 Akim Demaille <akim@epita.fr>
* src/lex.c (parse_percent_token): Change type of variable `tx', which * tests/Makefile.am (package.m4): New.
is now an option_table_struct*. * tests/calc.at (_AT_CHECK_CALC): Just run `calc input'.
(option_strcmp): New function option_strcmp. (_AT_CHECK_CALC_ERROR): Likewise.
(parse_percent_token): Call option_strcmp. Factor the `, ' part of verbose error messages.
* src/getargs.c (xalloc.h, options.h): Include it.
(getargs): Call create_long_option_table.
(getargs): Free longopts at the end of the function.
(shortopts): Move in options.c.
* src/options.c (create_long_option_table): New function. Convert
information from option_table to option structure.
* src/reader.c (options.h): Include it.
* src/Makefile.am: Adjust. 2001-09-18 Marc Autret <[email protected]>
* src/options.c (option_table): Create from longopts and percent_table.
* src/getargs.c (longopts): Delete.
* src/lex.c (struct percent_table_struct): Delete.
(percent_table): Delete.
(options.h): Include it.
* src/options.c: Create.
* src/options.h: Create.
Declare enum opt_access_e.
Define struct option_table_struct.
2001-09-20 Marc Autret <[email protected]> * src/getargs.c (longopts): Declare --defines and --graph as options
with optional arguments.
* src/files.h: Add extern declarations.
* src/files.c (spec_graph_file, spec_defines_file): New.
(output_files): Update.
Remove CPP-outed code.
* doc/bison.texinfo: Adjust terminologies about prologue and epilogue 2001-09-18 Marc Autret <[email protected]>
sections of Bison.
2001-09-19 Pascal Bart <[email protected]> Turn off %{source,header}_extension feature.
* src/bison.simple: s/%%filename/%%skeleton. * src/files.c (compute_exts_from_gf): Update.
* src/muscle_tab.c (getargs.h): Include it. (compute_exts_from_src): Update.
(muscle_init): Insert new muscle skeleton. (output_files): CPP-out useless code.
* src/files.h: Remove {header,source}_extension extern declarations.
* src/reader.c (parse_dquoted_param): CPP-out.
(parse_header_extension_decl): Remove.
(parse_source_extension_decl): Remove.
(read_declarations): Remove cases tok_{hdrext,srcext}.
* src/lex.c (percent_table): Remove {header,source}_extension entries.
* src/lex.h (token_t): Remove tok_hdrext and tok_srcext.
2001-09-18 Pascal Bart <pascal.bart@epita.fr> 2001-09-10 Akim Demaille <akim@epita.fr>
* src/output.c (output_parser): Delete unused variable actions_dumped. * tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT):
(AT_CHECK_BISON_PERCENT_FLAGS): Merge into...
(AT_CHECK_OUTPUT): this.
Merely check ls' exit status, its output is useless.
2001-09-07 Pascal Bart <pascal.bart@epita.fr> 2001-09-10 Akim Demaille <akim@epita.fr>
* src/output.c (output): Delete call to reader_output_yylsp. * tests/calc.at: Use m4_match.
* src/reader.c (reader): Likewise. (_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'.
* src/reader.h: Delete declaration of reader_output_yylsp.
2001-09-02 Marc Autret <[email protected]> 2001-09-10 Marc Autret <[email protected]>, Akim Demaille <[email protected]>
* src/reader.c: Include muscle_tab.h. * src/vcg.h (graph_s): color, textcolor, bordercolor are now
(parse_union_decl): Update. enum color_e.
(parse_macro_decl): Rename parse_muscle_decl. * src/print_graph.c (print_graph): Initalize graph.layoutalgorithm
Update to use renamed functions and variable. to `normal'.
(read_declarations, copy_action, read_additionnal_code, : Updated * src/reader.c (parse_token_decl): Initialize token with tok_eof.
with correct variables and functions names. * src/lex.h: Adjust prototype.
(packsymbols, reader): Likewise. (token_t): Add `tok_undef'.
* src/lex.c (struct percent_table_struct): Retval is now a token_t.
(parse_percent_token): Now returns token_t.
Add default statement in switch.
(lex): Separate `c' as an input variable, from the token_t result
part.
(unlexed): Is a token_t.
* src/reader.h (muscle_obstack): Extern declaration update. 2001-09-10 Akim Demaille <[email protected]>
* src/output.c: Include muscle_tab.h * configure.in: Bump to 1.29a.
In all functions using macro_insert, change by using muscle_insert ().
(macro_obstack): Rename muscle_obstack.
Echo modifications in the whole file.
(MACRO_INSERT_INT): Rename MUSCLE_INSERT_INT.
(MACRO_INSERT_STRING): Rename MUSCLE_INSERT_STRING.
(MACRO_INSERT_PREFIX): Rename MUSCLE_INSERT_PREFIX.
* src/muscle_tab.h: Update double inclusion macros. 2001-09-07 Akim Demaille <[email protected]>
(macro_entry_s): Rename muscle_entry_s.
Update prototypes.
* src/muscle_tab.c: Include muscle_tab.h. Version 1.29.
Rename macro_tabble to muscle_table.
(mhash1, mhash2, mcmp): Use muscle_entry.
(macro_init): Rename muscle_init. Update.
(macro_insert): Rename muscle_insert. Update.
(macro_find): Rename muscle_find. Update.
* src/main.c: Include muscle_tab.h. 2001-08-30 Akim Demaille <[email protected]>
(main): Call muscle_init ().
* src/Makefile.am (bison_SOURCES): Echo modifications.
2001-09-02 Marc Autret <[email protected]> * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove.
* m4/atconfig.m4: Remove.
* tests/testsuite.at, tests/atlocal.in, tests/output.at,
* tests/bison: New.
* tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER,
m4_if, m4_patsubst, and m4_regexp.
* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an
`input' file instead of echo.
Now the files macro_tab.[ch] are named muscle_tab.[ch]. 2001-08-29 Akim Demaille <[email protected]>
* src/muscle_tab.c, src/muscle_tab.h: Add files. Bump to 1.28e.
2001-09-02 Marc Autret <autret_[email protected]> 2001-08-29 Akim Demaille <aki[email protected]>
* src/macrotab.c, src/macrotab.h: Remove. Version 1.28d.
2001-09-01 Pascal Bart <[email protected]> 2001-08-29 Paul Eggert <[email protected]>
* src/reader.c (copy_guard): Use muscle to specify the `#line'
filename.
2001-09-01 Marc Autret <[email protected]>
* tests/calc.at (exp): Now, YYERROR_VERBOSE need to be set
to an explicit value to activate the feature. We do it here.
2001-08-31 Pascal Bart <[email protected]>
* src/output.c (prepare): Delete the `filename' muscule insertion.
* src/reader.c (copy_action): Use `filename' muscule with `#line'.
(parse_union_decl): Likewise.
* src/macrotab.c (macro_init): Initialize filename by infile.
2001-08-31 Marc Autret <[email protected]>
* src/bison.simple (YYLSP_NEEDED): New definition.
* src/output.c (prepare): Add macro insertion of `locations_flag'
2001-08-31 Pascal Bart <[email protected]>
* src/output.c (prepare): Delete insertion of previous muscles,
and insert the `prefix' muscles.
* src/macrotab.c (macro_init): Likewise.
(macro_init): Initialization prefix directive by `yy'.
* src/bison.simple: Substitute all %%yylex, %%yychar, %%yylval,
%%yydebug, %%yyerror, %%yynerrs and %%yyparse by yylex, yychar,
yylval, yydebug, yyerror, yynerrs and yyparse.
New directive `#define' to substitute yydebug, ... with option
name_prefix.
2001-08-31 Pascal Bart <[email protected]>
* src/main.c (main): Standardize.
* src/output.c (output_table_data, output_parser): Likewise.
* src/macrotab.h, src/macrotab.c, src/bison.simple: Likewise.
2001-08-31 Pascal Bart <[email protected]>, Marc Autret <[email protected]>
* src/reader.c (read_additionnal_code): Rename %%user_code to
%%epilogue.
* src/output.c (output): Rename %%declarations to %%prologue.
* src/bison.simple: Echo modifications.
2001-08-31 Marc Autret <[email protected]>
* src/reader.c (readgram): CleanUp.
(output_token_defines): Likewise.
(packsymbols): Likewise.
(reader): Likewise.
* src/output.c (output): CPP-out useless code.
2001-08-31 Pascal Bart <[email protected]>
* src/reader.c (reader): Delete obsolete call to function
output_trailers and output_headers.
* src/output.h: Remove obsolete functions prototypes of output_headers
and output_trailers.
2001-08-30 Pascal Bart <[email protected]>
* src/main.c: Include macrotab.h.
* src/macrotab.h (macro_entry_s): Constify fields.
Adjust functions prototypes.
* src/macrotab.c (macro_insert): Constify key and value.
(macro_find): Constify key.
(macro_insert): Include 'xalloc.h'
(macro_insert): Use XMALLOC.
(macro_find): Constify return value.
* src/output.c (output_table_data): Rename table to table_data.
(output_parser): Constify macro_key, macro_value.
2001-08-30 Marc Autret <[email protected]>
* src/reader.c (parse_skel_decl): New.
(read_declarations): Add case `tok_skel', call parse_skel_decl ().
* src/lex.h (token_t): New token `tok_skel'.
* src/lex.c (percent_table): Add skeleton option entry.
Standardize.
2001-08-29 Marc Autret <[email protected]>
* src/bison.simple: Add %%user_code directive at the end.
* src/reader.c (read_additionnal_code): New.
(reader): Use it.
* src/output.c (output_program): Remove.
(output): Update.
2001-08-28 Marc Autret <[email protected]>
* src/output.c (output_actions): Clean up.
(output_gram): CPP-out useless code.
* src/reader.c (reader): Clean up, CPP-out useless code.
2001-08-28 Pascal Bart <[email protected]>
* src/output.c (output): Copy attrs_obstack in the '%%definitions'
directive.
* src/bison.simple: Add `%%definitions'.
2001-08-28 Marc Autret <[email protected]>
* config/depcomp: New file.
2001-08-27 Paul Eggert <[email protected]>
* src/bison.simple (yyparse): Don't take the address of an * src/bison.simple (yyparse): Don't take the address of an
item before the start of an array, as that doesn't conform to item before the start of an array, as that doesn't conform to
the C Standard. the C Standard.
2001-08-27 Robert Anisko <robert.[email protected]> 2001-08-29 Robert Anisko <anisko_r@epita.fr>
* src/output.c (output): Remove the initialization of the macro * doc/bison.texinfo (Location Tracking Calc): New node.
obstack. It was done too late here.
* src/reader.c (parse_macro_decl): Fix. Use of the macro obstack was 2001-08-29 Paul Eggert <[email protected]>
completely wrong.
(reader): Initialize the macro obstack here, since we need it to grow
'%define' directives.
* src/reader.h: Declare the macro obstack as extern. * src/output.c (output): Do not define const, as this now
causes more problems than it cures.
2001-08-27 Robert Anisko <robert.anisko@epita.fr> 2001-08-29 Akim Demaille <akim@epita.fr>
* src/output.c (output_parser): Fix. Store single '%' characters in * doc/bison.texinfo: Modernize `@node' and `@top' use: just name
the output obstack instead of throwing them away. the nodes.
Be sure to tag the `detailmenu'.
2001-08-29 Akim Demaille <[email protected]>
* Makefile.maint (do-po-update): Wget refuses to overwrite files:
download in a tmp dir.
2001-08-28 Marc Autret <[email protected]>
* config/depcomp: New file.
2001-08-28 Marc Autret <[email protected]>
* doc/bison.1 (mandoc): Adjust.
From Juan Manuel Guerrero.
2001-08-28 Marc Autret <[email protected]>
* src/print_graph.c (print_state): Fix.
2001-08-27 Marc Autret <[email protected]>
* src/vcg.h (classname_s, infoname_s, node_s): Constify the
char * members.
Echo modifications to the functions prototypes.
* src/vcg.c (add_classname, add_infoname): Adjust arguments.
2001-08-27 Marc Autret <[email protected]>
* src/vcg.c: Include `xalloc.h'.
(add_colorentry): New.
(add_classname): New.
(add_infoname): New.
* src/vcg.h: Add new prototypes.
2001-08-27 Akim Demaille <[email protected]>
* Makefile.maint: Sync. again with CVS Autoconf.
2001-08-27 Akim Demaille <[email protected]>
* Makefile.maint: Formatting changes.
(po-update, cvs-update, update): New targets.
(AMTAR): Remove.
2001-08-27 Akim Demaille <[email protected]> 2001-08-27 Akim Demaille <[email protected]>
* Makefile.am (AUTOMAKE_OPTIONS): 1.5. * Makefile.am (AUTOMAKE_OPTIONS): 1.5.
* Makefile.maint: Sync. with CVS Autoconf.
2001-08-25 Robert Anisko <robert.anisko@epita.fr> 2001-08-27 Marc Autret <autret_m@epita.fr>
* lib/Makefile.am: Adjust. * src/vcg.h (struct infoname_s): New.
(struct colorentry_s): New.
(graph_s): New fields {vertical,horizontal}_order in structure.
Add `infoname' field.
Add `colorentry' field;
* src/vcg_defaults.h (G_VERTICAL_ORDER): New.
(G_HORIZONTAL_ORDER): New.
(G_INFONAME): New.
(G_COLORENTRY): New.
* src/vcg.c (output_graph): Add output of {vertical,horizontal}_order.
Add output of `infoname'.
Add output of `colorentry'.
2001-08-25 Robert Anisko <robert.anisko@epita.fr> 2001-08-27 Marc Autret <autret_m@epita.fr>
* src/bison.simple: Update and add '%%' directives. * src/reader.c (parse_dquoted_param): Rename variable `index' to `i'.
This one shadowed a global parameter.
2001-08-25 Robert Anisko <robert.anisko@epita.fr> 2001-08-24 Marc Autret <autret_m@epita.fr>
* src/reader.c (reader): Remove calls to 'output_headers' and * src/print_graph.c (node_output_size): Declared POSIX `size_t' type,
'output_trailers'. Remove some C output. instead of `unsigned'.
(readgram): Disable a piece of code that was writing a default (print_state): Do not call obstack_object_size () in obstack_grow ()
definition for 'YYSTYPE'. to avoid macro variables shadowing.
(reader_output_yylsp): Remove.
(packsymbols): Output token defintions to a macro.
(copy_definition): Disable C output.
* src/reader.c (parse_macro_decl): New function used to parse macro 2001-08-23 Marc Autret <[email protected]>
declarations.
(copy_string2): Put the body of copy_string into this new function.
Add a parameter to let the caller choose whether he wants to copy the
string delimiters or not.
(copy_string): Be a simple call to copy_string2 with the last argument
bound to true.
(read_declarations): Add case for macro definition.
(copy_identifier): New.
(parse_macro_decl): Read macro identifiers using copy_identifier
rather than lex.
2001-08-25 Robert Anisko <[email protected]> * src/lex.c (percent_table): Typo: s/naem/name/.
Add graph option.
Normalize new options declarations.
* src/output.c (prepare): Add prefixed names. 2001-08-20 Pascal Bart <[email protected]>
(output_parser): Output semantic actions.
(output_parser): Fix bug on '%%line' directives.
* src/output.c (output_headers): Remove. The C code printed by this * tests/suite.at: Exercise %header_extension and %source_extension.
function should now be in the skeletons.
(output_trailers): Remove.
(output): Disable call to 'reader_output_yylsp'.
(output_rule_data): Do not output tables to the table obstack.
* src/output.c: Remove some C dedicated output. 2001-08-16 Marc Autret <[email protected]>
Improve the use of macro and output obstacks.
(output_defines): Remove.
* src/output.c (output_token_translations): Associate 'translate' * src/reader.c (parse_dquoted_param): New.
table with a macro. No output to the table obstack. (parse_header_extension_decl): Use it.
(output_gram): Same for 'rhs' and 'prhs'. (parse_source_extension_decl): Likewise.
(output_stos): Same for 'stos'.
(output_rule_data): Same for 'r1' and 'r2'.
(token_actions): Same for 'defact'.
(goto_actions): Same for 'defgoto'.
(output_base): Same for 'pact' and 'pgoto'.
(output_table): Same for 'table'.
(output_check): Same for 'check'.
* src/output.c (output_table_data): New function. 2001-08-16 Marc Autret <[email protected]>
(output_short_table): Remove.
(output_short_or_char_table): Remove.
* src/output.c (output_parser): Replace most of the skeleton copy code * src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
with something new. Skeletons are now processed character by character (get_xxxx_str): Use assert () instead of complain ().
rather than line by line, and Bison looks for '%%' macros. This is the Remove return invokations in default cases.
first step in making Bison's output process (a lot) more flexible. (get_decision_str): Modify default behaviour. Remove second argument.
(output_parser): Use the macro table. Echo modifications on calls.
(output_graph): Fix.
2001-08-25 Robert Anisko <robert.anisko@epita.fr> 2001-08-16 Marc Autret <autret_m@epita.fr>
* src/main.c (main): Initialize the macro table. * src/getargs.c (usage): Update with ``-g, --graph''.
2001-08-25 Robert Anisko <robert.anisko@epita.fr> 2001-08-16 Marc Autret <autret_m@epita.fr>
* src/lex.c (percent_table): Add tok_define. * doc/bison.texinfo (Bison Options): Add items `-g', `--graph'.
* src/lex.h: Add tok_define. (Option Cross Key): Likewise.
* doc/bison.1: Update.
2001-08-25 Robert Anisko <[email protected]>
* src/macrotab.c: New file.
* src/macrotab.h: New file.
* src/Makefile.am: Update.
2001-08-25 Robert Anisko <[email protected]>
* lib/hash.c: New file.
* lib/hash.h: New file.
* lib/Makefile.am: Update.
2001-08-15 Akim Demaille <[email protected]> 2001-08-15 Akim Demaille <[email protected]>
+2
View File
@@ -26,3 +26,5 @@ alpha_url_dir = gnu/bison
# Files to update automatically. # Files to update automatically.
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \ wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
$(srcdir)/config/texinfo.tex $(srcdir)/config/texinfo.tex
cvs_files = $(srcdir)/config/missing
+6 -9
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
@@ -123,6 +119,8 @@ alpha_url_dir = gnu/bison
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \ wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
$(srcdir)/config/texinfo.tex $(srcdir)/config/texinfo.tex
cvs_files = $(srcdir)/config/missing
subdir = . subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -135,9 +133,8 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-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 ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS TODO \ INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS \
aclocal.m4 config.hin configure configure.in missing \ aclocal.m4 config.hin configure configure.in
mkinstalldirs
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
all: config.h all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive $(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -156,7 +153,7 @@ $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF) cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): configure.in m4/atconfig.m4 m4/c-bs-a.m4 m4/codeset.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/m4.m4 m4/malloc.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/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/m4.m4 m4/malloc.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-h
@if test ! -f $@; then \ @if test ! -f $@; then \
@@ -295,7 +292,7 @@ distdir: $(DISTFILES)
fi fi
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
mkdir $(distdir) mkdir $(distdir)
$(mkinstalldirs) $(distdir)/intl $(distdir)/po $(distdir)/tests $(mkinstalldirs) $(distdir)/intl $(distdir)/po
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+101 -50
View File
@@ -22,9 +22,6 @@
# Do not save the original name or timestamp in the .tar.gz file. # Do not save the original name or timestamp in the .tar.gz file.
GZIP_ENV = '--no-name --best' GZIP_ENV = '--no-name --best'
# Automake 1.4 does not define AMTAR.
AMTAR ?= $(TAR)
CVS = cvs CVS = cvs
prev_version_file ?= .prev-version prev_version_file ?= .prev-version
@@ -46,12 +43,101 @@ release_archive_dir ?= ../release
## ---------------- ##
## Updating files. ##
## ---------------- ##
WGET = wget
ftp-gnu = ftp://ftp.gnu.org/gnu
# Use mv, if you don't have/want move-if-change.
move_if_change ?= move-if-change
# ------------------- #
# Updating PO files. #
# ------------------- #
po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE)
.PHONY: do-po-update po-update
do-po-update:
tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\
rm -rf $$tmppo && \
mkdir $$tmppo && \
(cd $$tmppo && $(WGET) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\
cp $$tmppo/*.po po
cd po && $(MAKE) update-po
$(MAKE) po-check
po-update:
if test -d "po"; then \
$(MAKE) do-po-update; \
fi
# -------------------------- #
# Updating GNU build tools. #
# -------------------------- #
# The following pseudo table associates a local directory and a URL
# with each of the files that belongs to some other package and is
# regularly updated from the specified URL.
wget_files ?= $(srcdir)/config.guess $(srcdir)/config.sub \
$(srcdir)/src/ansi2knr.c \
$(srcdir)/doc/texinfo.tex
wget-targets = $(patsubst %, get-%, $(wget_files))
config.guess-url_prefix = $(ftp-gnu)/config/
config.sub-url_prefix = $(ftp-gnu)/config/
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
standards.texi-url_prefix = $(ftp-gnu)/GNUinfo/
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
target = $(patsubst get-%, %, $@)
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
.PHONY: $(wget-targets)
$(wget-targets):
$(WGET) $(url) -O $(target).t \
&& $(move_if_change) $(target).t $(target)
.PHONY: wget-update
wget-update: $(wget-targets)
# Updating tools via CVS.
cvs_files ?= depcomp missing
cvs-targets = $(patsubst %, get-%, $(cvs_files))
automake_repo = :pserver:[email protected]:/cvs/automake
.PHONY: $(cvs-targets)
$(cvs-targets):
$(CVS) -d $(automake_repo) co -p automake/lib/$(notdir $(target)) \
>$(target).t \
&& $(move_if_change) $(target).t $(target);
.PHONY: cvs-update
cvs-update: $(cvs-targets)
# --------------------- #
# Updating everything. #
# --------------------- #
.PHONY: update
update: wget-update cvs-update po-update
## --------------- ## ## --------------- ##
## Sanity checks. ## ## Sanity checks. ##
## --------------- ## ## --------------- ##
# Checks that don't require cvs. # Checks that don't require cvs. Run `changelog-check' last as
local-check: changelog-check po-check writable-files copyright-check # previous test may reveal problems requiring new ChangeLog entries.
local-check: po-check copyright-check writable-files changelog-check
changelog-check: changelog-check:
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \ if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
@@ -117,10 +203,16 @@ maintainer-distcheck: changelog-check
$(MAKE) my-distcheck $(MAKE) my-distcheck
## -------------- ##
## Making dists. ##
## -------------- ##
# Tag before making distribution. Also, don't make a distribution if # Tag before making distribution. Also, don't make a distribution if
# checks fail. Also, make sure the NEWS file is up-to-date. # checks fail. Also, make sure the NEWS file is up-to-date.
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck. # FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
cvs-dist: cvs-check maintainer-distcheck cvs-dist: local-check cvs-check maintainer-distcheck
$(CVS) update po $(CVS) update po
$(CVS) tag -c $(this-cvs-tag) $(CVS) tag -c $(this-cvs-tag)
$(MAKE) dist $(MAKE) dist
@@ -130,6 +222,7 @@ cvs-dist: cvs-check maintainer-distcheck
null_AM_MAKEFLAGS = \ null_AM_MAKEFLAGS = \
ACLOCAL=false \ ACLOCAL=false \
AUTOCONF=false \ AUTOCONF=false \
AUTOM4TE=false \
AUTOMAKE=false \ AUTOMAKE=false \
AUTOHEADER=false \ AUTOHEADER=false \
MAKEINFO=false MAKEINFO=false
@@ -177,7 +270,7 @@ rel-check:
md5_tmp=/tmp/rel-check-md5-$$$$; \ md5_tmp=/tmp/rel-check-md5-$$$$; \
set -e; \ set -e; \
trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \ trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
wget -q --output-document=$$tarz $(url); \ $(WGET) -q --output-document=$$tarz $(url); \
echo "$(md5) -" > $$md5_tmp; \ echo "$(md5) -" > $$md5_tmp; \
md5sum -c $$md5_tmp < $$tarz md5sum -c $$md5_tmp < $$tarz
@@ -228,48 +321,6 @@ announcement: NEWS ChangeLog $(rel-files)
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \ -e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
) )
WGET = wget
ftp-gnu = ftp://ftp.gnu.org/gnu
# Use mv, if you don't have/want move-if-change.
move_if_change ?= move-if-change
# The following pseudo table associates a local directory and a URL
# with each of the files that belongs to some other package and is
# regularly updated from the specified URL.
wget_files ?= $(srcdir)/config.guess $(srcdir)/config.sub \
$(srcdir)/src/ansi2knr.c \
$(srcdir)/doc/texinfo.tex
get-targets = $(patsubst %, get-%, $(wget_files))
config.guess-url_prefix = $(ftp-gnu)/config/
config.sub-url_prefix = $(ftp-gnu)/config/
ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/
texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/
standards.texi-url_prefix = $(ftp-gnu)/GNUinfo/
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
target = $(patsubst get-%, %, $@)
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
.PHONY: $(get-targets)
$(get-targets):
$(WGET) $(url) -O $(target).t \
&& $(move_if_change) $(target).t $(target)
automake_repo=:pserver:[email protected]:/cvs/automake
.PHONY: wget-update
wget-update: $(get-targets)
for f in depcomp missing; do \
test -f $$f || continue; \
echo checking out $$f...; \
$(CVS) -d $(automake_repo) co -p automake/lib/$$f > $$f.t \
&& $(move_if_change) $$f.t $$f; \
done
define emit-rsync-commands define emit-rsync-commands
echo ===================================== echo =====================================
echo ===================================== echo =====================================
@@ -284,7 +335,7 @@ endef
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz $(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
xdelta delta -9 $^ $@ || : xdelta delta -9 $^ $@ || :
alpha: local-check alpha:
$(MAKE) cvs-dist $(MAKE) cvs-dist
$(MAKE) $(xd-delta) $(MAKE) $(xd-delta)
$(MAKE) -s announcement > /tmp/announce-$(my_distdir) $(MAKE) -s announcement > /tmp/announce-$(my_distdir)
+18 -1
View File
@@ -1,7 +1,24 @@
Bison News Bison News
---------- ----------
Changes in version 1.28c: Changes in version 1.29a:
* `--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
argument.
* `%source_extension' and `%header_extension' are removed, failed
experiment.
* The test suite is more portable.
* Better portability.
Changes in version 1.29:
* Output file does not redefine const; that is now config.h's job.
* Added `-g' and `--graph'.
* The Bison manual is now distributed under the terms of the GNU FDL. * The Bison manual is now distributed under the terms of the GNU FDL.
+3
View File
@@ -2,12 +2,15 @@ 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:
Akim Demaille [email protected] Akim Demaille [email protected]
Albert Chin-A-Young [email protected]
Daniel Hagerty [email protected] Daniel Hagerty [email protected]
David J. MacKenzie [email protected] David J. MacKenzie [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]
Jim Meyering [email protected] Jim Meyering [email protected]
Juan Manuel Guerrero [email protected]
Keith Browne [email protected]
Laurent Mascherpa [email protected] Laurent Mascherpa [email protected]
Marc Autret [email protected] Marc Autret [email protected]
Neil Booth [email protected] Neil Booth [email protected]
-28
View File
@@ -1,28 +0,0 @@
-*- outline -*-
* src/reader.c
Complete parse_skel_decl () with parse_dquoted_param (). []
Check and cleanup for CPP-out code. []
* src/output.c
Synchronize `#line' directive with user file. [ok]
Cleanup dirty CPP-out code. []
** Output sub-skeleton files. []
Useful for %no_parser. []
*** New skeleton. []
* src/getargs.c src/lex.c
Synchronize percent and command line options. [ok]
* src/macrotab.[ch]
Removing warnings when compiling. (gcc-warnings). [ok]
* src/print_graph.c
Find the best graph parameters. []
* doc/bison.texinfo
Echo modifications of prologue and epilogue. []
Add informations about YYERROR_VERBOSE. []
Add explainations about skeleton muscles. []
Add explainations about %skeleton. []
Vendored
-20
View File
@@ -558,26 +558,6 @@ AC_DEFUN([_AM_DIRNAME],
m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl
]) # _AM_DIRNAME ]) # _AM_DIRNAME
# serial 2
# Single argument says where are built sources to test, relative to the
# built test directory. Maybe omitted if the same (flat distribution).
AC_DEFUN([AT_CONFIG],
[AT_TESTPATH=ifelse([$1], [], [.], [$1])
AC_SUBST([AT_TESTPATH])
# Try to be compatible with both Autoconf 2.13 and 2.50.
if test -z "$ECHO_C$ECHO_N$ECHO_T"; then
ECHO_C="$ac_c"
ECHO_N="$ac_n"
ECHO_T="$ac_t"
AC_SUBST([ECHO_C])
AC_SUBST([ECHO_N])
AC_SUBST([ECHO_T])
fi
])
#serial 1 #serial 1
# This test replaces the one in autoconf. # This test replaces the one in autoconf.
# Currently this macro should have the same name as the autoconf macro # Currently this macro should have the same name as the autoconf macro
+1 -1
View File
@@ -1,4 +1,4 @@
/* config.hin. Generated automatically from configure.in by autoheader. */ /* config.hin. Generated from configure.in by autoheader. */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems. systems. This function is required for `alloca.c' support on those systems.
-4
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
+54 -56
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-08-09' timestamp='2001-09-13'
# 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
@@ -127,7 +127,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*) *:NetBSD:*:*)
# Netbsd (nbsd) targets should (where applicable) match one or # NetBSD (nbsd) targets should (where applicable) match one or
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old # switched to ELF, *-*-netbsd* would select the old
@@ -144,6 +144,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
macppc) machine=powerpc-apple ;; macppc) machine=powerpc-apple ;;
hp3[0-9][05]) machine=m68k-hp ;; hp3[0-9][05]) machine=m68k-hp ;;
ibmrt|romp-ibm) machine=romp-ibm ;; ibmrt|romp-ibm) machine=romp-ibm ;;
sparc*) machine=`uname -p`-unknown ;;
*) machine=${UNAME_MACHINE}-unknown ;; *) machine=${UNAME_MACHINE}-unknown ;;
esac esac
# The Operating System including object format, if it has switched # The Operating System including object format, if it has switched
@@ -172,6 +173,45 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}" echo "${machine}-${os}${release}"
exit 0 ;; exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
macppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme88k:OpenBSD:*:*)
echo m88k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvmeppc:OpenBSD:*:*)
echo powerpc-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sgi:OpenBSD:*:*)
echo mipseb-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
alpha:OSF1:*:*) alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -247,30 +287,9 @@ EOF
Amiga*:UNIX_System_V:4.0:*) Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4 echo m68k-unknown-sysv4
exit 0;; exit 0;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:[Aa]miga[Oo][Ss]:*:*) *:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos echo ${UNAME_MACHINE}-unknown-amigaos
exit 0 ;; exit 0 ;;
arc64:OpenBSD:*:*)
echo mips64el-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
arc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
hkmips:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
pmax:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
sgi:OpenBSD:*:*)
echo mips-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
*:OS/390:*:*) *:OS/390:*:*)
echo i370-ibm-openedition echo i370-ibm-openedition
exit 0 ;; exit 0 ;;
@@ -333,9 +352,6 @@ EOF
aushp:SunOS:*:*) aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE} echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
# The situation for MiNT is a little confusing. The machine name # The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not # can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor # "atarist" or "atariste" at least should have a processor
@@ -362,18 +378,6 @@ EOF
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE} echo m68k-unknown-mint${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mvme88k:OpenBSD:*:*)
echo m88k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*) powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE} echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
@@ -390,6 +394,7 @@ EOF
echo clipper-intergraph-clix${UNAME_RELEASE} echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos) mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c sed 's/^ //' << EOF >$dummy.c
#ifdef __cplusplus #ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */ #include <stdio.h> /* for printf() prototype */
@@ -411,7 +416,6 @@ EOF
exit (-1); exit (-1);
} }
EOF EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.c -o $dummy \ $CC_FOR_BUILD $dummy.c -o $dummy \
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm -f $dummy.c $dummy && exit 0 && rm -f $dummy.c $dummy && exit 0
@@ -481,6 +485,7 @@ EOF
exit 0 ;; exit 0 ;;
*:AIX:2:3) *:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h> #include <sys/systemcfg.h>
@@ -492,7 +497,6 @@ EOF
exit(0); exit(0);
} }
EOF EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5 echo rs6000-ibm-aix3.2.5
@@ -560,6 +564,7 @@ EOF
fi ;; fi ;;
esac esac
if [ "${HP_ARCH}" = "" ]; then if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE #define _HPUX_SOURCE
@@ -593,10 +598,9 @@ EOF
exit (0); exit (0);
} }
EOF EOF
eval $set_cc_for_build (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy
rm -f $dummy.c $dummy
fi ;; fi ;;
esac esac
echo ${HP_ARCH}-hp-hpux${HPUX_REV} echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -606,6 +610,7 @@ EOF
echo ia64-hp-hpux${HPUX_REV} echo ia64-hp-hpux${HPUX_REV}
exit 0 ;; exit 0 ;;
3050*:HI-UX:*:*) 3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c sed 's/^ //' << EOF >$dummy.c
#include <unistd.h> #include <unistd.h>
int int
@@ -631,7 +636,6 @@ EOF
exit (0); exit (0);
} }
EOF EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2 echo unknown-hitachi-hiuxwe2
@@ -661,9 +665,6 @@ EOF
parisc*:Lites*:*:*) parisc*:Lites*:*:*)
echo hppa1.1-hp-lites echo hppa1.1-hp-lites
exit 0 ;; exit 0 ;;
hppa*:OpenBSD:*:*)
echo hppa-unknown-openbsd
exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd echo c1-convex-bsd
exit 0 ;; exit 0 ;;
@@ -715,9 +716,6 @@ EOF
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;; exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;; exit 0 ;;
@@ -730,9 +728,6 @@ EOF
*:FreeBSD:*:*) *:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;; exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*) i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin echo ${UNAME_MACHINE}-pc-cygwin
exit 0 ;; exit 0 ;;
@@ -848,6 +843,7 @@ EOF
exit 0 ;; exit 0 ;;
esac esac
# Determine whether the default compiler is a.out or elf # Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
cat >$dummy.c <<EOF cat >$dummy.c <<EOF
#include <features.h> #include <features.h>
#ifdef __cplusplus #ifdef __cplusplus
@@ -872,7 +868,6 @@ EOF
return 0; return 0;
} }
EOF EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy rm -f $dummy.c $dummy
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
@@ -1111,11 +1106,15 @@ EOF
i*86:XTS-300:*:STOP) i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop echo ${UNAME_MACHINE}-unknown-stop
exit 0 ;; exit 0 ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
exit 0 ;;
esac esac
#echo '(No uname command or uname output not recognized.)' 1>&2 #echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
eval $set_cc_for_build
cat >$dummy.c <<EOF cat >$dummy.c <<EOF
#ifdef _SEQUENT_ #ifdef _SEQUENT_
# include <sys/types.h> # include <sys/types.h>
@@ -1230,7 +1229,6 @@ main ()
} }
EOF EOF
eval $set_cc_for_build
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy rm -f $dummy.c $dummy
+8 -6
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-08-13' timestamp='2001-09-14'
# 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
@@ -236,7 +236,8 @@ case $basic_machine in
| mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
| mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
| mipsbe | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
| mipsisa32 \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| ns16k | ns32k \ | ns16k | ns32k \
| openrisc \ | openrisc \
@@ -246,7 +247,7 @@ case $basic_machine in
| s390 | s390x \ | 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 \
| strongarm \ | stormy16 | strongarm \
| tahoe | thumb | tic80 | tron \ | tahoe | thumb | tic80 | tron \
| v850 \ | v850 \
| we32k \ | we32k \
@@ -279,6 +280,7 @@ case $basic_machine in
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alphapca5[67]-* | arc-* \ | alphapca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armv*-* \ | arm-* | armbe-* | armle-* | armv*-* \
| avr-* \
| bs2000-* \ | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c54x-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \
| clipper-* | cray2-* | cydra-* \ | clipper-* | cray2-* | cydra-* \
@@ -293,8 +295,8 @@ case $basic_machine in
| m88110-* | m88k-* | mcore-* \ | m88110-* | m88k-* | mcore-* \
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipsel-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
| mipsle-* | mipstx39-* | mipstx39el-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
| none-* | np1-* | ns16k-* | ns32k-* \ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
@@ -304,7 +306,7 @@ case $basic_machine in
| s390-* | s390x-* \ | 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-* | strongarm-* | sv1-* \ | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | vax-* \ | v850-* | vax-* \
| we32k-* \ | we32k-* \
+154 -8
View File
@@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# Common stub for a few missing GNU programs while installing. # Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
# Franc,ois Pinard <[email protected]>, 1996. # Originally by Fran,cois Pinard <[email protected]>, 1996.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -18,11 +18,37 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA. # 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information" echo 1>&2 "Try \`$0 --help' for more information"
exit 1 exit 1
fi fi
run=:
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case "$1" in case "$1" in
-h|--h|--he|--hel|--help) -h|--h|--he|--hel|--help)
@@ -35,6 +61,7 @@ error status if there is no known handling for PROGRAM.
Options: Options:
-h, --help display this help and exit -h, --help display this help and exit
-v, --version output version information and exit -v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values: Supported PROGRAM values:
aclocal touch file \`aclocal.m4' aclocal touch file \`aclocal.m4'
@@ -43,13 +70,15 @@ Supported PROGRAM values:
automake touch all \`Makefile.in' files automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch] bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]" yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;; ;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version) -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing - GNU libit 0.0" echo "missing 0.4 - GNU automake"
;; ;;
-*) -*)
@@ -59,30 +88,45 @@ Supported PROGRAM values:
;; ;;
aclocal) aclocal)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`configure.in'. You might want you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site." any GNU archive site."
touch aclocal.m4 touch aclocal.m4
;; ;;
autoconf) autoconf)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
you modified \`configure.in'. You might want to install the you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site." archive site."
touch configure touch configure
;; ;;
autoheader) autoheader)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`configure.in'. You might want you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site." from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h" test -z "$files" && files="config.h"
touch_files= touch_files=
for f in $files; do for f in $files; do
@@ -96,9 +140,14 @@ WARNING: \`$1' is missing on your system. You should only need it if
;; ;;
automake) automake)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages. You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site." Grab them from any GNU archive site."
find . -type f -name Makefile.am -print | find . -type f -name Makefile.am -print |
@@ -106,6 +155,34 @@ WARNING: \`$1' is missing on your system. You should only need it if
while read f; do touch "$f"; done while read f; do touch "$f"; done
;; ;;
autom4te)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them.
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc) bison|yacc)
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
@@ -159,7 +236,37 @@ WARNING: \`$1' is missing on your system. You should only need it if
fi fi
;; ;;
help2man)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
fi
if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo) makeinfo)
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
# We have makeinfo, but it failed.
exit 1
fi
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -175,6 +282,45 @@ WARNING: \`$1' is missing on your system. You should only need it if
touch $file touch $file
;; ;;
tar)
shift
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar ${1+"$@"} && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar ${1+"$@"} && exit 0
fi
firstarg="$1"
if shift; then
case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*) *)
echo 1>&2 "\ echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your WARNING: \`$1' is needed, and you do not seem to have it handy on your
+1 -1
View File
@@ -1 +1 @@
1.28c 1.29
Vendored
+1093 -1044
View File
File diff suppressed because it is too large Load Diff
+26 -7
View File
@@ -1,12 +1,31 @@
# Process this file with autoconf to produce a configure script. # Configure template for GNU Bison. -*-Autoconf-*-
AC_PREREQ(2.52) #
AC_INIT(bison, 1.28c, [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 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA
# We need a recent Autoconf to run a recent Autotest.
AC_PREREQ(2.52c)
AC_INIT([GNU Bison], [1.29a], [[email protected]])
AC_CONFIG_AUX_DIR(config) AC_CONFIG_AUX_DIR(config)
AM_INIT_AUTOMAKE(bison, 1.28c)
AM_INIT_AUTOMAKE([bison], [1.29a])
AM_CONFIG_HEADER(config.h:config.hin) AM_CONFIG_HEADER(config.h:config.hin)
# Initialize the test suite. # Initialize the test suite.
AT_CONFIG(../src) AC_CONFIG_TESTDIR(tests)
# Checks for programs. # Checks for programs.
AC_PROG_CC AC_PROG_CC
@@ -70,7 +89,7 @@ jm_FUNC_REALLOC
jm_PREREQ_QUOTEARG jm_PREREQ_QUOTEARG
jm_PREREQ_ERROR jm_PREREQ_ERROR
ALL_LINGUAS="de es et fr ja nl ru" ALL_LINGUAS="de es et fr ja nl tr ru"
AM_GNU_GETTEXT AM_GNU_GETTEXT
# 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
@@ -83,4 +102,4 @@ AC_OUTPUT([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 tests/atconfig]) tests/Makefile])
-4
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
+33 -5
View File
@@ -10,7 +10,11 @@ bison \- GNU Project parser generator (yacc replacement)
] [ ] [
.B \-d .B \-d
] [ ] [
.B \-\-defines .BI \-\-defines= defines-file
] [
.B \-g
] [
.BI \-\-graph= graph-file
] [ ] [
.B \-k .B \-k
] [ ] [
@@ -123,8 +127,6 @@ chosen as if the input file were named
.B \-d .B \-d
.br .br
.ns .ns
.TP
.B \-\-defines
Write an extra output file containing macro definitions for the token Write an extra output file containing macro definitions for the token
type names defined in the grammar and the semantic value type type names defined in the grammar and the semantic value type
.BR YYSTYPE , .BR YYSTYPE ,
@@ -145,6 +147,32 @@ in a separate source file, because
needs to be able to refer to token type codes and the variable needs to be able to refer to token type codes and the variable
.BR yylval . .BR yylval .
.TP .TP
.BI \-\-defines= defines-file
The behaviour of
.BI \-\-defines
is the same than
.BI \-d
option.
The only difference is that it has an optionnal argument which is
the name of the output filename.
.TP
.BI \-g
.br
.ns
Output a VCG definition of the LALR(1) grammar automaton computed by
Bison. If the grammar file is
.BR foo.y
, the VCG output file will be
.BR foo.vcg .
.TP
.BI \-\-graph= graph-file
The behaviour of
.BI \-\-graph
is the same than
.BI \-g
option. The only difference is that it has an optionnal argument which
is the name of the output graph filename.
.TP
.B \-k .B \-k
.br .br
.ns .ns
@@ -315,9 +343,9 @@ bison \-y $*
.sp .sp
.RE .RE
.SH FILES .SH FILES
/usr/local/lib/bison.simple simple parser /usr/local/share/bison/bison.simple simple parser
.br .br
/usr/local/lib/bison.hairy complicated parser /usr/local/share/bison/bison.hairy complicated parser
.SH "ENVIRONMENT VARIABLES" .SH "ENVIRONMENT VARIABLES"
.TP .TP
.SM BISON_SIMPLE .SM BISON_SIMPLE
+110 -106
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -30,112 +30,116 @@ instead of in the original English.
 
Indirect: Indirect:
bison.info-1: 1292 bison.info-1: 1313
bison.info-2: 50351 bison.info-2: 50691
bison.info-3: 99751 bison.info-3: 100581
bison.info-4: 147940 bison.info-4: 150131
bison.info-5: 190640 bison.info-5: 197908
 
Tag Table: Tag Table:
(Indirect) (Indirect)
Node: Top1292 Node: Top1313
Node: Introduction8694 Node: Introduction8969
Node: Conditions9969 Node: Conditions10244
Node: Copying11433 Node: Copying11708
Node: Concepts30636 Node: Concepts30911
Node: Language and Grammar31715 Node: Language and Grammar31990
Node: Grammar in Bison36731 Node: Grammar in Bison37006
Node: Semantic Values38655 Node: Semantic Values38930
Node: Semantic Actions40756 Node: Semantic Actions41031
Node: Locations Overview41945 Node: Locations Overview42220
Node: Bison Parser43392 Node: Bison Parser43667
Node: Stages45704 Node: Stages45979
Node: Grammar Layout46987 Node: Grammar Layout47262
Node: Examples48243 Node: Examples48519
Node: RPN Calc49378 Node: RPN Calc49717
Node: Rpcalc Decls50351 Node: Rpcalc Decls50691
Node: Rpcalc Rules51916 Node: Rpcalc Rules52278
Node: Rpcalc Input53716 Node: Rpcalc Input54078
Node: Rpcalc Line55177 Node: Rpcalc Line55539
Node: Rpcalc Expr56292 Node: Rpcalc Expr56654
Node: Rpcalc Lexer58237 Node: Rpcalc Lexer58599
Node: Rpcalc Main60809 Node: Rpcalc Main61171
Node: Rpcalc Error61207 Node: Rpcalc Error61569
Node: Rpcalc Gen62215 Node: Rpcalc Gen62577
Node: Rpcalc Compile63345 Node: Rpcalc Compile63726
Node: Infix Calc64220 Node: Infix Calc64601
Node: Simple Error Recovery66927 Node: Simple Error Recovery67308
Node: Multi-function Calc68813 Node: Location Tracking Calc69197
Node: Mfcalc Decl70379 Node: Ltcalc Decls69927
Node: Mfcalc Rules72402 Node: Ltcalc Rules70836
Node: Mfcalc Symtab73782 Node: Ltcalc Lexer72897
Node: Exercises80155 Node: Multi-function Calc75235
Node: Grammar File80661 Node: Mfcalc Decl76802
Node: Grammar Outline81509 Node: Mfcalc Rules78825
Node: Prologue82197 Node: Mfcalc Symtab80205
Node: Bison Declarations82737 Node: Exercises86578
Node: Grammar Rules83143 Node: Grammar File87084
Node: Epilogue83605 Node: Grammar Outline87932
Node: Symbols84455 Node: C Declarations88666
Node: Rules89536 Node: Bison Declarations89246
Node: Recursion91175 Node: Grammar Rules89658
Node: Semantics92894 Node: C Code90118
Node: Value Type93988 Node: Symbols91048
Node: Multiple Types94646 Node: Rules96129
Node: Actions95663 Node: Recursion97768
Node: Action Types98448 Node: Semantics99487
Node: Mid-Rule Actions99751 Node: Value Type100581
Node: Locations105321 Node: Multiple Types101253
Node: Location Type105969 Node: Actions102270
Node: Actions and Locations106527 Node: Action Types105055
Node: Location Default Action108683 Node: Mid-Rule Actions106358
Node: Declarations110146 Node: Locations111928
Node: Token Decl111465 Node: Location Type112576
Node: Precedence Decl113478 Node: Actions and Locations113134
Node: Union Decl115029 Node: Location Default Action115290
Node: Type Decl115873 Node: Declarations116753
Node: Expect Decl116779 Node: Token Decl118072
Node: Start Decl118325 Node: Precedence Decl120085
Node: Pure Decl118703 Node: Union Decl121636
Node: Decl Summary120380 Node: Type Decl122480
Node: Multiple Parsers125763 Node: Expect Decl123386
Node: Interface127257 Node: Start Decl124932
Node: Parser Function128120 Node: Pure Decl125310
Node: Lexical128955 Node: Decl Summary126987
Node: Calling Convention130361 Node: Multiple Parsers132370
Node: Token Values133132 Node: Interface133864
Node: Token Positions134281 Node: Parser Function134736
Node: Pure Calling135166 Node: Lexical135571
Node: Error Reporting138098 Node: Calling Convention136977
Node: Action Features140220 Node: Token Values139748
Node: Algorithm143515 Node: Token Positions140897
Node: Look-Ahead145808 Node: Pure Calling141782
Node: Shift/Reduce147940 Node: Error Reporting144714
Node: Precedence150852 Node: Action Features146836
Node: Why Precedence151503 Node: Algorithm150131
Node: Using Precedence153368 Node: Look-Ahead152424
Node: Precedence Examples154336 Node: Shift/Reduce154556
Node: How Precedence155037 Node: Precedence157468
Node: Contextual Precedence156186 Node: Why Precedence158119
Node: Parser States157977 Node: Using Precedence159984
Node: Reduce/Reduce159220 Node: Precedence Examples160952
Node: Mystery Conflicts162781 Node: How Precedence161653
Node: Stack Overflow166167 Node: Contextual Precedence162802
Node: Error Recovery167540 Node: Parser States164593
Node: Context Dependency172676 Node: Reduce/Reduce165836
Node: Semantic Tokens173524 Node: Mystery Conflicts169397
Node: Lexical Tie-ins176541 Node: Stack Overflow172783
Node: Tie-in Recovery178055 Node: Error Recovery174156
Node: Debugging180227 Node: Context Dependency179292
Node: Invocation183478 Node: Semantic Tokens180140
Node: Bison Options184730 Node: Lexical Tie-ins183157
Node: Environment Variables188164 Node: Tie-in Recovery184705
Node: Option Cross Key189012 Node: Debugging186877
Node: VMS Invocation189856 Node: Invocation190178
Node: Table of Symbols190640 Node: Bison Options191430
Node: Glossary198241 Node: Environment Variables195398
Node: Copying This Manual204545 Node: Option Cross Key196246
Node: GNU Free Documentation License204754 Node: VMS Invocation197124
Node: Index224619 Node: Table of Symbols197908
Node: Glossary205547
Node: Copying This Manual211851
Node: GNU Free Documentation License212060
Node: Index231925
 
End Tag Table End Tag Table
+31 -19
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -29,9 +29,13 @@ 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: Top, Next: Introduction, Prev: (dir), Up: (dir) File: bison.info, Node: Top, Next: Introduction, Up: (dir)
This manual documents version 1.28c of Bison. Bison
*****
This manual documents version 1.29a of Bison, updated 20 September
2001.
* Menu: * Menu:
@@ -58,7 +62,6 @@ Reference sections:
* Copying This Manual:: License for copying this manual. * Copying This Manual:: License for copying this manual.
* Index:: Cross-references to the text. * Index:: Cross-references to the text.
--- The Detailed Node Listing ---
The Concepts of Bison The Concepts of Bison
@@ -81,13 +84,14 @@ Examples
* Infix Calc:: Infix (algebraic) notation calculator. * Infix Calc:: Infix (algebraic) notation calculator.
Operator precedence is introduced. Operator precedence is introduced.
* Simple Error Recovery:: Continuing after syntax errors. * Simple Error Recovery:: Continuing after syntax errors.
* Location Tracking Calc:: Demonstrating the use of @N and @$.
* Multi-function Calc:: Calculator with memory and trig functions. * Multi-function Calc:: Calculator with memory and trig functions.
It uses multiple data-types for semantic values. It uses multiple data-types for semantic values.
* Exercises:: Ideas for improving the multi-function calculator. * Exercises:: Ideas for improving the multi-function calculator.
Reverse Polish Notation Calculator Reverse Polish Notation Calculator
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc. * Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation. * Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
* Lexer: Rpcalc Lexer. The lexical analyzer. * Lexer: Rpcalc Lexer. The lexical analyzer.
* Main: Rpcalc Main. The controlling function. * Main: Rpcalc Main. The controlling function.
@@ -101,6 +105,12 @@ Grammar Rules for `rpcalc'
* Rpcalc Line:: * Rpcalc Line::
* Rpcalc Expr:: * Rpcalc Expr::
Location Tracking Calculator: `ltcalc'
* Decls: Ltcalc Decls. Bison and C declarations for ltcalc.
* Rules: Ltcalc Rules. Grammar rules for ltcalc, with explanations.
* Lexer: Ltcalc Lexer. The lexical analyzer.
Multi-Function Calculator: `mfcalc' Multi-Function Calculator: `mfcalc'
* Decl: Mfcalc Decl. Bison declarations for multi-function calculator. * Decl: Mfcalc Decl. Bison declarations for multi-function calculator.
@@ -119,10 +129,10 @@ Bison Grammar Files
Outline of a Bison Grammar Outline of a Bison Grammar
* Prologue:: Syntax and usage of the prologue (declarations section). * C Declarations:: Syntax and usage of the C declarations section.
* Bison Declarations:: Syntax and usage of the Bison declarations section. * Bison Declarations:: Syntax and usage of the Bison declarations section.
* Grammar Rules:: Syntax and usage of the grammar rules section. * Grammar Rules:: Syntax and usage of the grammar rules section.
* Epilogue:: Syntax and usage of the epilogue (additional code section). * C Code:: Syntax and usage of the additional C code section.
Defining Language Semantics Defining Language Semantics
@@ -228,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.28c of Bison. This edition corresponds to version 1.29a of Bison.
 
File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top
@@ -981,7 +991,7 @@ The Overall Layout of a Bison Grammar
general form of a Bison grammar file is as follows: general form of a Bison grammar file is as follows:
%{ %{
PROLOGUE (DECLARATIONS) C DECLARATIONS
%} %}
BISON DECLARATIONS BISON DECLARATIONS
@@ -989,14 +999,15 @@ general form of a Bison grammar file is as follows:
%% %%
GRAMMAR RULES GRAMMAR RULES
%% %%
EPILOGUE (ADDITIONAL CODE) ADDITIONAL C CODE
The `%%', `%{' and `%}' are punctuation that appears in every Bison The `%%', `%{' and `%}' are punctuation that appears in every Bison
grammar file to separate the sections. grammar file to separate the sections.
The prologue may define types and variables used in the actions. You The C declarations may define types and variables used in the
can also use preprocessor commands to define macros used there, and use actions. You can also use preprocessor commands to define macros used
`#include' to include header files that do any of these things. there, and use `#include' to include header files that do any of these
things.
The Bison declarations declare the names of the terminal and The Bison declarations declare the names of the terminal and
nonterminal symbols, and may also describe operator precedence and the nonterminal symbols, and may also describe operator precedence and the
@@ -1005,10 +1016,10 @@ data types of semantic values of various symbols.
The grammar rules define how to construct each nonterminal symbol The grammar rules define how to construct each nonterminal symbol
from its parts. from its parts.
The epilogue can contain any code you want to use. Often the The additional C code can contain any C code you want to use. Often
definition of the lexical analyzer `yylex' goes here, plus subroutines the definition of the lexical analyzer `yylex' goes here, plus
called by the actions in the grammar rules. In a simple program, all subroutines called by the actions in the grammar rules. In a simple
the rest of the program can go here. program, all the rest of the program can go here.
 
File: bison.info, Node: Examples, Next: Grammar File, Prev: Concepts, Up: Top File: bison.info, Node: Examples, Next: Grammar File, Prev: Concepts, Up: Top
@@ -1033,6 +1044,7 @@ the Info file and into a source file to try them.
* Infix Calc:: Infix (algebraic) notation calculator. * Infix Calc:: Infix (algebraic) notation calculator.
Operator precedence is introduced. Operator precedence is introduced.
* Simple Error Recovery:: Continuing after syntax errors. * Simple Error Recovery:: Continuing after syntax errors.
* Location Tracking Calc:: Demonstrating the use of @N and @$.
* Multi-function Calc:: Calculator with memory and trig functions. * Multi-function Calc:: Calculator with memory and trig functions.
It uses multiple data-types for semantic values. It uses multiple data-types for semantic values.
* Exercises:: Ideas for improving the multi-function calculator. * Exercises:: Ideas for improving the multi-function calculator.
@@ -1054,7 +1066,7 @@ extension is a convention used for Bison input files.
* Menu: * Menu:
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc. * Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation. * Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
* Lexer: Rpcalc Lexer. The lexical analyzer. * Lexer: Rpcalc Lexer. The lexical analyzer.
* Main: Rpcalc Main. The controlling function. * Main: Rpcalc Main. The controlling function.
+219 -178
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -48,8 +48,8 @@ calculator. As in C, comments are placed between `/*...*/'.
%% /* Grammar rules and actions follow */ %% /* Grammar rules and actions follow */
The declarations section (*note The prologue: Prologue.) contains two The C declarations section (*note The C Declarations Section: C
preprocessor directives. Declarations.) contains two preprocessor directives.
The `#define' directive defines the macro `YYSTYPE', thus specifying The `#define' directive defines the macro `YYSTYPE', thus specifying
the C data type for semantic values of both tokens and groupings (*note the C data type for semantic values of both tokens and groupings (*note
@@ -359,8 +359,8 @@ Running Bison to Make the Parser
arrange all the source code in one or more source files. For such a arrange all the source code in one or more source files. For such a
simple example, the easiest thing is to put everything in one file. The simple example, the easiest thing is to put everything in one file. The
definitions of `yylex', `yyerror' and `main' go at the end, in the definitions of `yylex', `yyerror' and `main' go at the end, in the
epilogue of the file (*note The Overall Layout of a Bison Grammar: "additional C code" section of the file (*note The Overall Layout of a
Grammar Layout.). Bison Grammar: Grammar Layout.).
For a large project, you would probably have several source files, For a large project, you would probably have several source files,
and use `make' to arrange to recompile them. and use `make' to arrange to recompile them.
@@ -494,7 +494,7 @@ Precedence.
9 9
 
File: bison.info, Node: Simple Error Recovery, Next: Multi-function Calc, Prev: Infix Calc, Up: Examples File: bison.info, Node: Simple Error Recovery, Next: Location Tracking Calc, Prev: Infix Calc, Up: Examples
Simple Error Recovery Simple Error Recovery
===================== =====================
@@ -533,7 +533,192 @@ the current line of input. We won't discuss this issue further because
it is not specific to Bison programs. it is not specific to Bison programs.
 
File: bison.info, Node: Multi-function Calc, Next: Exercises, Prev: Simple Error Recovery, Up: Examples File: bison.info, Node: Location Tracking Calc, Next: Multi-function Calc, Prev: Simple Error Recovery, Up: Examples
Location Tracking Calculator: `ltcalc'
======================================
This example extends the infix notation calculator with location
tracking. This feature will be used to improve error reporting, and
provide better error messages.
For the sake of clarity, we will switch for this example to an
integer calculator, since most of the work needed to use locations will
be done in the lexical analyser.
* Menu:
* Decls: Ltcalc Decls. Bison and C declarations for ltcalc.
* Rules: Ltcalc Rules. Grammar rules for ltcalc, with explanations.
* Lexer: Ltcalc Lexer. The lexical analyzer.

File: bison.info, Node: Ltcalc Decls, Next: Ltcalc Rules, Up: Location Tracking Calc
Declarations for `ltcalc'
-------------------------
The C and Bison declarations for the location tracking calculator
are the same as the declarations for the infix notation calculator.
/* Location tracking calculator. */
%{
#define YYSTYPE int
#include <math.h>
%}
/* Bison declarations. */
%token NUM
%left '-' '+'
%left '*' '/'
%left NEG
%right '^'
%% /* Grammar follows */
In the code above, there are no declarations specific to locations.
Defining a data type for storing locations is not needed: we will use
the type provided by default (*note Data Types of Locations: Location
Type.), which is a four member structure with the following integer
fields: `first_line', `first_column', `last_line' and `last_column'.

File: bison.info, Node: Ltcalc Rules, Next: Ltcalc Lexer, Prev: Ltcalc Decls, Up: Location Tracking Calc
Grammar Rules for `ltcalc'
--------------------------
Whether you choose to handle locations or not has no effect on the
syntax of your language. Therefore, grammar rules for this example
will be very close to those of the previous example: we will only
modify them to benefit from the new informations we will have.
Here, we will use locations to report divisions by zero, and locate
the wrong expressions or subexpressions.
input : /* empty */
| input line
;
line : '\n'
| exp '\n' { printf ("%d\n", $1); }
;
exp : NUM { $$ = $1; }
| exp '+' exp { $$ = $1 + $3; }
| exp '-' exp { $$ = $1 - $3; }
| exp '*' exp { $$ = $1 * $3; }
| exp '/' exp
{
if ($3)
$$ = $1 / $3;
else
{
$$ = 1;
printf("Division by zero, l%d,c%d-l%d,c%d",
@3.first_line, @3.first_column,
@3.last_line, @3.last_column);
}
}
| '-' exp %preg NEG { $$ = -$2; }
| exp '^' exp { $$ = pow ($1, $3); }
| '(' exp ')' { $$ = $2; }
This code shows how to reach locations inside of semantic actions, by
using the pseudo-variables `@N' for rule components, and the
pseudo-variable `@$' for groupings.
In this example, we never assign a value to `@$', because the output
parser can do this automatically. By default, before executing the C
code of each action, `@$' is set to range from the beginning of `@1' to
the end of `@N', for a rule with N components.
Of course, this behavior can be redefined (*note Default Action for
Locations: Location Default Action.), and for very specific rules, `@$'
can be computed by hand.

File: bison.info, Node: Ltcalc Lexer, Prev: Ltcalc Rules, Up: Location Tracking Calc
The `ltcalc' Lexical Analyzer.
------------------------------
Until now, we relied on Bison's defaults to enable location
tracking. The next step is to rewrite the lexical analyser, and make it
able to feed the parser with locations of tokens, as he already does
for semantic values.
To do so, we must take into account every single character of the
input text, to avoid the computed locations of being fuzzy or wrong:
int
yylex (void)
{
int c;
/* skip white space */
while ((c = getchar ()) == ' ' || c == '\t')
++yylloc.last_column;
/* step */
yylloc.first_line = yylloc.last_line;
yylloc.first_column = yylloc.last_column;
/* process numbers */
if (isdigit (c))
{
yylval = c - '0';
++yylloc.last_column;
while (isdigit (c = getchar ()))
{
++yylloc.last_column;
yylval = yylval * 10 + c - '0';
}
ungetc (c, stdin);
return NUM;
}
/* return end-of-file */
if (c == EOF)
return 0;
/* return single chars and update location */
if (c == '\n')
{
++yylloc.last_line;
yylloc.last_column = 0;
}
else
++yylloc.last_column;
return c;
}
Basically, the lexical analyzer does the same processing as before:
it skips blanks and tabs, and reads numbers or single-character tokens.
In addition to this, it updates the `yylloc' global variable (of type
`YYLTYPE'), where the location of tokens is stored.
Now, each time this function returns a token, the parser has it's
number as well as it's semantic value, and it's position in the text.
The last needed change is to initialize `yylloc', for example in the
controlling function:
int
main (void)
{
yylloc.first_line = yylloc.last_line = 1;
yylloc.first_column = yylloc.last_column = 0;
return yyparse ();
}
Remember that computing locations is not a matter of syntax. Every
character must be associated to a location update, whether it is in
valid input, in comments, in literal strings, and so on...

File: bison.info, Node: Multi-function Calc, Next: Exercises, Prev: Location Tracking Calc, Up: Examples
Multi-Function Calculator: `mfcalc' Multi-Function Calculator: `mfcalc'
=================================== ===================================
@@ -926,7 +1111,7 @@ Outline of a Bison Grammar
appropriate delimiters: appropriate delimiters:
%{ %{
PROLOGUE C DECLARATIONS
%} %}
BISON DECLARATIONS BISON DECLARATIONS
@@ -935,33 +1120,33 @@ appropriate delimiters:
GRAMMAR RULES GRAMMAR RULES
%% %%
EPILOGUE ADDITIONAL C CODE
Comments enclosed in `/* ... */' may appear in any of the sections. Comments enclosed in `/* ... */' may appear in any of the sections.
* Menu: * Menu:
* Prologue:: Syntax and usage of the prologue. * C Declarations:: Syntax and usage of the C declarations section.
* Bison Declarations:: Syntax and usage of the Bison declarations section. * Bison Declarations:: Syntax and usage of the Bison declarations section.
* Grammar Rules:: Syntax and usage of the grammar rules section. * Grammar Rules:: Syntax and usage of the grammar rules section.
* Epilogue:: Syntax and usage of the epilogue. * C Code:: Syntax and usage of the additional C code section.
 
File: bison.info, Node: Prologue, Next: Bison Declarations, Up: Grammar Outline File: bison.info, Node: C Declarations, Next: Bison Declarations, Up: Grammar Outline
The prologue The C Declarations Section
------------ --------------------------
The PROLOGUE section contains macro definitions and declarations of The C DECLARATIONS section contains macro definitions and
functions and variables that are used in the actions in the grammar declarations of functions and variables that are used in the actions in
rules. These are copied to the beginning of the parser file so that the grammar rules. These are copied to the beginning of the parser
they precede the definition of `yyparse'. You can use `#include' to file so that they precede the definition of `yyparse'. You can use
get the declarations from a header file. If you don't need any C `#include' to get the declarations from a header file. If you don't
declarations, you may omit the `%{' and `%}' delimiters that bracket need any C declarations, you may omit the `%{' and `%}' delimiters that
this section. bracket this section.
 
File: bison.info, Node: Bison Declarations, Next: Grammar Rules, Prev: Prologue, Up: Grammar Outline File: bison.info, Node: Bison Declarations, Next: Grammar Rules, Prev: C Declarations, Up: Grammar Outline
The Bison Declarations Section The Bison Declarations Section
------------------------------ ------------------------------
@@ -972,7 +1157,7 @@ some simple grammars you may not need any declarations. *Note Bison
Declarations: Declarations. Declarations: Declarations.
 
File: bison.info, Node: Grammar Rules, Next: Epilogue, Prev: Bison Declarations, Up: Grammar Outline File: bison.info, Node: Grammar Rules, Next: C Code, Prev: Bison Declarations, Up: Grammar Outline
The Grammar Rules Section The Grammar Rules Section
------------------------- -------------------------
@@ -985,17 +1170,17 @@ rules, and nothing else. *Note Syntax of Grammar Rules: Rules.
the first thing in the file. the first thing in the file.
 
File: bison.info, Node: Epilogue, Prev: Grammar Rules, Up: Grammar Outline File: bison.info, Node: C Code, Prev: Grammar Rules, Up: Grammar Outline
The epilogue The Additional C Code Section
------------ -----------------------------
The EPILOGUE is copied verbatim to the end of the parser file, just The ADDITIONAL C CODE section is copied verbatim to the end of the
as the PROLOGUE is copied to the beginning. This is the most convenient parser file, just as the C DECLARATIONS section is copied to the
place to put anything that you want to have in the parser file but beginning. This is the most convenient place to put anything that you
which need not come before the definition of `yyparse'. For example, want to have in the parser file but which need not come before the
the definitions of `yylex' and `yyerror' often go here. *Note Parser definition of `yyparse'. For example, the definitions of `yylex' and
C-Language Interface: Interface. `yyerror' often go here. *Note Parser C-Language Interface: Interface.
If the last section is empty, you may omit the `%%' that separates it If the last section is empty, you may omit the `%%' that separates it
from the grammar rules. from the grammar rules.
@@ -1003,7 +1188,7 @@ from the grammar rules.
The Bison parser itself contains many static variables whose names The Bison parser itself contains many static variables whose names
start with `yy' and many macros whose names start with `YY'. It is a start with `yy' and many macros whose names start with `YY'. It is a
good idea to avoid using any such names (except those documented in this good idea to avoid using any such names (except those documented in this
manual) in the epilogue of the grammar file. manual) in the additional C code section of the grammar file.
 
File: bison.info, Node: Symbols, Next: Rules, Prev: Grammar Outline, Up: Grammar File File: bison.info, Node: Symbols, Next: Rules, Prev: Grammar Outline, Up: Grammar File
@@ -1240,147 +1425,3 @@ associated with X and Y.
This says when, why and how to use the exceptional This says when, why and how to use the exceptional
action in the middle of a rule. action in the middle of a rule.

File: bison.info, Node: Value Type, Next: Multiple Types, Up: Semantics
Data Types of Semantic Values
-----------------------------
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 RPN and infix calculator examples (*note Reverse Polish Notation
Calculator: RPN Calc.).
Bison's default is to use type `int' for all semantic values. To
specify some other type, define `YYSTYPE' as a macro, like this:
#define YYSTYPE double
This macro definition must go in the prologue of the grammar file
(*note Outline of a Bison Grammar: Grammar Outline.).

File: bison.info, Node: Multiple Types, Next: Actions, Prev: Value Type, Up: Semantics
More Than One Value Type
------------------------
In most programs, you will need different data types for different
kinds of tokens and groupings. For example, a numeric constant may
need type `int' or `long', while a string constant needs type `char *',
and an identifier might need a pointer to an entry in the symbol table.
To use more than one data type for semantic values in one parser,
Bison requires you to do two things:
* Specify the entire collection of possible data types, with the
`%union' Bison declaration (*note The Collection of Value Types:
Union Decl.).
* Choose one of those types for each symbol (terminal or
nonterminal) for which semantic values are used. This is done for
tokens with the `%token' Bison declaration (*note Token Type
Names: Token Decl.) and for groupings with the `%type' Bison
declaration (*note Nonterminal Symbols: Type Decl.).

File: bison.info, Node: Actions, Next: Action Types, Prev: Multiple Types, Up: Semantics
Actions
-------
An action accompanies a syntactic rule and contains C code to be
executed each time an instance of that rule is recognized. The task of
most actions is to compute a semantic value for the grouping built by
the rule from the semantic values associated with tokens or smaller
groupings.
An action consists of C statements surrounded by braces, much like a
compound statement in C. It can be placed at any position in the rule;
it is executed at that position. Most rules have just one action at
the end of the rule, following all the components. Actions in the
middle of a rule are tricky and used only for special purposes (*note
Actions in Mid-Rule: Mid-Rule Actions.).
The C code in an action can refer to the semantic values of the
components matched by the rule with the construct `$N', which stands for
the value of the Nth component. The semantic value for the grouping
being constructed is `$$'. (Bison translates both of these constructs
into array element references when it copies the actions into the parser
file.)
Here is a typical example:
exp: ...
| exp '+' exp
{ $$ = $1 + $3; }
This rule constructs an `exp' from two smaller `exp' groupings
connected by a plus-sign token. In the action, `$1' and `$3' refer to
the semantic values of the two component `exp' groupings, which are the
first and third symbols on the right hand side of the rule. The sum is
stored into `$$' so that it becomes the semantic value of the
addition-expression just recognized by the rule. If there were a
useful semantic value associated with the `+' token, it could be
referred to as `$2'.
If you don't specify an action for a rule, Bison supplies a default:
`$$ = $1'. Thus, the value of the first symbol in the rule becomes the
value of the whole rule. Of course, the default rule is valid only if
the two data types match. There is no meaningful default action for an
empty rule; every empty rule must have an explicit action unless the
rule's value does not matter.
`$N' with N zero or negative is allowed for reference to tokens and
groupings on the stack _before_ those that match the current rule.
This is a very risky practice, and to use it reliably you must be
certain of the context in which the rule is applied. Here is a case in
which you can use this reliably:
foo: expr bar '+' expr { ... }
| expr bar '-' expr { ... }
;
bar: /* empty */
{ previous_expr = $0; }
;
As long as `bar' is used only in the fashion shown here, `$0' always
refers to the `expr' which precedes `bar' in the definition of `foo'.

File: bison.info, Node: Action Types, Next: Mid-Rule Actions, Prev: Actions, Up: Semantics
Data Types of Values in Actions
-------------------------------
If you have chosen a single data type for semantic values, the `$$'
and `$N' constructs always have that data type.
If you have used `%union' to specify a variety of data types, then
you must declare a choice among these types for each terminal or
nonterminal symbol that can have a semantic value. Then each time you
use `$$' or `$N', its data type is determined by which symbol it refers
to in the rule. In this example,
exp: ...
| exp '+' exp
{ $$ = $1 + $3; }
`$1' and `$3' refer to instances of `exp', so they all have the data
type declared for the nonterminal symbol `exp'. If `$2' were used, it
would have the data type declared for the terminal symbol `'+'',
whatever that might be.
Alternatively, you can specify the data type when you refer to the
value, by inserting `<TYPE>' after the `$' at the beginning of the
reference. For example, if you have defined types as shown here:
%union {
int itype;
double dtype;
}
then you can write `$<itype>1' to refer to the first subunit of the
rule as an integer, or `$<dtype>1' to refer to it as a double.
+148 -111
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -28,6 +28,150 @@ 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: Value Type, Next: Multiple Types, Up: Semantics
Data Types of Semantic Values
-----------------------------
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 RPN and infix calculator examples (*note Reverse Polish Notation
Calculator: RPN Calc.).
Bison's default is to use type `int' for all semantic values. To
specify some other type, define `YYSTYPE' as a macro, like this:
#define YYSTYPE double
This macro definition must go in the C declarations section of the
grammar file (*note Outline of a Bison Grammar: Grammar Outline.).

File: bison.info, Node: Multiple Types, Next: Actions, Prev: Value Type, Up: Semantics
More Than One Value Type
------------------------
In most programs, you will need different data types for different
kinds of tokens and groupings. For example, a numeric constant may
need type `int' or `long', while a string constant needs type `char *',
and an identifier might need a pointer to an entry in the symbol table.
To use more than one data type for semantic values in one parser,
Bison requires you to do two things:
* Specify the entire collection of possible data types, with the
`%union' Bison declaration (*note The Collection of Value Types:
Union Decl.).
* Choose one of those types for each symbol (terminal or
nonterminal) for which semantic values are used. This is done for
tokens with the `%token' Bison declaration (*note Token Type
Names: Token Decl.) and for groupings with the `%type' Bison
declaration (*note Nonterminal Symbols: Type Decl.).

File: bison.info, Node: Actions, Next: Action Types, Prev: Multiple Types, Up: Semantics
Actions
-------
An action accompanies a syntactic rule and contains C code to be
executed each time an instance of that rule is recognized. The task of
most actions is to compute a semantic value for the grouping built by
the rule from the semantic values associated with tokens or smaller
groupings.
An action consists of C statements surrounded by braces, much like a
compound statement in C. It can be placed at any position in the rule;
it is executed at that position. Most rules have just one action at
the end of the rule, following all the components. Actions in the
middle of a rule are tricky and used only for special purposes (*note
Actions in Mid-Rule: Mid-Rule Actions.).
The C code in an action can refer to the semantic values of the
components matched by the rule with the construct `$N', which stands for
the value of the Nth component. The semantic value for the grouping
being constructed is `$$'. (Bison translates both of these constructs
into array element references when it copies the actions into the parser
file.)
Here is a typical example:
exp: ...
| exp '+' exp
{ $$ = $1 + $3; }
This rule constructs an `exp' from two smaller `exp' groupings
connected by a plus-sign token. In the action, `$1' and `$3' refer to
the semantic values of the two component `exp' groupings, which are the
first and third symbols on the right hand side of the rule. The sum is
stored into `$$' so that it becomes the semantic value of the
addition-expression just recognized by the rule. If there were a
useful semantic value associated with the `+' token, it could be
referred to as `$2'.
If you don't specify an action for a rule, Bison supplies a default:
`$$ = $1'. Thus, the value of the first symbol in the rule becomes the
value of the whole rule. Of course, the default rule is valid only if
the two data types match. There is no meaningful default action for an
empty rule; every empty rule must have an explicit action unless the
rule's value does not matter.
`$N' with N zero or negative is allowed for reference to tokens and
groupings on the stack _before_ those that match the current rule.
This is a very risky practice, and to use it reliably you must be
certain of the context in which the rule is applied. Here is a case in
which you can use this reliably:
foo: expr bar '+' expr { ... }
| expr bar '-' expr { ... }
;
bar: /* empty */
{ previous_expr = $0; }
;
As long as `bar' is used only in the fashion shown here, `$0' always
refers to the `expr' which precedes `bar' in the definition of `foo'.

File: bison.info, Node: Action Types, Next: Mid-Rule Actions, Prev: Actions, Up: Semantics
Data Types of Values in Actions
-------------------------------
If you have chosen a single data type for semantic values, the `$$'
and `$N' constructs always have that data type.
If you have used `%union' to specify a variety of data types, then
you must declare a choice among these types for each terminal or
nonterminal symbol that can have a semantic value. Then each time you
use `$$' or `$N', its data type is determined by which symbol it refers
to in the rule. In this example,
exp: ...
| exp '+' exp
{ $$ = $1 + $3; }
`$1' and `$3' refer to instances of `exp', so they all have the data
type declared for the nonterminal symbol `exp'. If `$2' were used, it
would have the data type declared for the terminal symbol `'+'',
whatever that might be.
Alternatively, you can specify the data type when you refer to the
value, by inserting `<TYPE>' after the `$' at the beginning of the
reference. For example, if you have defined types as shown here:
%union {
int itype;
double dtype;
}
then you can write `$<itype>1' to refer to the first subunit of the
rule as an integer, or `$<dtype>1' to refer to it as a double.
 
File: bison.info, Node: Mid-Rule Actions, Prev: Action Types, Up: Semantics File: bison.info, Node: Mid-Rule Actions, Prev: Action Types, Up: Semantics
@@ -746,8 +890,8 @@ that it needs to use.
Keep in mind that the parser uses many C identifiers starting with Keep in mind that the parser uses many C identifiers starting with
`yy' and `YY' for internal purposes. If you use such an identifier `yy' and `YY' for internal purposes. If you use such an identifier
(aside from those in this manual) in an action or in epilogue in the (aside from those in this manual) in an action or in additional C code
grammar file, you are likely to run into trouble. in the grammar file, you are likely to run into trouble.
* Menu: * Menu:
@@ -1171,110 +1315,3 @@ useful in actions.
textual position of the Nth component of the current rule. *Note textual position of the Nth component of the current rule. *Note
Tracking Locations: Locations. Tracking Locations: Locations.

File: bison.info, Node: Algorithm, Next: Error Recovery, Prev: Interface, Up: Top
The Bison Parser Algorithm
**************************
As Bison reads tokens, it pushes them onto a stack along with their
semantic values. The stack is called the "parser stack". Pushing a
token is traditionally called "shifting".
For example, suppose the infix calculator has read `1 + 5 *', with a
`3' to come. The stack will have four elements, one for each token
that was shifted.
But the stack does not always have an element for each token read.
When the last N tokens and groupings shifted match the components of a
grammar rule, they can be combined according to that rule. This is
called "reduction". Those tokens and groupings are replaced on the
stack by a single grouping whose symbol is the result (left hand side)
of that rule. Running the rule's action is part of the process of
reduction, because this is what computes the semantic value of the
resulting grouping.
For example, if the infix calculator's parser stack contains this:
1 + 5 * 3
and the next input token is a newline character, then the last three
elements can be reduced to 15 via the rule:
expr: expr '*' expr;
Then the stack contains just these three elements:
1 + 15
At this point, another reduction can be made, resulting in the single
value 16. Then the newline token can be shifted.
The parser tries, by shifts and reductions, to reduce the entire
input down to a single grouping whose symbol is the grammar's
start-symbol (*note Languages and Context-Free Grammars: Language and
Grammar.).
This kind of parser is known in the literature as a bottom-up parser.
* Menu:
* Look-Ahead:: Parser looks one token ahead when deciding what to do.
* Shift/Reduce:: Conflicts: when either shifting or reduction is valid.
* Precedence:: Operator precedence works by resolving conflicts.
* Contextual Precedence:: When an operator's precedence depends on context.
* Parser States:: The parser is a finite-state-machine with stack.
* Reduce/Reduce:: When two rules are applicable in the same situation.
* Mystery Conflicts:: Reduce/reduce conflicts that look unjustified.
* Stack Overflow:: What happens when stack gets full. How to avoid it.

File: bison.info, Node: Look-Ahead, Next: Shift/Reduce, Up: Algorithm
Look-Ahead Tokens
=================
The Bison parser does _not_ always reduce immediately as soon as the
last N tokens and groupings match a rule. This is because such a
simple strategy is inadequate to handle most languages. Instead, when a
reduction is possible, the parser sometimes "looks ahead" at the next
token in order to decide what to do.
When a token is read, it is not immediately shifted; first it
becomes the "look-ahead token", which is not on the stack. Now the
parser can perform one or more reductions of tokens and groupings on
the stack, while the look-ahead token remains off to the side. When no
more reductions should take place, the look-ahead token is shifted onto
the stack. This does not mean that all possible reductions have been
done; depending on the token type of the look-ahead token, some rules
may choose to delay their application.
Here is a simple case where look-ahead is needed. These three rules
define expressions which contain binary addition operators and postfix
unary factorial operators (`!'), and allow parentheses for grouping.
expr: term '+' expr
| term
;
term: '(' expr ')'
| term '!'
| NUMBER
;
Suppose that the tokens `1 + 2' have been read and shifted; what
should be done? If the following token is `)', then the first three
tokens must be reduced to form an `expr'. This is the only valid
course, because shifting the `)' would produce a sequence of symbols
`term ')'', and no rule allows this.
If the following token is `!', then it must be shifted immediately so
that `2 !' can be reduced to make a `term'. If instead the parser were
to reduce before shifting, `1 + 2' would become an `expr'. It would
then be impossible to shift the `!' because doing so would produce on
the stack the sequence of symbols `expr '!''. No rule allows that
sequence.
The current look-ahead token is stored in the variable `yychar'.
*Note Special Features for Use in Actions: Action Features.
+137 -12
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -28,6 +28,113 @@ 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: Algorithm, Next: Error Recovery, Prev: Interface, Up: Top
The Bison Parser Algorithm
**************************
As Bison reads tokens, it pushes them onto a stack along with their
semantic values. The stack is called the "parser stack". Pushing a
token is traditionally called "shifting".
For example, suppose the infix calculator has read `1 + 5 *', with a
`3' to come. The stack will have four elements, one for each token
that was shifted.
But the stack does not always have an element for each token read.
When the last N tokens and groupings shifted match the components of a
grammar rule, they can be combined according to that rule. This is
called "reduction". Those tokens and groupings are replaced on the
stack by a single grouping whose symbol is the result (left hand side)
of that rule. Running the rule's action is part of the process of
reduction, because this is what computes the semantic value of the
resulting grouping.
For example, if the infix calculator's parser stack contains this:
1 + 5 * 3
and the next input token is a newline character, then the last three
elements can be reduced to 15 via the rule:
expr: expr '*' expr;
Then the stack contains just these three elements:
1 + 15
At this point, another reduction can be made, resulting in the single
value 16. Then the newline token can be shifted.
The parser tries, by shifts and reductions, to reduce the entire
input down to a single grouping whose symbol is the grammar's
start-symbol (*note Languages and Context-Free Grammars: Language and
Grammar.).
This kind of parser is known in the literature as a bottom-up parser.
* Menu:
* Look-Ahead:: Parser looks one token ahead when deciding what to do.
* Shift/Reduce:: Conflicts: when either shifting or reduction is valid.
* Precedence:: Operator precedence works by resolving conflicts.
* Contextual Precedence:: When an operator's precedence depends on context.
* Parser States:: The parser is a finite-state-machine with stack.
* Reduce/Reduce:: When two rules are applicable in the same situation.
* Mystery Conflicts:: Reduce/reduce conflicts that look unjustified.
* Stack Overflow:: What happens when stack gets full. How to avoid it.

File: bison.info, Node: Look-Ahead, Next: Shift/Reduce, Up: Algorithm
Look-Ahead Tokens
=================
The Bison parser does _not_ always reduce immediately as soon as the
last N tokens and groupings match a rule. This is because such a
simple strategy is inadequate to handle most languages. Instead, when a
reduction is possible, the parser sometimes "looks ahead" at the next
token in order to decide what to do.
When a token is read, it is not immediately shifted; first it
becomes the "look-ahead token", which is not on the stack. Now the
parser can perform one or more reductions of tokens and groupings on
the stack, while the look-ahead token remains off to the side. When no
more reductions should take place, the look-ahead token is shifted onto
the stack. This does not mean that all possible reductions have been
done; depending on the token type of the look-ahead token, some rules
may choose to delay their application.
Here is a simple case where look-ahead is needed. These three rules
define expressions which contain binary addition operators and postfix
unary factorial operators (`!'), and allow parentheses for grouping.
expr: term '+' expr
| term
;
term: '(' expr ')'
| term '!'
| NUMBER
;
Suppose that the tokens `1 + 2' have been read and shifted; what
should be done? If the following token is `)', then the first three
tokens must be reduced to form an `expr'. This is the only valid
course, because shifting the `)' would produce a sequence of symbols
`term ')'', and no rule allows this.
If the following token is `!', then it must be shifted immediately so
that `2 !' can be reduced to make a `term'. If instead the parser were
to reduce before shifting, `1 + 2' would become an `expr'. It would
then be impossible to shift the `!' because doing so would produce on
the stack the sequence of symbols `expr '!''. No rule allows that
sequence.
The current look-ahead token is stored in the variable `yychar'.
*Note Special Features for Use in Actions: Action Features.
 
File: bison.info, Node: Shift/Reduce, Next: Precedence, Prev: Look-Ahead, Up: Algorithm File: bison.info, Node: Shift/Reduce, Next: Precedence, Prev: Look-Ahead, Up: Algorithm
@@ -787,9 +894,10 @@ Here we assume that `yylex' looks at the value of `hexflag'; when it is
nonzero, all integers are parsed in hexadecimal, and tokens starting nonzero, all integers are parsed in hexadecimal, and tokens starting
with letters are parsed as integers if possible. with letters are parsed as integers if possible.
The declaration of `hexflag' shown in the prologue of the parser file The declaration of `hexflag' shown in the C declarations section of
is needed to make it accessible to the actions (*note The Prologue: the parser file is needed to make it accessible to the actions (*note
Prologue.). You must also write the code in `yylex' to obey the flag. The C Declarations Section: C Declarations.). You must also write the
code in `yylex' to obey the flag.
 
File: bison.info, Node: Tie-in Recovery, Prev: Lexical Tie-ins, Up: Context Dependency File: bison.info, Node: Tie-in Recovery, Prev: Lexical Tie-ins, Up: Context Dependency
@@ -858,13 +966,15 @@ out why.
To enable compilation of trace facilities, you must define the macro To enable compilation of trace facilities, you must define the macro
`YYDEBUG' when you compile the parser. You could use `-DYYDEBUG=1' as `YYDEBUG' when you compile the parser. You could use `-DYYDEBUG=1' as
a compiler option or you could put `#define YYDEBUG 1' in the prologue a compiler option or you could put `#define YYDEBUG 1' in the C
of the grammar file (*note The Prologue: Prologue.). Alternatively, use declarations section of the grammar file (*note The C Declarations
the `-t' option when you run Bison (*note Invoking Bison: Invocation.). Section: C Declarations.). Alternatively, use the `-t' option when you
We always define `YYDEBUG' so that debugging is always possible. run Bison (*note Invoking Bison: Invocation.). We always define
`YYDEBUG' so that debugging is always possible.
The trace facility uses `stderr', so you must add The trace facility uses `stderr', so you must add
`#include <stdio.h>' to the prologue unless it is already there. `#include <stdio.h>' to the C declarations section unless it is already
there.
Once you have compiled the program with trace facilities, the way to Once you have compiled the program with trace facilities, the way to
request a trace is to store a nonzero value in the variable `yydebug'. request a trace is to store a nonzero value in the variable `yydebug'.
@@ -1042,12 +1152,16 @@ Tuning the parser:
Adjust the output: Adjust the output:
`-d' `-d'
`--defines'
Pretend that `%verbose' was specified, i.e., write an extra output Pretend that `%verbose' 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'
The behaviour of -DEFINES is the same than `-d'. The only
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 Specify a prefix to use for all Bison output file names. The
@@ -1066,6 +1180,16 @@ Adjust the output:
The other output files' names are constructed from OUTFILE as The other output files' names are constructed from OUTFILE as
described under the `-v' and `-d' options. described under the `-v' and `-d' options.
`-g'
Output a VCG definition of the LALR(1) grammar automaton computed
by Bison. If the grammar file is `foo.y', the VCG output file will
be `foo.vcg'.
`--graph=GRAPH-FILE'
The behaviour of -GRAPH is the same than `-g'. The only difference
is that it has an optionnal argument which is the name of the
output graph filename.
 
File: bison.info, Node: Environment Variables, Next: Option Cross Key, Prev: Bison Options, Up: Invocation File: bison.info, Node: Environment Variables, Next: Option Cross Key, Prev: Bison Options, Up: Invocation
@@ -1098,9 +1222,10 @@ Option Cross Key
find the corresponding short option. find the corresponding short option.
--debug -t --debug -t
--defines -d --defines=DEFINES-FILE -d
--file-prefix=PREFIX -b FILE-PREFIX --file-prefix=PREFIX -b FILE-PREFIX
--fixed-output-files --yacc -y --fixed-output-files --yacc -y
--graph=GRAPH-FILE -d
--help -h --help -h
--name-prefix=PREFIX -p NAME-PREFIX --name-prefix=PREFIX -p NAME-PREFIX
--no-lines -l --no-lines -l
+21 -19
View File
@@ -1,5 +1,5 @@
This is bison.info, produced by makeinfo version 4.0b from Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
bison.texinfo. à partir bison.texinfo.
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* bison: (bison). GNU Project parser generator (yacc replacement). * bison: (bison). GNU Project parser generator (yacc replacement).
@@ -220,13 +220,14 @@ Bison Symbols
`%%' `%%'
Delimiter used to separate the grammar rule section from the Bison Delimiter used to separate the grammar rule section from the Bison
declarations section or the epilogue. *Note The Overall Layout of declarations section or the additional C code section. *Note The
a Bison Grammar: Grammar Layout. Overall Layout of a Bison Grammar: Grammar Layout.
`%{ %}' `%{ %}'
All code listed between `%{' and `%}' is copied directly to the All code listed between `%{' and `%}' is copied directly to the
output file uninterpreted. Such code forms the prologue of the output file uninterpreted. Such code forms the "C declarations"
input file. *Note Outline of a Bison Grammar: Grammar Outline. section of the input file. *Note Outline of a Bison Grammar:
Grammar Outline.
`/*...*/' `/*...*/'
Comment delimiters, as in C. Comment delimiters, as in C.
@@ -823,17 +824,17 @@ Index
* %token: Token Decl. * %token: Token Decl.
* %type: Type Decl. * %type: Type Decl.
* %union: Union Decl. * %union: Union Decl.
* @$ <1>: Actions and Locations. * @$ <1>: Action Features.
* @$: Action Features. * @$: Actions and Locations.
* @N <1>: Actions and Locations. * @N <1>: Action Features.
* @N: Action Features. * @N: Actions and Locations.
* action: Actions. * action: Actions.
* action data types: Action Types. * action data types: Action Types.
* action features summary: Action Features. * action features summary: Action Features.
* actions in mid-rule: Mid-Rule Actions. * actions in mid-rule: Mid-Rule Actions.
* actions, location: Actions and Locations. * actions, location: Actions and Locations.
* actions, semantic: Semantic Actions. * actions, semantic: Semantic Actions.
* additional C code section: Epilogue. * additional C code section: C Code.
* algorithm of parser: Algorithm. * algorithm of parser: Algorithm.
* associativity: Why Precedence. * associativity: Why Precedence.
* Backus-Naur form: Language and Grammar. * Backus-Naur form: Language and Grammar.
@@ -849,10 +850,12 @@ Index
* BISON_HAIRY: Environment Variables. * BISON_HAIRY: Environment Variables.
* BISON_SIMPLE: Environment Variables. * BISON_SIMPLE: Environment Variables.
* BNF: Language and Grammar. * BNF: Language and Grammar.
* C code, section for additional: Epilogue. * C code, section for additional: C Code.
* C declarations section: C Declarations.
* C-language interface: Interface. * C-language interface: Interface.
* calc: Infix Calc. * calc: Infix Calc.
* calculator, infix notation: Infix Calc. * calculator, infix notation: Infix Calc.
* calculator, location tracking: Location Tracking Calc.
* calculator, multi-function: Multi-function Calc. * calculator, multi-function: Multi-function Calc.
* calculator, simple: RPN Calc. * calculator, simple: RPN Calc.
* character token: Symbols. * character token: Symbols.
@@ -869,10 +872,9 @@ Index
* data types of semantic values: Value Type. * data types of semantic values: Value Type.
* debugging: Debugging. * debugging: Debugging.
* declaration summary: Decl Summary. * declaration summary: Decl Summary.
* declarations: Prologue.
* declarations section: Prologue.
* declarations, Bison: Declarations. * declarations, Bison: Declarations.
* declarations, Bison (introduction): Bison Declarations. * declarations, Bison (introduction): Bison Declarations.
* declarations, C: C Declarations.
* declaring literal string tokens: Token Decl. * declaring literal string tokens: Token Decl.
* declaring operator precedence: Precedence Decl. * declaring operator precedence: Precedence Decl.
* declaring the start symbol: Start Decl. * declaring the start symbol: Start Decl.
@@ -887,7 +889,6 @@ Index
* defining language semantics: Semantics. * defining language semantics: Semantics.
* else, dangling: Shift/Reduce. * else, dangling: Shift/Reduce.
* environment variables: Environment Variables. * environment variables: Environment Variables.
* epilogue: Epilogue.
* error: Error Recovery. * error: Error Recovery.
* error recovery: Error Recovery. * error recovery: Error Recovery.
* error recovery, simple: Simple Error Recovery. * error recovery, simple: Simple Error Recovery.
@@ -925,8 +926,10 @@ Index
* location <1>: Locations. * location <1>: Locations.
* location: Locations Overview. * location: Locations Overview.
* location actions: Actions and Locations. * location actions: Actions and Locations.
* location tracking calculator: Location Tracking Calc.
* look-ahead token: Look-Ahead. * look-ahead token: Look-Ahead.
* LR(1): Mystery Conflicts. * LR(1): Mystery Conflicts.
* ltcalc: Location Tracking Calc.
* main function in simple example: Rpcalc Main. * main function in simple example: Rpcalc Main.
* mfcalc: Multi-function Calc. * mfcalc: Multi-function Calc.
* mid-rule actions: Mid-Rule Actions. * mid-rule actions: Mid-Rule Actions.
@@ -944,14 +947,13 @@ Index
* parser stack overflow: Stack Overflow. * parser stack overflow: Stack Overflow.
* parser state: Parser States. * parser state: Parser States.
* polish notation calculator: RPN Calc. * polish notation calculator: RPN Calc.
* position, textual <1>: Locations Overview. * position, textual <1>: Locations.
* position, textual: Locations. * position, textual: Locations Overview.
* precedence declarations: Precedence Decl. * precedence declarations: Precedence Decl.
* precedence of operators: Precedence. * precedence of operators: Precedence.
* precedence, context-dependent: Contextual Precedence. * precedence, context-dependent: Contextual Precedence.
* precedence, unary operator: Contextual Precedence. * precedence, unary operator: Contextual Precedence.
* preventing warnings about conflicts: Expect Decl. * preventing warnings about conflicts: Expect Decl.
* Prologue: Prologue.
* pure parser: Pure Decl. * pure parser: Pure Decl.
* recovery from errors: Error Recovery. * recovery from errors: Error Recovery.
* recursive rule: Recursion. * recursive rule: Recursion.
@@ -1009,8 +1011,8 @@ Index
* YYBACKUP: Action Features. * YYBACKUP: Action Features.
* yychar: Look-Ahead. * yychar: Look-Ahead.
* yyclearin: Error Recovery. * yyclearin: Error Recovery.
* YYDEBUG: Debugging.
* yydebug: Debugging. * yydebug: Debugging.
* YYDEBUG: Debugging.
* YYEMPTY: Action Features. * YYEMPTY: Action Features.
* yyerrok: Error Recovery. * yyerrok: Error Recovery.
* YYERROR: Action Features. * YYERROR: Action Features.
+379 -153
View File
File diff suppressed because it is too large Load Diff
-2
View File
@@ -1,4 +1,3 @@
@node GNU Free Documentation License @node GNU Free Documentation License
@appendixsec GNU Free Documentation License @appendixsec GNU Free Documentation License
@@ -400,4 +399,3 @@ to permit their use in free software.
@c Local Variables: @c Local Variables:
@c ispell-local-pdict: "ispell-dict" @c ispell-local-pdict: "ispell-dict"
@c End: @c End:
+1 -1
View File
@@ -1,4 +1,4 @@
@node Copying, Concepts, Conditions, Top @node Copying
@unnumbered GNU GENERAL PUBLIC LICENSE @unnumbered GNU GENERAL PUBLIC LICENSE
@center Version 2, June 1991 @center Version 2, June 1991
+4 -3
View File
@@ -1,3 +1,4 @@
@set UPDATED 15 August 2001 @set UPDATED 20 September 2001
@set EDITION 1.28c @set UPDATED-MONTH September 2001
@set VERSION 1.28c @set EDITION 1.29a
@set VERSION 1.29a
+4 -3
View File
@@ -1,3 +1,4 @@
@set UPDATED 15 August 2001 @set UPDATED 20 September 2001
@set EDITION 1.28c @set UPDATED-MONTH September 2001
@set VERSION 1.28c @set EDITION 1.29a
@set VERSION 1.29a
+1 -2
View File
@@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = ansi2knr
noinst_LIBRARIES = libbison.a noinst_LIBRARIES = libbison.a
INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl INCLUDES = -I.. -I$(srcdir) -I../intl
# Heck, we are still using an old version of Automake which does not # Heck, we are still using an old version of Automake which does not
# understand LIBOBJ additions using $objext... # understand LIBOBJ additions using $objext...
@@ -14,7 +14,6 @@ EXTRA_DIST = malloc.c realloc.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
error.c error.h \ error.c error.h \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
hash.h hash.c \
obstack.h obstack.c \ obstack.h obstack.c \
quote.h quote.c quotearg.h quotearg.c \ quote.h quote.c quotearg.h quotearg.c \
xalloc.h xmalloc.c xstrdup.c xalloc.h xmalloc.c xstrdup.c
+14 -23
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
@@ -104,7 +100,7 @@ AUTOMAKE_OPTIONS = ansi2knr
noinst_LIBRARIES = libbison.a noinst_LIBRARIES = libbison.a
INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl INCLUDES = -I.. -I$(srcdir) -I../intl
# Heck, we are still using an old version of Automake which does not # Heck, we are still using an old version of Automake which does not
@@ -114,7 +110,6 @@ EXTRA_DIST = malloc.c realloc.c
libbison_a_SOURCES = \ libbison_a_SOURCES = \
error.c error.h \ error.c error.h \
getopt.h getopt.c getopt1.c \ getopt.h getopt.c getopt1.c \
hash.h hash.c \
obstack.h obstack.c \ obstack.h obstack.c \
quote.h quote.c quotearg.h quotearg.c \ quote.h quote.c quotearg.h quotearg.c \
xalloc.h xmalloc.c xstrdup.c xalloc.h xmalloc.c xstrdup.c
@@ -130,9 +125,8 @@ LIBRARIES = $(noinst_LIBRARIES)
libbison_a_AR = $(AR) cru libbison_a_AR = $(AR) cru
am_libbison_a_OBJECTS = error$U.$(OBJEXT) getopt$U.$(OBJEXT) \ am_libbison_a_OBJECTS = error$U.$(OBJEXT) getopt$U.$(OBJEXT) \
getopt1$U.$(OBJEXT) hash$U.$(OBJEXT) obstack$U.$(OBJEXT) \ getopt1$U.$(OBJEXT) obstack$U.$(OBJEXT) quote$U.$(OBJEXT) \
quote$U.$(OBJEXT) quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) \ quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) xstrdup$U.$(OBJEXT)
xstrdup$U.$(OBJEXT)
libbison_a_OBJECTS = $(am_libbison_a_OBJECTS) libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
DEFS = @DEFS@ DEFS = @DEFS@
@@ -142,13 +136,13 @@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/config/depcomp depcomp = $(SHELL) $(top_srcdir)/config/depcomp
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/error$U.Po $(DEPDIR)/getopt$U.Po \ @AMDEP_TRUE@DEP_FILES = $(DEPDIR)/error$U.Po $(DEPDIR)/getopt$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/getopt1$U.Po $(DEPDIR)/hash$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/getopt1$U.Po $(DEPDIR)/malloc.Po \
@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ @AMDEP_TRUE@ $(DEPDIR)/memchr.Po $(DEPDIR)/obstack$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/obstack$U.Po $(DEPDIR)/quote$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/quote$U.Po $(DEPDIR)/quotearg$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/quotearg$U.Po $(DEPDIR)/realloc.Po \ @AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/stpcpy.Po \
@AMDEP_TRUE@ $(DEPDIR)/stpcpy.Po $(DEPDIR)/strndup.Po \ @AMDEP_TRUE@ $(DEPDIR)/strndup.Po $(DEPDIR)/strnlen.Po \
@AMDEP_TRUE@ $(DEPDIR)/strnlen.Po $(DEPDIR)/strspn.Po \ @AMDEP_TRUE@ $(DEPDIR)/strspn.Po $(DEPDIR)/xmalloc$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/xmalloc$U.Po $(DEPDIR)/xstrdup$U.Po @AMDEP_TRUE@ $(DEPDIR)/xstrdup$U.Po
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC) CCLD = $(CC)
@@ -200,7 +194,6 @@ mostlyclean-kr:
@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@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/hash$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack$U.Po@am__quote@
@@ -237,8 +230,6 @@ getopt_.c: getopt.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c || rm -f getopt_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c || rm -f getopt_.c
getopt1_.c: getopt1.c $(ANSI2KNR) getopt1_.c: getopt1.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c || rm -f getopt1_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c || rm -f getopt1_.c
hash_.c: hash.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hash.c; then echo $(srcdir)/hash.c; else echo hash.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > hash_.c || rm -f hash_.c
malloc_.c: malloc.c $(ANSI2KNR) malloc_.c: malloc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c || rm -f malloc_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/malloc.c; then echo $(srcdir)/malloc.c; else echo malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c || rm -f malloc_.c
memchr_.c: memchr.c $(ANSI2KNR) memchr_.c: memchr.c $(ANSI2KNR)
@@ -264,10 +255,10 @@ xmalloc_.c: xmalloc.c $(ANSI2KNR)
xstrdup_.c: xstrdup.c $(ANSI2KNR) xstrdup_.c: xstrdup.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c || rm -f xstrdup_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c || rm -f xstrdup_.c
alloca_.$(OBJEXT) error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) \ alloca_.$(OBJEXT) error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) \
hash_.$(OBJEXT) malloc_.$(OBJEXT) memchr_.$(OBJEXT) obstack_.$(OBJEXT) \ malloc_.$(OBJEXT) memchr_.$(OBJEXT) obstack_.$(OBJEXT) quote_.$(OBJEXT) \
quote_.$(OBJEXT) quotearg_.$(OBJEXT) realloc_.$(OBJEXT) \ quotearg_.$(OBJEXT) realloc_.$(OBJEXT) stpcpy_.$(OBJEXT) \
stpcpy_.$(OBJEXT) strndup_.$(OBJEXT) strnlen_.$(OBJEXT) \ strndup_.$(OBJEXT) strnlen_.$(OBJEXT) strspn_.$(OBJEXT) \
strspn_.$(OBJEXT) xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) : $(ANSI2KNR) xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) : $(ANSI2KNR)
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
-293
View File
@@ -1,293 +0,0 @@
/* hash.c -- hash table maintenance
Copyright (C) 1995 Free Software Foundation, Inc.
Written by Greg McGary <gkm@gnu.ai.mit.edu>
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.
*/
#include <config.h>
#include <stdio.h>
#include "hash.h"
#include "error.h"
#include "system.h"
#include "xalloc.h"
static void hash_rehash __P((struct hash_table* ht));
static unsigned long round_up_2 __P((unsigned long rough));
/* Implement double hashing with open addressing. The table size is
always a power of two. The secondary (`increment') hash function
is forced to return an odd-value, in order to be relatively prime
to the table size. This guarantees that the increment can
potentially hit every slot in the table during collision
resolution. */
void *hash_deleted_item = &hash_deleted_item;
/* Force the table size to be a power of two, possibly rounding up the
given size. */
void
hash_init (struct hash_table* ht, unsigned long size,
hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp)
{
ht->ht_size = round_up_2 (size);
if (ht->ht_size > (128 * 1024)) /* prevent size from getting out of hand */
ht->ht_size /= 2;
ht->ht_vec = (void**) XCALLOC (struct token *, ht->ht_size);
if (ht->ht_vec == 0)
error (1, 0, _("can't allocate %ld bytes for hash table: memory exhausted"),
ht->ht_size * sizeof(struct token *));
ht->ht_capacity = ht->ht_size * 15 / 16; /* 93.75% loading factor */
ht->ht_fill = 0;
ht->ht_collisions = 0;
ht->ht_lookups = 0;
ht->ht_rehashes = 0;
ht->ht_hash_1 = hash_1;
ht->ht_hash_2 = hash_2;
ht->ht_compare = hash_cmp;
}
/* Load an array of items into `ht'. */
void
hash_load (struct hash_table* ht, void *item_table, unsigned long cardinality, unsigned long size)
{
char *items = (char *) item_table;
while (cardinality--)
{
hash_insert (ht, items);
items += size;
}
}
/* Returns the address of the table slot matching `key'. If `key' is
not found, return the address of an empty slot suitable for
inserting `key'. The caller is responsible for incrementing
ht_fill on insertion. */
void **
hash_find_slot (struct hash_table* ht, void const *key)
{
void **slot;
void **deleted_slot = 0;
unsigned int hash_2 = 0;
unsigned int hash_1 = (*ht->ht_hash_1) (key);
ht->ht_lookups++;
for (;;)
{
hash_1 %= ht->ht_size;
slot = &ht->ht_vec[hash_1];
if (*slot == 0)
return slot;
if (*slot == hash_deleted_item)
{
if (deleted_slot == 0)
deleted_slot = slot;
}
else
{
if (key == *slot)
return slot;
if ((*ht->ht_compare) (key, *slot) == 0)
return slot;
ht->ht_collisions++;
}
if (!hash_2)
hash_2 = (*ht->ht_hash_2) (key) | 1;
hash_1 += hash_2;
}
}
void *
hash_find_item (struct hash_table* ht, void const *key)
{
void **slot = hash_find_slot (ht, key);
return ((HASH_VACANT (*slot)) ? 0 : *slot);
}
void *
hash_insert (struct hash_table* ht, void *item)
{
void **slot = hash_find_slot (ht, item);
return hash_insert_at (ht, item, slot);
}
void *
hash_insert_at (struct hash_table* ht, void *item, void const *slot)
{
void *old_item = *(void **) slot;
if (HASH_VACANT (old_item))
{
ht->ht_fill++;
old_item = item;
}
*(void const **) slot = item;
if (ht->ht_fill >= ht->ht_capacity)
hash_rehash (ht);
return old_item;
}
void *
hash_delete (struct hash_table* ht, void const *item)
{
void **slot = hash_find_slot (ht, item);
return hash_delete_at (ht, slot);
}
void *
hash_delete_at (struct hash_table* ht, void const *slot)
{
void *item = *(void **) slot;
if (!HASH_VACANT (item))
{
*(void const **) slot = hash_deleted_item;
ht->ht_fill--;
return item;
}
else
return 0;
}
void
hash_free_items (struct hash_table* ht)
{
void **vec = ht->ht_vec;
void **end = &vec[ht->ht_size];
for (; vec < end; vec++)
{
void *item = *vec;
if (!HASH_VACANT (item))
free (item);
*vec = 0;
}
ht->ht_fill = 0;
}
void
hash_delete_items (struct hash_table* ht)
{
void **vec = ht->ht_vec;
void **end = &vec[ht->ht_size];
for (; vec < end; vec++)
*vec = 0;
ht->ht_fill = 0;
ht->ht_collisions = 0;
ht->ht_lookups = 0;
ht->ht_rehashes = 0;
}
void
hash_free (struct hash_table* ht, int free_items)
{
if (free_items)
hash_free_items (ht);
free (ht->ht_vec);
ht->ht_vec = 0;
ht->ht_fill = 0;
ht->ht_capacity = 0;
}
void
hash_map (struct hash_table *ht, hash_map_func_t map)
{
void **slot;
void **end = &ht->ht_vec[ht->ht_size];
for (slot = ht->ht_vec; slot < end; slot++)
{
if (!HASH_VACANT (*slot))
(*map) (*slot);
}
}
/* Double the size of the hash table in the event of overflow... */
static void
hash_rehash (struct hash_table* ht)
{
unsigned long old_ht_size = ht->ht_size;
void **old_vec = ht->ht_vec;
void **ovp;
void **slot;
ht->ht_size *= 2;
ht->ht_rehashes++;
ht->ht_capacity = ht->ht_size - (ht->ht_size >> 4);
ht->ht_vec = (void **) XCALLOC (struct token *, ht->ht_size);
for (ovp = old_vec; ovp < &old_vec[old_ht_size]; ovp++)
{
if (*ovp == 0)
continue;
slot = hash_find_slot (ht, *ovp);
*slot = *ovp;
}
free (old_vec);
}
void
hash_print_stats (struct hash_table *ht, FILE *out_FILE)
{
fprintf (out_FILE, _("Load=%ld/%ld=%.0f%%, "), ht->ht_fill, ht->ht_size,
100.0 * (double) ht->ht_fill / (double) ht->ht_size);
fprintf (out_FILE, _("Rehash=%d, "), ht->ht_rehashes);
fprintf (out_FILE, _("Collisions=%ld/%ld=%.0f%%"), ht->ht_collisions, ht->ht_lookups,
(ht->ht_lookups
? (100.0 * (double) ht->ht_collisions / (double) ht->ht_lookups)
: 0));
}
/* Dump all items into a NULL-terminated vector. Use the
user-supplied vector, or malloc one. */
void**
hash_dump (struct hash_table *ht, void **vector_0, qsort_cmp_t compare)
{
void **vector;
void **slot;
void **end = &ht->ht_vec[ht->ht_size];
if (vector_0 == 0)
vector_0 = XMALLOC (void *, ht->ht_fill + 1);
vector = vector_0;
for (slot = ht->ht_vec; slot < end; slot++)
if (!HASH_VACANT (*slot))
*vector++ = *slot;
*vector = 0;
if (compare)
qsort (vector_0, ht->ht_fill, sizeof (void *), compare);
return vector_0;
}
/* Round a given number up to the nearest power of 2. */
static unsigned long
round_up_2 (unsigned long rough)
{
int round;
round = 1;
while (rough)
{
round <<= 1;
rough >>= 1;
}
return round;
}
-144
View File
@@ -1,144 +0,0 @@
/* hash.h -- decls for hash table
Copyright (C) 1995 Free Software Foundation, Inc.
Written by Greg McGary <gkm@gnu.ai.mit.edu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _hash_h_
#define _hash_h_
#include <stdio.h>
typedef unsigned long (*hash_func_t) __P((void const *key));
typedef int (*hash_cmp_func_t) __P((void const *x, void const *y));
typedef void (*hash_map_func_t) __P((void const *item));
struct hash_table
{
void **ht_vec;
unsigned long ht_size; /* total number of slots (power of 2) */
unsigned long ht_capacity; /* usable slots, limited by loading-factor */
unsigned long ht_fill; /* items in table */
unsigned long ht_collisions; /* # of failed calls to comparison function */
unsigned long ht_lookups; /* # of queries */
unsigned int ht_rehashes; /* # of times we've expanded table */
hash_func_t ht_hash_1; /* primary hash function */
hash_func_t ht_hash_2; /* secondary hash function */
hash_cmp_func_t ht_compare; /* comparison function */
};
typedef int (*qsort_cmp_t) __P((void const *, void const *));
void hash_init __P((struct hash_table *ht, unsigned long size,
hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp));
void hash_load __P((struct hash_table *ht, void *item_table,
unsigned long cardinality, unsigned long size));
void **hash_find_slot __P((struct hash_table *ht, void const *key));
void *hash_find_item __P((struct hash_table *ht, void const *key));
void *hash_insert __P((struct hash_table *ht, void *item));
void *hash_insert_at __P((struct hash_table *ht, void *item, void const *slot));
void *hash_delete __P((struct hash_table *ht, void const *item));
void *hash_delete_at __P((struct hash_table *ht, void const *slot));
void hash_delete_items __P((struct hash_table *ht));
void hash_free_items __P((struct hash_table *ht));
void hash_free __P((struct hash_table *ht, int free_items));
void hash_map __P((struct hash_table *ht, hash_map_func_t map));
void hash_print_stats __P((struct hash_table *ht, FILE *out_FILE));
void **hash_dump __P((struct hash_table *ht, void **vector_0, qsort_cmp_t compare));
extern void *hash_deleted_item;
#define HASH_VACANT(item) ((item) == 0 || (void *) (item) == hash_deleted_item)
/* hash and comparison macros for string keys. */
#define STRING_HASH_1(_key_, _result_) { \
unsigned char const *kk = (unsigned char const *) (_key_) - 1; \
while (*++kk) \
(_result_) += (*kk << (kk[1] & 0xf)); \
} while (0)
#define return_STRING_HASH_1(_key_) do { \
unsigned long result = 0; \
STRING_HASH_1 ((_key_), result); \
return result; \
} while (0)
#define STRING_HASH_2(_key_, _result_) do { \
unsigned char const *kk = (unsigned char const *) (_key_) - 1; \
while (*++kk) \
(_result_) += (*kk << (kk[1] & 0x7)); \
} while (0)
#define return_STRING_HASH_2(_key_) do { \
unsigned long result = 0; \
STRING_HASH_2 ((_key_), result); \
return result; \
} while (0)
#define STRING_COMPARE(_x_, _y_, _result_) do { \
unsigned char const *xx = (unsigned char const *) (_x_) - 1; \
unsigned char const *yy = (unsigned char const *) (_y_) - 1; \
do { \
if (*++xx == '\0') { \
yy++; \
break; \
} \
} while (*xx == *++yy); \
(_result_) = *xx - *yy; \
} while (0)
#define return_STRING_COMPARE(_x_, _y_) do { \
int result; \
STRING_COMPARE (_x_, _y_, result); \
return result; \
} while (0)
/* hash and comparison macros for integer keys. */
#define INTEGER_HASH_1(_key_, _result_) do { \
(_result_) += ((unsigned long)(_key_)); \
} while (0)
#define return_INTEGER_HASH_1(_key_) do { \
unsigned long result = 0; \
INTEGER_HASH_1 ((_key_), result); \
return result; \
} while (0)
#define INTEGER_HASH_2(_key_, _result_) do { \
(_result_) += ~((unsigned long)(_key_)); \
} while (0)
#define return_INTEGER_HASH_2(_key_) do { \
unsigned long result = 0; \
INTEGER_HASH_2 ((_key_), result); \
return result; \
} while (0)
#define INTEGER_COMPARE(_x_, _y_, _result_) do { \
(_result_) = _x_ - _y_; \
} while (0)
#define return_INTEGER_COMPARE(_x_, _y_) do { \
int result; \
INTEGER_COMPARE (_x_, _y_, result); \
return result; \
} while (0)
/* hash and comparison macros for address keys. */
#define ADDRESS_HASH_1(_key_, _result_) INTEGER_HASH_1 (((unsigned long)(_key_)) >> 3, (_result_))
#define ADDRESS_HASH_2(_key_, _result_) INTEGER_HASH_2 (((unsigned long)(_key_)) >> 3, (_result_))
#define ADDRESS_COMPARE(_x_, _y_, _result_) INTEGER_COMPARE ((_x_), (_y_), (_result_))
#define return_ADDRESS_HASH_1(_key_) return_INTEGER_HASH_1 (((unsigned long)(_key_)) >> 3)
#define return_ADDRESS_HASH_2(_key_) return_INTEGER_HASH_2 (((unsigned long)(_key_)) >> 3)
#define return_ADDRESS_COMPARE(_x_, _y_) return_INTEGER_COMPARE ((_x_), (_y_))
#endif /* not _hash_h_ */
-1
View File
@@ -1,6 +1,5 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*- ## Process this file with automake to produce Makefile.in -*-Makefile-*-
EXTRA_DIST = \ EXTRA_DIST = \
atconfig.m4 \
c-bs-a.m4 \ c-bs-a.m4 \
codeset.m4 \ codeset.m4 \
error.m4 \ error.m4 \
-5
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
@@ -101,7 +97,6 @@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
EXTRA_DIST = \ EXTRA_DIST = \
atconfig.m4 \
c-bs-a.m4 \ c-bs-a.m4 \
codeset.m4 \ codeset.m4 \
error.m4 \ error.m4 \
-22
View File
@@ -1,22 +0,0 @@
## ----------------------##
## Prepare for testing. ##
## ----------------------##
# serial 2
# Single argument says where are built sources to test, relative to the
# built test directory. Maybe omitted if the same (flat distribution).
AC_DEFUN([AT_CONFIG],
[AT_TESTPATH=ifelse([$1], [], [.], [$1])
AC_SUBST([AT_TESTPATH])
# Try to be compatible with both Autoconf 2.13 and 2.50.
if test -z "$ECHO_C$ECHO_N$ECHO_T"; then
ECHO_C="$ac_c"
ECHO_N="$ac_n"
ECHO_T="$ac_t"
AC_SUBST([ECHO_C])
AC_SUBST([ECHO_N])
AC_SUBST([ECHO_T])
fi
])
-283
View File
@@ -1,283 +0,0 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <[email protected]>, 1996.
# 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.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
case "$1" in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case "$1" in
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing 0.3 - GNU automake"
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
aclocal)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case "$f" in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG="\${$#}"
case "$LASTARG" in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if [ -f "$SRCFILE" ]; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
fi
if [ -f "$file" ]; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
# We have makeinfo, but it failed.
exit 1
fi
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
if test -z "$file"; then
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
fi
touch $file
;;
tar)
shift
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar ${1+"$@"} && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar ${1+"$@"} && exit 0
fi
firstarg="$1"
if shift; then
case "$firstarg" in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
case "$firstarg" in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" ${1+"$@"} && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
-40
View File
@@ -1,40 +0,0 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <[email protected]>
# Created: 1993-05-16
# Public domain
# $Id$
errstatus=0
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
pathcomp=
for d
do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
fi
fi
pathcomp="$pathcomp/"
done
done
exit $errstatus
# mkinstalldirs ends here
+1
View File
@@ -4,3 +4,4 @@ Makefile.in
POTFILES POTFILES
bison.pot bison.pot
stamp-cat-id stamp-cat-id
*.gmo
-1
View File
@@ -13,7 +13,6 @@ src/print.c
src/print_graph.c src/print_graph.c
src/reader.c src/reader.c
src/reduce.c src/reduce.c
src/vcg.c
lib/error.c lib/error.c
lib/getopt.c lib/getopt.c
BIN
View File
Binary file not shown.
+94 -154
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-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\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"
@@ -18,15 +18,15 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "fataler Fehler: %s\n" msgstr "fataler Fehler: %s\n"
@@ -129,12 +129,12 @@ msgstr ""
msgid "%s derives" msgid "%s derives"
msgstr "%s leitet ab" msgstr "%s leitet ab"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -182,46 +182,48 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:143 #: src/getargs.c:145
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:147 #: src/getargs.c:149
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:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:232 #: src/getargs.c:238
#, 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:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -231,48 +233,48 @@ msgstr "%s: zus
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
#: src/lex.c:70 #: src/lex.c:72
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:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "unbeendeter Kommentar" msgstr "unbeendeter Kommentar"
#: src/lex.c:131 #: src/lex.c:133
#, 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:160 #: src/lex.c:162
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:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
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:338 #: src/lex.c:340
msgid "unterminated type name" msgid "unterminated type name"
msgstr "unerwarteter Typname" msgstr "unerwarteter Typname"
#: src/lex.c:430 #: src/lex.c:432
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"
@@ -447,7 +449,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:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, 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"
@@ -462,7 +464,7 @@ msgstr "
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "mehr als eine %start Deklaration" msgstr "mehr als eine %start Deklaration"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ungültige %start Deklaration" msgstr "ungültige %start Deklaration"
@@ -491,147 +493,137 @@ msgstr "unzul
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "unerwartetes Symbol: %s" msgstr "unerwartetes Symbol: %s"
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, 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:791 #: src/reader.c:796
#, 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:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "erneute %union Definition"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "erneute %union Definition"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "unbekannt: %s" msgstr "unbekannt: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "keine Eingabe-Grammatik" msgstr "keine Eingabe-Grammatik"
#: src/reader.c:998 #: src/reader.c:1020
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "unbekanntes Zeichen: %s" msgstr "unbekanntes Zeichen: %s"
#: src/reader.c:1166 #: src/reader.c:1188
#, 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:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
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:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
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:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
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:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
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:1554 #: src/reader.c:1576
#, 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:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
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:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich" msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "assoc Werte für %s nd %s widersprechen sich" msgstr "assoc Werte für %s nd %s widersprechen sich"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Nutzlose Nicht-Terminale:\n" "Nutzlose Nicht-Terminale:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -640,7 +632,7 @@ msgstr ""
"Nicht genutzte Terminale:\n" "Nicht genutzte Terminale:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -649,7 +641,7 @@ msgstr ""
"Ungenutzte Regeln:\n" "Ungenutzte Regeln:\n"
"\n" "\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -659,11 +651,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
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:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -673,7 +665,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -683,36 +675,36 @@ msgstr ""
"----------------------\n" "----------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
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:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s enthält " msgstr "%s enthält "
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d ungenutzte Nicht-Terminal" msgstr "%d ungenutzte Nicht-Terminal"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " und " msgstr " und "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d ungenutzte Regel" msgstr "%d ungenutzte Regel"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -720,50 +712,6 @@ msgstr ""
"Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d " "Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
"Produktionen.\n" "Produktionen.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -852,29 +800,6 @@ msgstr ""
msgid "'" msgid "'"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "Memory exhausted"
#~ msgstr "%s: Hauptspeicher erschöpft\n"
#~ msgid "$%s is invalid"
#~ msgstr "$%s ist unzulässig"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#~ msgid "unterminated comment at end of file"
#~ msgstr "unbeendeter Kommentar am Dateiende"
#~ msgid "ill-formed %type declaration"
#~ msgstr "falsch geformte %type Deklaration"
#~ msgid "gotos"
#~ msgstr "»goto« Anweisungen"
#, fuzzy
#~ 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"
@@ -882,8 +807,6 @@ msgstr ""
#~ " [--no-parser] [--token-table]\n" #~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n" #~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-file\n" #~ " [--output=outfile] grammar-file\n"
#~ "\n"
#~ "Report bugs to [email protected]\n"
#~ msgstr "" #~ msgstr ""
#~ "Benutzung: %s [-dhklntvyV] [-b Datei-Präfix] [-o Ausgabe-Datei]\n" #~ "Benutzung: %s [-dhklntvyV] [-b Datei-Präfix] [-o Ausgabe-Datei]\n"
#~ " [-p Namen-Präfix] [--debug] [--defines] [--fixed-output-" #~ " [-p Namen-Präfix] [--debug] [--defines] [--fixed-output-"
@@ -893,15 +816,8 @@ msgstr ""
#~ " [--file-prefix=Präfix] [--name-prefix=Präfix]\n" #~ " [--file-prefix=Präfix] [--name-prefix=Präfix]\n"
#~ " [--output=Ausgabe-Datei] Grammatik-Datei\n" #~ " [--output=Ausgabe-Datei] Grammatik-Datei\n"
#, fuzzy #~ msgid "gotos"
#~ msgid "%s:%d: fatal error: " #~ msgstr "»goto« Anweisungen"
#~ msgstr "fataler Fehler: %s\n"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "unbeendeter Kommentar in »%{« Definition"
#~ msgid "invalid @-construct"
#~ msgstr "unzulässig @-Konstruktion"
#~ msgid "\"%s\", line %d: %s\n" #~ msgid "\"%s\", line %d: %s\n"
#~ msgstr "»%s«, Zeile %d: %s\n" #~ msgstr "»%s«, Zeile %d: %s\n"
@@ -914,3 +830,27 @@ 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 "unterminated comment in `%{' definition"
#~ msgstr "unbeendeter Kommentar in »%{« Definition"
#~ msgid "multiple %union declarations"
#~ msgstr "erneute %union Definition"
#~ msgid "unterminated comment at end of file"
#~ msgstr "unbeendeter Kommentar am Dateiende"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#~ msgid "$%s is invalid"
#~ msgstr "$%s ist unzulässig"
#~ msgid "invalid @-construct"
#~ msgstr "unzulässig @-Konstruktion"
#~ msgid "ill-formed %type declaration"
#~ msgstr "falsch geformte %type Deklaration"
BIN
View File
Binary file not shown.
+105 -172
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-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\n"
"PO-Revision-Date: 1998-09-21 10:19+0200\n" "PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <[email protected]>\n" "Last-Translator: Nicolás García-Pedrajas <[email protected]>\n"
"Language-Team: Spanish <[email protected]>\n" "Language-Team: Spanish <[email protected]>\n"
@@ -43,11 +43,11 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
@@ -58,7 +58,7 @@ msgstr ""
# La verdad es que a mi lo de error fatal me suena fatal # La verdad es que a mi lo de error fatal me suena fatal
# ngp # ngp
# #
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "error grave: %s\n" msgstr "error grave: %s\n"
@@ -192,12 +192,12 @@ msgstr ""
msgid "%s derives" msgid "%s derives"
msgstr "%s deriva" msgstr "%s deriva"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -245,49 +245,51 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:143 #: src/getargs.c:145
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:147 #: src/getargs.c:149
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:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:232 #: src/getargs.c:238
#, 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:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -298,49 +300,49 @@ 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:70 #: src/lex.c:72
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:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "comentario sin terminar" msgstr "comentario sin terminar"
#: src/lex.c:131 #: src/lex.c:133
#, 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:160 #: src/lex.c:162
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:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
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:338 #: src/lex.c:340
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:430 #: src/lex.c:432
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"
@@ -524,7 +526,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:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, 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"
@@ -539,7 +541,7 @@ msgstr "`%s' no es v
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %start" msgstr "múltiples declaraciones de %start"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, 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"
@@ -578,12 +580,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:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "`{' desemparejada" msgstr "`{' desemparejada"
#: src/reader.c:791 #: src/reader.c:796
#, 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"
@@ -594,36 +596,26 @@ msgstr "el argumento de %expect no es un entero"
# - cll # - cll
# ok - ngp # ok - ngp
# #
#: src/reader.c:838 #: src/reader.c:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "declaraciones múltiples de %union"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "declaraciones múltiples de %union"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "no reconocido: %s" msgstr "no reconocido: %s"
#: src/reader.c:993 #: src/reader.c:1015
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:998 #: src/reader.c:1020
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "carácter desconocido: %s" msgstr "carácter desconocido: %s"
@@ -632,105 +624,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:1166 #: src/reader.c:1188
#, 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:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
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:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
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:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
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:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
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:1554 #: src/reader.c:1576
#, 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:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
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:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s" msgstr "precedencias en conflicto entre %s y %s"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "conflicto de valores assoc para %s y %s" msgstr "conflicto de valores assoc para %s y %s"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"No terminales sin uso:\n" "No terminales sin uso:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -739,7 +731,7 @@ msgstr ""
"Terminales que no se usan:\n" "Terminales que no se usan:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -748,7 +740,7 @@ msgstr ""
"Reglas sin uso:\n" "Reglas sin uso:\n"
"\n" "\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -758,11 +750,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
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:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -772,7 +764,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -782,31 +774,31 @@ msgstr ""
"--------------------\n" "--------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
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:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s contiene " msgstr "%s contiene "
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d no terminales %s sin uso" msgstr "%d no terminales %s sin uso"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " y " msgstr " y "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
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:542 #: src/reduce.c:540
#, 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"
@@ -823,7 +815,7 @@ msgstr "El s
# Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y # Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y
# usar participios - cll # usar participios - cll
# un error lo tiene cualquiera - ngp # un error lo tiene cualquiera - ngp
#: src/reduce.c:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -831,50 +823,6 @@ msgstr ""
"la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion%" "la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion%"
"s.\n" "s.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -987,37 +935,6 @@ msgstr ""
msgid "'" msgid "'"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "Memory exhausted"
#~ msgstr "%s: memoria agotada\n"
#~ msgid "$%s is invalid"
#~ msgstr "$%s no es válida"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "llave de cierre (`}') desemparejada"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "llave derecha (`}') desemparejada"
#~ msgid "unterminated comment at end of file"
#~ msgstr "comentario sin terminar al final del fichero"
#~ msgid "ill-formed %type declaration"
#~ msgstr "declaración %type incorrectamente formada"
# Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
# comprueba que realmente es necesario emplear una palabra no
# española. Recuerda que el acuerdo que existe en la lista de correo en
# español es, en el peor de los casos, poner algo en español y luego en
# inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
#
# miré el código, lo que indica es el número de gotos del código
# ngp
#
#~ msgid "gotos"
#~ msgstr "saltos (gotos)"
# ¿Por qué no lo pones en mayúsculas? Al fin y al cabo, eso es lo que # ¿Por qué no lo pones en mayúsculas? Al fin y al cabo, eso es lo que
# haces luego con "FDERIVES" que traduces como "FDERIVACIONES", ... - # haces luego con "FDERIVES" que traduces como "FDERIVACIONES", ... -
# cll # cll
@@ -1069,7 +986,6 @@ msgstr ""
#~ "\n" #~ "\n"
#~ "%s deriva\n" #~ "%s deriva\n"
#, fuzzy
#~ 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"
@@ -1077,8 +993,6 @@ msgstr ""
#~ " [--no-parser] [--token-table]\n" #~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n" #~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-file\n" #~ " [--output=outfile] grammar-file\n"
#~ "\n"
#~ "Report bugs to [email protected]\n"
#~ msgstr "" #~ msgstr ""
#~ "Uso: %s [-dhklntvyV] [-b prefijo-ficheros] [-o fichero-salida] [-p " #~ "Uso: %s [-dhklntvyV] [-b prefijo-ficheros] [-o fichero-salida] [-p "
#~ "prefijo-nombres]\n" #~ "prefijo-nombres]\n"
@@ -1088,26 +1002,17 @@ msgstr ""
#~ " [--file-prefix=prefijo] [--name-prefix=prefijo]\n" #~ " [--file-prefix=prefijo] [--name-prefix=prefijo]\n"
#~ " [--output=fichero-salida ] fichero-de-gramática\n" #~ " [--output=fichero-salida ] fichero-de-gramática\n"
# Duda: desconozco cuál será el convenio en la lista de correo a # Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
# propósito de "fatal". Por favor, comprueba que "error grave" es # comprueba que realmente es necesario emplear una palabra no
# preferido por todos los miembros a "error fatal" - cll # española. Recuerda que el acuerdo que existe en la lista de correo en
# veremos que dice la mayoría, como hay otros 2 revisores # español es, en el peor de los casos, poner algo en español y luego en
# La verdad es que a mi lo de error fatal me suena fatal # inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
#
# miré el código, lo que indica es el número de gotos del código
# ngp # ngp
# #
#, fuzzy #~ msgid "gotos"
#~ msgid "%s:%d: fatal error: " #~ msgstr "saltos (gotos)"
#~ msgstr "error grave: %s\n"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "comentario sin terminar en la definición `%{'"
# Duda: ¿`construct' no se refiere a `construcción'? Si es así, el
# mensaje debiera ser "@-construcción no válida" - cll
# O incluso "construcción @" sv
# en ese caso supongo que sería @-construction ngp
#~ msgid "invalid @-construct"
#~ msgstr "@-constructo no válido"
#~ msgid "\"%s\", line %d: %s\n" #~ msgid "\"%s\", line %d: %s\n"
#~ msgstr "\"%s\", línea %d: %s\n" #~ msgstr "\"%s\", línea %d: %s\n"
@@ -1122,3 +1027,31 @@ msgstr ""
# de gettext dice cómo ha de hacerse, no de cualquier manera. sv # de gettext dice cómo ha de hacerse, no de cualquier manera. sv
#~ 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 "unterminated comment in `%{' definition"
#~ msgstr "comentario sin terminar en la definición `%{'"
#~ msgid "multiple %union declarations"
#~ msgstr "declaraciones múltiples de %union"
#~ msgid "unterminated comment at end of file"
#~ msgstr "comentario sin terminar al final del fichero"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "llave de cierre (`}') desemparejada"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "llave derecha (`}') desemparejada"
#~ msgid "$%s is invalid"
#~ msgstr "$%s no es válida"
# Duda: ¿`construct' no se refiere a `construcción'? Si es así, el
# mensaje debiera ser "@-construcción no válida" - cll
# O incluso "construcción @" sv
# en ese caso supongo que sería @-construction ngp
#~ msgid "invalid @-construct"
#~ msgstr "@-constructo no válido"
#~ msgid "ill-formed %type declaration"
#~ msgstr "declaración %type incorrectamente formada"
BIN
View File
Binary file not shown.
+120 -299
View File
@@ -1,12 +1,12 @@
# Estonian translations for bison. # Estonian translations for bison.
# Copyright (C) 2000 Free Software Foundation, Inc. # Copyright (C) 2001 Free Software Foundation, Inc.
# Toomas Soome <[email protected]>, 2000. # Toomas Soome <[email protected]>, 2001.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.28d\n"
"POT-Creation-Date: 2001-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\n"
"PO-Revision-Date: 2000-04-11 22:19+02:00\n" "PO-Revision-Date: 2001-08-29 17:06+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"
@@ -18,18 +18,17 @@ msgstr ""
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:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr "Tundmatu süsteemi viga"
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr "hoiatus: "
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "fataalne viga: %s\n" msgstr "fataalne viga: "
#: src/conflicts.c:49 #: src/conflicts.c:49
#, c-format #, c-format
@@ -121,28 +120,22 @@ 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:44 #: src/derives.c:44
#, fuzzy
msgid "DERIVES" msgid "DERIVES"
msgstr "" msgstr "DERIVES"
"\n"
"\n"
"\n"
"DERIVES\n"
"\n"
#: src/derives.c:49 #: src/derives.c:49
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s derives" msgstr "%s derives"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr "faili `%s' ei saa avada"
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" 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.
@@ -176,7 +169,6 @@ msgstr ""
" -y, --yacc emuleeri POSIX yacc\n" " -y, --yacc emuleeri POSIX yacc\n"
#: src/getargs.c:104 #: src/getargs.c:104
#, fuzzy
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,11 +180,12 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
"Parser:\n" "Parser:\n"
" -S, --skeleton=FAIL kasutatava skeleti kirjeldus\n"
" -t, --debug varusta parser silumisinfoga\n" " -t, --debug varusta parser silumisinfoga\n"
" --locations luba asukohtade arvestamine\n"
" -p, --name-prefix=PREFIKS lisa välissümbolite nimedele PREFIKS\n" " -p, --name-prefix=PREFIKS lisa välissümbolite nimedele PREFIKS\n"
" -l, --no-lines ära genereeri `#line' direktiive\n" " -l, --no-lines ära genereeri `#line' direktiive\n"
" -n, --no-parser genereeri ainult tabelid\n" " -n, --no-parser genereeri ainult tabelid\n"
" -r, --raw sümbolite number alates 3\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:116
@@ -202,51 +195,58 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
"Väljund:\n" "Väljund:\n"
" -d, --defines loo ka päisfail\n" " -d, --defines loo ka päisfail\n"
" -v, --verbose väljasta automaadi kohta selgitusi\n" " -v, --verbose väljasta automaadi kohta selgitusi\n"
" -b, --file-prefix=PREFIKS kasuta väljundfailide nimedes PREFIKSit\n" " -b, --file-prefix=PREFIKS kasuta väljundfailide nimedes PREFIKSit\n"
" -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"
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:143 #: src/getargs.c:145
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, "
"Inc.\n"
#: src/getargs.c:147 #: src/getargs.c:149
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 ""
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
#: src/getargs.c:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr "`%s' ei ole enam toetatud"
#: src/getargs.c:232 #: src/getargs.c:238
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
#: src/getargs.c:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -256,46 +256,46 @@ msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
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:70 #: src/lex.c:72
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "leidsin ja ignoreerin ootamatu `/'" msgstr "leidsin ja ignoreerin ootamatu `/'"
#: src/lex.c:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "lõpetamata kommentaar" msgstr "lõpetamata kommentaar"
#: src/lex.c:131 #: src/lex.c:133
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "ootamatu faililõpp" msgstr "ootamatu faililõpp"
#: src/lex.c:160 #: src/lex.c:162
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "paojadata reavahetus konstandis" msgstr "paojadata reavahetus konstandis"
#: src/lex.c:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
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:338 #: src/lex.c:340
msgid "unterminated type name" msgid "unterminated type name"
msgstr "lõpetamata tüübinimi" msgstr "lõpetamata tüübinimi"
#: src/lex.c:430 #: src/lex.c:432
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"
@@ -352,20 +352,13 @@ msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tliigu olekule %d\n" msgstr " %-4s\tliigu olekule %d\n"
#: src/print.c:202 #: src/print.c:202
#, fuzzy, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr "olek %d"
"\n"
"\n"
"olek %d\n"
"\n"
#: src/print.c:233 #: src/print.c:233
#, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr "Grammatika"
"\n"
"Grammatika\n"
#: src/print.c:240 #: src/print.c:240
#, c-format #, c-format
@@ -377,20 +370,12 @@ msgid "\t\t/* empty */"
msgstr "\t\t/* tühi */" msgstr "\t\t/* tühi */"
#: src/print.c:253 #: src/print.c:253
#, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
"\n"
"Terminalid, koos reeglitega, kus nad ilmuvad\n"
"\n"
#: src/print.c:302 #: src/print.c:302
#, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
"\n"
"Mitteterminalid, koos reeglitega, kus nad ilmuvad\n"
"\n"
#: src/print.c:329 #: src/print.c:329
msgid " on left:" msgid " on left:"
@@ -401,14 +386,14 @@ msgid " on right:"
msgstr " paremal:" msgstr " paremal:"
#: src/print_graph.c:174 #: src/print_graph.c:174
#, fuzzy, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n" msgstr "%-4s\tviga (mitteassotsiatiivne)"
#: src/print_graph.c:187 #: src/print_graph.c:187
#, fuzzy, 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)\n" msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
#: src/reader.c:79 #: src/reader.c:79
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
@@ -432,9 +417,9 @@ msgid "unterminated string"
msgstr "lõpetamata sõne" msgstr "lõpetamata sõne"
#: src/reader.c:326 src/reader.c:390 #: src/reader.c:326 src/reader.c:390
#, fuzzy, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s on vigane" msgstr "%s on vigane"
#: src/reader.c:366 #: src/reader.c:366
#, c-format #, c-format
@@ -458,19 +443,19 @@ msgstr "Enneaegne EOF peale %s"
#: src/reader.c:499 #: src/reader.c:499
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "" msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena"
#: src/reader.c:502 #: src/reader.c:502
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "" msgstr "sümbolile `%s' on antud enam kui üks literaal sõne"
#: src/reader.c:524 src/reader.c:667 #: src/reader.c:524 src/reader.c:667
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "sümbol %s on uuesti defineeritud" msgstr "sümbol %s on uuesti defineeritud"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, 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"
@@ -481,14 +466,14 @@ msgid "`%s' is invalid in %s"
msgstr "`%s' ei ole %s sees lubatud" msgstr "`%s' ei ole %s sees lubatud"
#: src/reader.c:561 src/reader.c:721 #: src/reader.c:561 src/reader.c:721
#, fuzzy, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "korduvad %start deklaratsioonid" msgstr "korduvad %s deklaratsioonid"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "vigane %start deklaratsioon" msgstr "vigane %s deklaratsioon"
#: src/reader.c:583 #: src/reader.c:583
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
@@ -514,162 +499,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:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "puudub `{'" msgstr "puudub %s"
#: src/reader.c:791 #: src/reader.c:796
#, fuzzy, 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:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "korduvad %union deklaratsioonid"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "korduvad %union deklaratsioonid"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "tundmatu: %s" msgstr "tundmatu: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "sisendgrammatikat pole" msgstr "sisendgrammatikat pole"
#: src/reader.c:998 #: src/reader.c:1020
#, 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:1166 #: src/reader.c:1188
#, 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:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
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:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
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:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
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:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
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:1554 #: src/reader.c:1576
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "vigane sisend: %s" msgstr "vigane sisend: %s"
#: src/reader.c:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
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:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "%s ja %s omavad konfliktseid prioriteete" msgstr "%s ja %s omavad konfliktseid prioriteete"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid" msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr "Kasutamata mitteterminalid:"
"Kasutamata mitteterminalid:\n"
"\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr "Terminalid, mida ei kasutatud:"
"\n"
"\n"
"Terminalid, mida ei kasutatud:\n"
"\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr "Kasutamata reeglid:"
"\n"
"\n"
"Kasutamata reeglid:\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -679,11 +641,11 @@ msgstr ""
"--------\n" "--------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
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:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -693,7 +655,7 @@ msgstr ""
"-------\n" "-------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -703,36 +665,36 @@ msgstr ""
"------------------------\n" "------------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
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:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s sisaldab " msgstr "%s sisaldab "
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d kasutamata mitteterminali%s" msgstr "%d kasutamata mitteterminali%s"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " ja " msgstr " ja "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d kasutamata reeglit%s" msgstr "%d kasutamata reeglit%s"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -740,50 +702,6 @@ msgstr ""
"redutseeritud %s defineerib %d terminali%s, %d mitteterminali%s ja %d reeglit" "redutseeritud %s defineerib %d terminali%s, %d mitteterminali%s ja %d reeglit"
"%s.\n" "%s.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -846,9 +764,8 @@ msgstr "%s: v
#. 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:477 lib/xmalloc.c:66
#, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: mälu on otsas\n" msgstr "mälu on otsas"
#. Get translations for open and closing quotation marks. #. Get translations for open and closing quotation marks.
#. #.
@@ -866,110 +783,14 @@ msgstr "%s: m
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:259 #: lib/quotearg.c:259
msgid "`" msgid "`"
msgstr "" msgstr "`"
#: lib/quotearg.c:260 #: lib/quotearg.c:260
msgid "'" msgid "'"
msgstr "" msgstr "'"
#, fuzzy #~ msgid "multiple %%header_extension declarations"
#~ msgid "Memory exhausted" #~ msgstr "korduvad %%header_extension eklaratsioonid"
#~ msgstr "%s: mälu on otsas\n"
#~ msgid "$%s is invalid" #~ msgid "multiple %%source_extension declarations"
#~ msgstr "$%s on vigane" #~ msgstr "korduvad %%source_extension deklaratsioonid"
#~ msgid "unterminated comment at end of file"
#~ msgstr "lõpetamata kommentaar faili lõpus"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "puudub sulgev loogeline sulg (`}')"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "puudub sulgev loogeline sulg (`}')"
#~ msgid "ill-formed %type declaration"
#~ msgstr "vigaselt formeeritud %type deklaratsioon"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FIRSTS\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FIRSTS\n"
#~ "\n"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "%s firsts\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "%s firsts\n"
#~ "\n"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FDERIVES\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FDERIVES\n"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "%s derives\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "%s derives\n"
#~ "\n"
#~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
#~ " [--verbose] [--version] [--help] [--yacc]\n"
#~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-file\n"
#~ msgstr ""
#~ "Kasuta: %s [-dhklntvyV] [-b faili-prefiks] [-o väljundfail] [-p nime-"
#~ "prefiks]\n"
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
#~ " [--verbose] [--version] [--help] [--yacc]\n"
#~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefiks] [--name-prefix=prefiks]\n"
#~ " [--output=väljundfail] grammatika-fail\n"
#~ msgid "gotos"
#~ msgstr "gotod"
#~ msgid "\"%s\", line %d: %s\n"
#~ msgstr "\"%s\", rida %d: %s\n"
#~ msgid "error: %s\n"
#~ msgstr "viga: %s\n"
#~ msgid "(\"%s\", line %d) error: %s\n"
#~ msgstr "(\"%s\", rida %d) viga: %s\n"
#~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "limiit %d ületatud, liiga palju %s"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "lõpetamata kommentaar `%{' definitsioonis"
#~ msgid "invalid @-construct"
#~ msgstr "vigane @-konstruktsioon"
BIN
View File
Binary file not shown.
+230 -259
View File
@@ -1,14 +1,15 @@
# Messages français pour Bison. # Messages français pour Bison.
# Copyright (C) 1996 Free Software Foundation, Inc. # Copyright (C) 1996 Free Software Foundation, Inc.
# Dominique Boucher <boucherd@IRO.UMontreal.CA>, 1996. # Michel Robitaille <robitail@IRO.UMontreal.CA>, 2000
# Dominique Boucher a été le traducteur de 1996 à 2000
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: GNU bison 1.28d\n"
"POT-Creation-Date: 2001-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\n"
"PO-Revision-Date: 2001-08-06 11:28+0200\n" "PO-Revision-Date: 2001-08-29 20:00-0500\n"
"Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n" "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n" "Language-Team: French <traduc@traduc.org>\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"
@@ -16,17 +17,17 @@ msgstr ""
#: src/LR0.c:207 #: src/LR0.c:207
#, c-format #, c-format
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr "nombre trop grand d'états (max %d)"
#: lib/error.c:117 src/complain.c:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr "Erreur système inconnue"
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr "AVERTISSEMENT: "
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
msgid "fatal error: " msgid "fatal error: "
msgstr "erreur fatale: " msgstr "erreur fatale: "
@@ -121,45 +122,42 @@ 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:44 #: src/derives.c:44
#, fuzzy
msgid "DERIVES" msgid "DERIVES"
msgstr "" msgstr "DÉRIVES"
"\n"
"\n"
"\n"
"DERIVES\n"
"\n"
#: src/derives.c:49 #: src/derives.c:49
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s dérive" msgstr "%s dérive"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr "ne peut ouvrir le fichier `%s'"
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" 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:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n" msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "" msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n"
#: src/getargs.c:87 #: src/getargs.c:87
#, c-format #, c-format
msgid "Usage: %s [OPTION]... FILE\n" msgid "Usage: %s [OPTION]... FILE\n"
msgstr "" msgstr "Usage: %s [OPTION]... FICHIER\n"
#: src/getargs.c:91 #: src/getargs.c:91
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"
"il est alors obligatoire également pour une option de forme courte.\n"
"Il en est de même pour les paramètres optionnels.\n"
#: src/getargs.c:97 #: src/getargs.c:97
msgid "" msgid ""
@@ -168,6 +166,10 @@ msgid ""
" -V, --version output version information and exit\n" " -V, --version output version information and exit\n"
" -y, --yacc emulate POSIX yacc\n" " -y, --yacc emulate POSIX yacc\n"
msgstr "" msgstr ""
"Modes d'utilisation:\n"
" -h, --help afficher l'aide-mémoire\n"
" -V, --version afficher le nom et la version du logiciel\n"
" -y, --yacc émuler yacc en mode POSIX\n"
#: src/getargs.c:104 #: src/getargs.c:104
msgid "" msgid ""
@@ -180,6 +182,16 @@ msgid ""
" -n, --no-parser generate the tables only\n" " -n, --no-parser generate the tables only\n"
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
"Analyseur:\n"
" -S, --skeleton=FICHIER utiliser le FICHIER squelette\n"
" -t, --debug activer le mode de mise au point\n"
" de l'analyseur\n"
" --locations permettre le calcul des localisations\n"
" -p, --name-prefix=PREFIXE accoler le PREFIXE aux symboles externes\n"
" -l, --no-lines ne pas générer les directives `#line'\n"
" -n, --no-parser générer les tables seulement\n"
" -r, --raw compter les jetons à partir de 3\n"
" -k, --token-table inclure la table des noms de jetons\n"
#: src/getargs.c:116 #: src/getargs.c:116
msgid "" msgid ""
@@ -188,112 +200,124 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
"Sortie:\n"
" -d, --defines produire un fichier d'en-tête\n"
" -v, --verbose produire une explication de l'automate\n"
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
" -o, --output-file=FICHIER produire la sortie dans le FICHIER\n"
" -g, --graph produire aussi la description du graphe VCG de "
"l'automate\n"
#: src/getargs.c:124 #: src/getargs.c:126
msgid "Report bugs to <[email protected]>.\n" msgid "Report bugs to <[email protected]>.\n"
msgstr "" 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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:143 #: src/getargs.c:145
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"
#: src/getargs.c:147 #: src/getargs.c:149
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 ""
"Ce logiciel est libre; voir les sources pour les conditions de\n"
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
#: src/getargs.c:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr "`%s' n'est plus supporté"
#: src/getargs.c:232 #: src/getargs.c:238
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
#: src/getargs.c:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, fuzzy, 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: paramètres supplémentaires ignorés après `%s'\n"
#: src/lalr.c:312 #: src/lalr.c:312
#, c-format #, c-format
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr "nombre trop grand de \"goto\" (Max %d)"
#: src/lex.c:70 #: src/lex.c:72
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "`/' inattendu et ignoré" msgstr "`/' inattendu et ignoré"
#: src/lex.c:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "le commentaire ne se termine pas" msgstr "le commentaire ne se termine pas"
#: src/lex.c:131 #: src/lex.c:133
#, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Fin de fichier inattendue" msgstr "Fin de fichier inattendue"
#: src/lex.c:160 #: src/lex.c:162
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:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
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:338 #: src/lex.c:340
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:430 #: src/lex.c:432
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:108 #: src/main.c:108
#, fuzzy, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "erreur interne, %s\n" msgstr "%s: erreur interne: %s\n"
#: src/nullable.c:52 #: src/nullable.c:52
msgid "Entering set_nullable" msgid "Entering set_nullable"
msgstr "Entré dans set_nullable" msgstr "Entré dans set_nullable"
#: src/output.c:993 #: src/output.c:993
#, fuzzy, c-format #, c-format
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "taille maximum des tables (%s) dépassée" msgstr "taille maximale de la table (%d) dépassée"
#: src/print.c:38 #: src/print.c:38
#, c-format #, c-format
@@ -334,20 +358,13 @@ msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\taller à l'état %d\n" msgstr " %-4s\taller à l'état %d\n"
#: src/print.c:202 #: src/print.c:202
#, fuzzy, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr "état %d"
"\n"
"\n"
"état %d\n"
"\n"
#: src/print.c:233 #: src/print.c:233
#, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr "Grammaire"
"\n"
"Grammaire\n"
#: src/print.c:240 #: src/print.c:240
#, c-format #, c-format
@@ -359,20 +376,12 @@ msgid "\t\t/* empty */"
msgstr "\t\t/* epsilon */" msgstr "\t\t/* epsilon */"
#: src/print.c:253 #: src/print.c:253
#, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr "Terminaux, suivis des règles où ils apparaissent"
"\n"
"Terminaux, suivis des règles où ils apparaissent\n"
"\n"
#: src/print.c:302 #: src/print.c:302
#, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr "Non-terminaux, suivis des règles où ils apparaissent"
"\n"
"Catégories, suivis des règles où elles apparaissent\n"
"\n"
#: src/print.c:329 #: src/print.c:329
msgid " on left:" msgid " on left:"
@@ -383,14 +392,14 @@ msgid " on right:"
msgstr " à droite:" msgstr " à droite:"
#: src/print_graph.c:174 #: src/print_graph.c:174
#, fuzzy, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\terreur (non-associatif)\n" msgstr "%-4s\terreur (non-associatif)"
#: src/print_graph.c:187 #: src/print_graph.c:187
#, fuzzy, 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)\n" msgstr "$défaut\tréduction par la règle %d (%s)"
#: src/reader.c:79 #: src/reader.c:79
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
@@ -414,9 +423,9 @@ msgid "unterminated string"
msgstr "chaîne de caractère non terminée" msgstr "chaîne de caractère non terminée"
#: src/reader.c:326 src/reader.c:390 #: src/reader.c:326 src/reader.c:390
#, fuzzy, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "@%s n'est pas valide" msgstr "%s n'est pas valide"
#: src/reader.c:366 #: src/reader.c:366
#, c-format #, c-format
@@ -424,9 +433,9 @@ msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' n'a pas son type déclaré" msgstr "$$ de `%s' n'a pas son type déclaré"
#: src/reader.c:383 #: src/reader.c:383
#, fuzzy, c-format #, c-format
msgid "$%d of `%s' has no declared type" msgid "$%d of `%s' has no declared type"
msgstr "$%s cd `%s' n'a pas son type déclaré" msgstr "$%d de `%s' n'a pas de type déclaré"
#: src/reader.c:437 #: src/reader.c:437
msgid "unterminated `%{' definition" msgid "unterminated `%{' definition"
@@ -435,24 +444,24 @@ msgstr "La section de d
#: src/reader.c:482 src/reader.c:598 src/reader.c:648 #: src/reader.c:482 src/reader.c:598 src/reader.c:648
#, c-format #, c-format
msgid "Premature EOF after %s" msgid "Premature EOF after %s"
msgstr "" msgstr "Fin de fichier prématutée après %s"
#: src/reader.c:499 #: src/reader.c:499
#, c-format #, c-format
msgid "symbol `%s' used more than once as a literal string" msgid "symbol `%s' used more than once as a literal string"
msgstr "" msgstr "symbole `%s' utilisé plus d'une fois dans une chaîne litérale"
#: src/reader.c:502 #: src/reader.c:502
#, c-format #, c-format
msgid "symbol `%s' given more than one literal string" msgid "symbol `%s' given more than one literal string"
msgstr "" msgstr "symbole `%s' présent dans plus d'une chaîne litérale"
#: src/reader.c:524 src/reader.c:667 #: src/reader.c:524 src/reader.c:667
#, c-format #, c-format
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbole %s redéfini" msgstr "symbole %s redéfini"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, 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"
@@ -463,23 +472,23 @@ 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:561 src/reader.c:721 #: src/reader.c:561 src/reader.c:721
#, fuzzy, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "multiples déclarations %start" msgstr "multiples déclarations %s"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "la déclaration %start n'est pas valide" msgstr "la déclaration %s n'est pas valide"
#: src/reader.c:583 #: src/reader.c:583
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
msgstr "la déclaration %type n'a pas de <nom_de_type>" msgstr "la déclaration %type n'a pas de <nom_de_type>"
#: src/reader.c:618 #: src/reader.c:618
#, fuzzy, c-format #, c-format
msgid "invalid %%type declaration due to item: %s" msgid "invalid %%type declaration due to item: %s"
msgstr "la déclaration %%type n'est pas valide à cause de l'item: %s" msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s"
#: src/reader.c:663 #: src/reader.c:663
#, c-format #, c-format
@@ -497,162 +506,139 @@ msgstr ""
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "item inattendu: %s" msgstr "item inattendu: %s"
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "accolade ouvrante `{' non appariée" msgstr "non appariement de %s"
#: src/reader.c:791 #: src/reader.c:796
#, fuzzy, 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 "le paramètre de %%expect n'est pas un entier"
#: src/reader.c:838 #: src/reader.c:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "multiples déclarations %union"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "multiples déclarations %union"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "non reconnu: %s" msgstr "non reconnu: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "aucune grammaire en entrée" msgstr "aucune grammaire en entrée"
#: src/reader.c:998 #: src/reader.c:1020
#, 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:1166 #: src/reader.c:1188
#, fuzzy, 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:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
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:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
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:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
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:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
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:1554 #: src/reader.c:1576
#, 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:1562 #: src/reader.c:1584
#, fuzzy, 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 (terminaux et catégories); maximum de %s" msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
#: src/reader.c:1565 #: src/reader.c:1587
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:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "les priorités pour %s et %s entrent en conflit" msgstr "les priorités pour %s et %s entrent en conflit"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "les valeurs d'association de %s et %s entrent en conflit" msgstr "les valeurs d'association de %s et %s entrent en conflit"
#: src/reader.c:1757 #: src/reader.c:1779
#, fuzzy, c-format #, c-format
msgid "tokens %s and %s both assigned number %d" msgid "tokens %s and %s both assigned number %d"
msgstr "les terminaux %s et %s se sont vus assigner le nombre %s" msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
#: src/reader.c:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr "Non-terminaux inutiles:"
"Catégories non productives:\n"
"\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr "Terminaux non utilisés:"
"\n"
"\n"
"Terminaux non utilisés:\n"
"\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr "Règles inutiles:"
"\n"
"\n"
"Règles non productives:\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -662,11 +648,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
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:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -676,7 +662,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -686,36 +672,36 @@ msgstr ""
"-------------------\n" "-------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
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:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s contient " msgstr "%s contient "
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d catégories non productives%s" msgstr "%d catégories non productives%s"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " et " msgstr " et "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d règle(s) non productive(s)" msgstr "%d règle(s) non productive(s)%s"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -723,50 +709,6 @@ msgstr ""
"la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%" "la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
"s.\n" "s.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -814,24 +756,23 @@ msgstr "%s: option non valide -- %c\n"
#: lib/getopt.c:815 lib/getopt.c:945 #: lib/getopt.c:815 lib/getopt.c:945
#, c-format #, c-format
msgid "%s: option requires an argument -- %c\n" msgid "%s: option requires an argument -- %c\n"
msgstr "%s: Cette option requiert un paramètre -- %c\n" msgstr "%s: l'option requiert un paramètre -- %c\n"
#: lib/getopt.c:862 #: lib/getopt.c:862
#, fuzzy, c-format #, c-format
msgid "%s: option `-W %s' is ambiguous\n" msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'option %s est ambigüe\n" msgstr "%s: l'option `-W %s' est ambig\n"
#: lib/getopt.c:880 #: lib/getopt.c:880
#, fuzzy, 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 --%s n'admet pas de paramètre\n" msgstr "%s: l'option `-W %s' n'admet pas de paramètre\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:477 lib/xmalloc.c:66
#, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: mémoire épuisée\n" msgstr "mémoire épuisée"
#. Get translations for open and closing quotation marks. #. Get translations for open and closing quotation marks.
#. #.
@@ -849,34 +790,79 @@ msgstr "%s: m
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:259 #: lib/quotearg.c:259
msgid "`" msgid "`"
msgstr "" msgstr "`"
#: lib/quotearg.c:260 #: lib/quotearg.c:260
msgid "'" msgid "'"
msgstr "" msgstr "'"
#, fuzzy #~ msgid "multiple %%header_extension declarations"
#~ msgid "Memory exhausted" #~ msgstr "multiples déclarations %%header_extension"
#~ msgstr "%s: mémoire épuisée\n"
#~ msgid "$%s is invalid" #~ msgid "multiple %%source_extension declarations"
#~ msgstr "$%s n'est pas valide" #~ msgstr "multiples déclarations %%source_extension"
#~ msgid "unmatched close-brace (`}')" #~ msgid "vcg graph: no such color."
#~ msgstr "accolade fermante `}' non appariée" #~ msgstr "graphe vcg: pas de telle couleur"
#~ msgid "unmatched right brace (`}')" #~ msgid "vcg graph: no such text mode"
#~ msgstr "accolade fermante `}' non appariée" #~ msgstr "graphe vcg: pas de tel mode texte"
#~ msgid "vcg graph: no such shape"
#~ msgstr "graphe vcg: pas de telle forme"
#~ msgid "vcg graph: no such decision"
#~ msgstr "graphe vcg: pas de telle décision"
#~ msgid "vcg graph: no such an orientation"
#~ msgstr "graphe vcg: pas de telle orientation"
#~ msgid "vcg graph: no such an alignement"
#~ msgstr "graphe vcg: pas de tel alignement"
#~ msgid "vcg graph: no such an arrow mode"
#~ msgstr "graphe vcg: pas de tel mode de flèche"
#~ msgid "vcg graph: no such crossing_type"
#~ msgstr "graphe vcg: pas de tel type de croisement (crossing_type)"
#~ msgid "vcg graph: no such view"
#~ msgstr "graphe vcg: pas de tel vue"
#~ msgid "vcg graph: no such linestyle"
#~ msgstr "graphe vcg: pas de tel style de ligne"
#~ msgid "vcg graph: no such an arrowstyle"
#~ msgstr "graphe vcg: pas de tel style de flèche"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "DERIVES\n"
#~ "\n"
#~ msgid "unterminated comment at end of file" #~ msgid "unterminated comment at end of file"
#~ msgstr "le commentaire ne se termine pas avant la fin du fichier" #~ msgstr "le commentaire ne se termine pas avant la fin du fichier"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "accolade fermante `}' non appariée"
#~ msgid "@%s is invalid"
#~ msgstr "@%s n'est pas valide"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "accolade fermante `}' non appariée"
#~ msgid "ill-formed %type declaration" #~ msgid "ill-formed %type declaration"
#~ msgstr "déclaration %type mal formée" #~ msgstr "déclaration %type mal formée"
#~ msgid "gotos"
#~ msgstr "gotos"
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"
#~ "\n" #~ "\n"
@@ -901,17 +887,6 @@ msgstr ""
#~ "%s firsts\n" #~ "%s firsts\n"
#~ "\n" #~ "\n"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FDERIVES\n"
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "\n"
#~ "FDERIVES\n"
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"
#~ "\n" #~ "\n"
@@ -923,7 +898,6 @@ msgstr ""
#~ "%s derives\n" #~ "%s derives\n"
#~ "\n" #~ "\n"
#, fuzzy
#~ 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"
@@ -931,8 +905,6 @@ msgstr ""
#~ " [--no-parser] [--token-table]\n" #~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n" #~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-file\n" #~ " [--output=outfile] grammar-file\n"
#~ "\n"
#~ "Report bugs to [email protected]\n"
#~ msgstr "" #~ msgstr ""
#~ "Usage: %s [-dhklntvyV] [-b préfixe-de-fichier] [-o sortie] [-p préfixe-de-" #~ "Usage: %s [-dhklntvyV] [-b préfixe-de-fichier] [-o sortie] [-p préfixe-de-"
#~ "nom]\n" #~ "nom]\n"
@@ -942,15 +914,8 @@ msgstr ""
#~ " [--file-prefix=préfixe] [--name-prefix=préfixe]\n" #~ " [--file-prefix=préfixe] [--name-prefix=préfixe]\n"
#~ " [--output=outfile] grammaire\n" #~ " [--output=outfile] grammaire\n"
#, fuzzy #~ msgid "gotos"
#~ msgid "%s:%d: fatal error: " #~ msgstr "gotos"
#~ msgstr "erreur fatale: %s\n"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "le commentaire ne se termine pas dans la section de définition (%{)"
#~ msgid "invalid @-construct"
#~ msgstr "la construction `@' n'est pas valide"
#~ msgid "\"%s\", line %d: %s\n" #~ msgid "\"%s\", line %d: %s\n"
#~ msgstr "\"%s\", ligne %d: %s\n" #~ msgstr "\"%s\", ligne %d: %s\n"
@@ -963,3 +928,9 @@ msgstr ""
#~ msgid "limit of %d exceeded, too many %s" #~ msgid "limit of %d exceeded, too many %s"
#~ msgstr "limite de %d dépassée, trop de %s" #~ msgstr "limite de %d dépassée, trop de %s"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "le commentaire ne se termine pas dans la section de définition (%{)"
#~ msgid "invalid @-construct"
#~ msgstr "la construction `@' n'est pas valide"
BIN
View File
Binary file not shown.
+74 -127
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-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\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"
@@ -18,15 +18,15 @@ msgstr ""
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:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "%s: 致命的エラー: " msgstr "%s: 致命的エラー: "
@@ -135,12 +135,12 @@ msgstr ""
msgid "%s derives" msgid "%s derives"
msgstr "%s は以下から派生" msgstr "%s は以下から派生"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -188,46 +188,48 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:143 #: src/getargs.c:145
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:147 #: src/getargs.c:149
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:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:232 #: src/getargs.c:238
#, 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:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -237,47 +239,47 @@ msgstr "%s: '%s'
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "%s の数が多すぎます (最大 %d)" msgstr "%s の数が多すぎます (最大 %d)"
#: src/lex.c:70 #: src/lex.c:72
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "予期しない `/' が見つかり、無視されました" msgstr "予期しない `/' が見つかり、無視されました"
#: src/lex.c:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "閉じていないコメントです" msgstr "閉じていないコメントです"
#: src/lex.c:131 #: src/lex.c:133
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "予期しないファイルの終端です" msgstr "予期しないファイルの終端です"
#: src/lex.c:160 #: src/lex.c:162
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "定数の中にエスケープされていない改行があります" msgstr "定数の中にエスケープされていない改行があります"
#: src/lex.c:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "閉じられていないタイプ名が、ファイル末尾にあります" msgstr "閉じられていないタイプ名が、ファイル末尾にあります"
#: src/lex.c:338 #: src/lex.c:340
msgid "unterminated type name" msgid "unterminated type name"
msgstr "閉じられていないタイプ名があります" msgstr "閉じられていないタイプ名があります"
#: src/lex.c:430 #: src/lex.c:432
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう" msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
@@ -452,7 +454,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "シンボル %s が再定義されました" msgstr "シンボル %s が再定義されました"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "%s の型が再定義されました" msgstr "%s の型が再定義されました"
@@ -467,7 +469,7 @@ msgstr "%2$s
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "複数の %start が宣言されました" msgstr "複数の %start が宣言されました"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "無効な %start が宣言されました" msgstr "無効な %start が宣言されました"
@@ -496,144 +498,134 @@ msgstr "̵
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "予期せぬアイテム: %s" msgstr "予期せぬアイテム: %s"
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "対応のない `{' です" msgstr "対応のない `{' です"
#: src/reader.c:791 #: src/reader.c:796
#, 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:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "複数の %union 宣言です"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "複数の %union 宣言です"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "認識できない: %s" msgstr "認識できない: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "文法の入力が無い" msgstr "文法の入力が無い"
#: src/reader.c:998 #: src/reader.c:1020
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "未知の文字: %s" msgstr "未知の文字: %s"
#: src/reader.c:1166 #: src/reader.c:1188
#, fuzzy, c-format #, fuzzy, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "閉じられていない %%guard 節です" msgstr "閉じられていない %%guard 節です"
#: src/reader.c:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "文法は縦棒 (|) で始めます" msgstr "文法は縦棒 (|) で始めます"
#: src/reader.c:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています" msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "一つの規則の終りに二つの動作を指定しています" msgstr "一つの規則の終りに二つの動作を指定しています"
#: src/reader.c:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません" msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:1554 #: src/reader.c:1576
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "無効な入力: %s" msgstr "無効な入力: %s"
#: src/reader.c:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません" msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "先行している %s と %s で競合が生じています" msgstr "先行している %s と %s で競合が生じています"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "非結合値 %s と %s で競合が生じています" msgstr "非結合値 %s と %s で競合が生じています"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"不使用非終端子:\n" "不使用非終端子:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -642,7 +634,7 @@ msgstr ""
"利用されない終端子:\n" "利用されない終端子:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -651,7 +643,7 @@ msgstr ""
"不使用規則:\n" "不使用規則:\n"
"\n" "\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -661,11 +653,11 @@ msgstr ""
"---------\n" "---------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "値 前置 結合 タグ\n" msgstr "値 前置 結合 タグ\n"
#: src/reduce.c:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -675,7 +667,7 @@ msgstr ""
"-----\n" "-----\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -685,36 +677,36 @@ msgstr ""
"-----------------\n" "-----------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d 個の規則は決して還元されません\n" msgstr "%d 個の規則は決して還元されません\n"
#: src/reduce.c:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s には" msgstr "%s には"
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d 個の不使用非終端子%.0s" msgstr "%d 個の不使用非終端子%.0s"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr "および" msgstr "および"
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d 個の不使用規則%.0s" msgstr "%d 個の不使用規則%.0s"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -722,50 +714,6 @@ msgstr ""
"還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0sが" "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0sが"
"定義されました\n" "定義されました\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -854,13 +802,6 @@ msgstr ""
msgid "'" msgid "'"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "Memory exhausted"
#~ msgstr "%s: メモリを使い果たしました\n"
#~ msgid "$%s is invalid"
#~ msgstr "$%s は無効です"
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"
#~ "\n" #~ "\n"
@@ -941,6 +882,9 @@ msgstr ""
#~ msgid "unterminated comment in `%{' definition" #~ msgid "unterminated comment in `%{' definition"
#~ msgstr "`%{' 定義 に閉じられていないコメントがあります" #~ msgstr "`%{' 定義 に閉じられていないコメントがあります"
#~ msgid "multiple %union declarations"
#~ msgstr "複数の %union 宣言です"
#~ msgid "unterminated comment at end of file" #~ msgid "unterminated comment at end of file"
#~ msgstr "ファイル末尾に閉じられていないコメントがあります" #~ msgstr "ファイル末尾に閉じられていないコメントがあります"
@@ -950,6 +894,9 @@ msgstr ""
#~ msgid "unmatched right brace (`}')" #~ msgid "unmatched right brace (`}')"
#~ msgstr "対応のない右ブレース (`}') です" #~ msgstr "対応のない右ブレース (`}') です"
#~ msgid "$%s is invalid"
#~ msgstr "$%s は無効です"
#~ msgid "invalid @-construct" #~ msgid "invalid @-construct"
#~ msgstr "無効な @-コンストラクトです" #~ msgstr "無効な @-コンストラクトです"
BIN
View File
Binary file not shown.
+94 -154
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-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\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"
@@ -18,15 +18,15 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "" msgstr ""
#: lib/error.c:117 src/complain.c:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr ""
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr ""
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy #, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "fatale fout: %s\n" msgstr "fatale fout: %s\n"
@@ -135,12 +135,12 @@ msgstr ""
msgid "%s derives" msgid "%s derives"
msgstr "%s afgeleiden" msgstr "%s afgeleiden"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr ""
#: src/files.c:149 #: src/files.c:151
msgid "cannot close file" msgid "cannot close file"
msgstr "" msgstr ""
@@ -188,46 +188,48 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr ""
#: src/getargs.c:143 #: src/getargs.c:145
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:147 #: src/getargs.c:149
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:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr ""
#: src/getargs.c:232 #: src/getargs.c:238
#, 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:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -237,47 +239,47 @@ msgstr "%s: extra argumenten genegeerd na '%s'\n"
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "" msgstr ""
#: src/lex.c:70 #: src/lex.c:72
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "onverwachte `/' gevonden en genegeerd" msgstr "onverwachte `/' gevonden en genegeerd"
#: src/lex.c:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ongetermineerd commentaar" msgstr "ongetermineerd commentaar"
#: src/lex.c:131 #: src/lex.c:133
#, fuzzy #, fuzzy
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "Onverwacht bestandseinde" msgstr "Onverwacht bestandseinde"
#: src/lex.c:160 #: src/lex.c:162
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:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
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:338 #: src/lex.c:340
msgid "unterminated type name" msgid "unterminated type name"
msgstr "niet getermineerd type naam" msgstr "niet getermineerd type naam"
#: src/lex.c:430 #: src/lex.c:432
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"
@@ -454,7 +456,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "symbool %s opnieuw gedefinieerd" msgstr "symbool %s opnieuw gedefinieerd"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "type herdeclaratie voor %s" msgstr "type herdeclaratie voor %s"
@@ -469,7 +471,7 @@ msgstr "`%s' is onjuist in %s"
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "meerdere %start declaraties" msgstr "meerdere %start declaraties"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, fuzzy, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "onjuiste %start declaratie" msgstr "onjuiste %start declaratie"
@@ -498,145 +500,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:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, fuzzy, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "niet overeenkomstige `{'" msgstr "niet overeenkomstige `{'"
#: src/reader.c:791 #: src/reader.c:796
#, 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:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "meerdere %union declaraties"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "meerdere %union declaraties"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "onbekend: %s" msgstr "onbekend: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "geen invoer grammatica" msgstr "geen invoer grammatica"
#: src/reader.c:998 #: src/reader.c:1020
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "onbekend karakter: %s" msgstr "onbekend karakter: %s"
#: src/reader.c:1166 #: src/reader.c:1188
#, 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:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
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:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
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:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
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:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
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:1554 #: src/reader.c:1576
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ongeldige invoer: %s" msgstr "ongeldige invoer: %s"
#: src/reader.c:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
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:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s" msgstr "conflictuerende precedentein voor %s en %s"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "conflictuerende associatieve waarden voor %s en %s" msgstr "conflictuerende associatieve waarden voor %s en %s"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, c-format #, c-format
msgid "the start symbol %s is undefined" msgid "the start symbol %s is undefined"
msgstr "" msgstr ""
#: src/reader.c:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy #, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr ""
"Onbruikbare niet terminals:\n" "Onbruikbare niet terminals:\n"
"\n" "\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy #, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr ""
@@ -645,7 +637,7 @@ msgstr ""
"Terminals welke niet worden gebruikt:\n" "Terminals welke niet worden gebruikt:\n"
"\n" "\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy #, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr ""
@@ -654,7 +646,7 @@ msgstr ""
"Onbruikbare regels:\n" "Onbruikbare regels:\n"
"\n" "\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -664,11 +656,11 @@ msgstr ""
"----------\n" "----------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
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:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -678,7 +670,7 @@ msgstr ""
"------\n" "------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -688,36 +680,36 @@ msgstr ""
"-----------------------\n" "-----------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
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:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s bevat" msgstr "%s bevat"
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d onbruikbare niet terminal%s" msgstr "%d onbruikbare niet terminal%s"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " en " msgstr " en "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d onbruikbare regels%s" msgstr "%d onbruikbare regels%s"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -725,50 +717,6 @@ msgstr ""
"gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d productie" "gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d productie"
"%s.\n" "%s.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -857,28 +805,6 @@ msgstr ""
msgid "'" msgid "'"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "Memory exhausted"
#~ msgstr "%s: geen geheugen meer beschikbaar\n"
#~ msgid "$%s is invalid"
#~ msgstr "$%s is onjuist"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "niet overeenkomstige afsluit-haakje (`}')"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "niet overeenkomstig rechter haakje (`}')"
#~ msgid "unterminated comment at end of file"
#~ msgstr "niet getermineerd commentaar aan einde van bestand"
#~ msgid "ill-formed %type declaration"
#~ msgstr "slecht geformuleerde %type declaratie"
#~ msgid "gotos"
#~ msgstr "ganaar"
#~ msgid "" #~ msgid ""
#~ "\n" #~ "\n"
#~ "\n" #~ "\n"
@@ -925,7 +851,6 @@ msgstr ""
#~ "%s afgeleiden\n" #~ "%s afgeleiden\n"
#~ "\n" #~ "\n"
#, fuzzy
#~ 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"
@@ -933,8 +858,6 @@ msgstr ""
#~ " [--no-parser] [--token-table]\n" #~ " [--no-parser] [--token-table]\n"
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n" #~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-file\n" #~ " [--output=outfile] grammar-file\n"
#~ "\n"
#~ "Report bugs to [email protected]\n"
#~ msgstr "" #~ msgstr ""
#~ "Gebruik: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n" #~ "Gebruik: %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"
@@ -943,15 +866,8 @@ msgstr ""
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n" #~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
#~ " [--output=outfile] grammar-bestand\n" #~ " [--output=outfile] grammar-bestand\n"
#, fuzzy #~ msgid "gotos"
#~ msgid "%s:%d: fatal error: " #~ msgstr "ganaar"
#~ msgstr "fatale fout: %s\n"
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "niet getermineerd commentaar in `%{' definitie"
#~ msgid "invalid @-construct"
#~ msgstr "ongeldige @-constructie"
#~ msgid "\"%s\", line %d: %s\n" #~ msgid "\"%s\", line %d: %s\n"
#~ msgstr "\"%s\", regel %d: %s\n" #~ msgstr "\"%s\", regel %d: %s\n"
@@ -964,3 +880,27 @@ 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 "unterminated comment in `%{' definition"
#~ msgstr "niet getermineerd commentaar in `%{' definitie"
#~ msgid "multiple %union declarations"
#~ msgstr "meerdere %union declaraties"
#~ msgid "unterminated comment at end of file"
#~ msgstr "niet getermineerd commentaar aan einde van bestand"
#~ msgid "unmatched close-brace (`}')"
#~ msgstr "niet overeenkomstige afsluit-haakje (`}')"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "niet overeenkomstig rechter haakje (`}')"
#~ msgid "$%s is invalid"
#~ msgstr "$%s is onjuist"
#~ msgid "invalid @-construct"
#~ msgstr "ongeldige @-constructie"
#~ msgid "ill-formed %type declaration"
#~ msgstr "slecht geformuleerde %type declaratie"
BIN
View File
Binary file not shown.
+120 -206
View File
@@ -1,12 +1,12 @@
# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison. # ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison.
# Copyright (C) 1999 Free Software Foundation, Inc. # Copyright (C) 1999 Free Software Foundation, Inc.
# Dmitry S. Sivachenko <[email protected]>, 1999,2000. # Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.28a\n" "Project-Id-Version: bison 1.29\n"
"POT-Creation-Date: 2001-08-15 10:53+0200\n" "POT-Creation-Date: 2001-09-22 18:19+0200\n"
"PO-Revision-Date: 2000-04-12 13:16+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -18,18 +18,17 @@ msgstr ""
msgid "too many states (max %d)" msgid "too many states (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
#: lib/error.c:117 src/complain.c:100 #: lib/error.c:117 src/complain.c:96
msgid "Unknown system error" msgid "Unknown system error"
msgstr "" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
#: src/complain.c:154 #: src/complain.c:150
msgid "warning: " msgid "warning: "
msgstr "" msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
#: src/complain.c:242 src/complain.c:283 #: src/complain.c:238 src/complain.c:279
#, fuzzy
msgid "fatal error: " msgid "fatal error: "
msgstr "ÏÛÉÂËÁ" msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
#: src/conflicts.c:49 #: src/conflicts.c:49
#, c-format #, c-format
@@ -122,28 +121,22 @@ msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/derives.c:44 #: src/derives.c:44
#, fuzzy
msgid "DERIVES" msgid "DERIVES"
msgstr "" msgstr "DERIVES"
"\n"
"\n"
"\n"
"DERIVES\n"
"\n"
#: src/derives.c:49 #: src/derives.c:49
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ" msgstr "%s ×Ù×ÏÄÉÔ"
#: src/files.c:130 #: src/files.c:132
#, c-format #, c-format
msgid "cannot open file `%s'" msgid "cannot open file `%s'"
msgstr "" msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
#: src/files.c:149 #: src/files.c:151
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.
@@ -178,7 +171,6 @@ msgstr ""
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n" " -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
#: src/getargs.c:104 #: src/getargs.c:104
#, fuzzy
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,11 +182,12 @@ msgid ""
" -k, --token-table include a table of token names\n" " -k, --token-table include a table of token names\n"
msgstr "" msgstr ""
"áÎÁÌÉÚÁÔÏÒ:\n" "áÎÁÌÉÚÁÔÏÒ:\n"
" -S, --skeleton=æáêì ÕËÁÚÁÔØ ÆÁÊÌ ÛÁÂÌÏÎÁ\n"
" -t, --debug ÎÁÓÔÒÏÉÔØ ÁÎÁÌÉÚÁÔÏÒ ÄÌÑ ÏÔÌÁÄËÉ\n" " -t, --debug ÎÁÓÔÒÏÉÔØ ÁÎÁÌÉÚÁÔÏÒ ÄÌÑ ÏÔÌÁÄËÉ\n"
" --locations ×ËÌÀÞÉÔØ ×ÙÞÉÓÌÅÎÉÅ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ\n"
" -p, --name-prefix=ðòåæéëó ÐÏÄÓÔÁ×ÉÔØ ðòåæéëó ÄÌÑ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n" " -p, --name-prefix=ðòåæéëó ÐÏÄÓÔÁ×ÉÔØ ðòåæéëó ÄÌÑ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
" -l, --no-lines ÎÅ ÇÅÎÅÒÉÒÏ×ÁÔØ ÄÉÒÅËÔÉ×Ù `#line'\n" " -l, --no-lines ÎÅ ÇÅÎÅÒÉÒÏ×ÁÔØ ÄÉÒÅËÔÉ×Ù `#line'\n"
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n" " -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
" -r, --raw ÎÕÍÅÒÏ×ÁÔØ ÌÅËÓÅÍÙ, ÎÁÞÉÎÁÑ Ó 3\n"
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n" " -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
#: src/getargs.c:116 #: src/getargs.c:116
@@ -204,51 +197,61 @@ msgid ""
" -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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr "" msgstr ""
"÷Ù×ÏÄ:\n" "÷Ù×ÏÄ:\n"
" -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n" " -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n"
" -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n" " -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n"
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n" " -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n" " -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
"VCG-ÇÒÁÆÁ\n"
#: src/getargs.c:124 #: src/getargs.c:126
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:138 #: src/getargs.c:140
#, c-format #, c-format
msgid "bison (GNU Bison) %s" msgid "bison (GNU Bison) %s"
msgstr "" msgstr "bison (GNU Bison) %s"
#: src/getargs.c:143 #: src/getargs.c:145
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"
#: src/getargs.c:147 #: src/getargs.c:149
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 ""
"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÕÓÌÏ×ÉÑ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ × ÉÓÈÏÄÎÙÈ "
"ÔÅËÓÔÁÈ.\n"
"îéëáëéè ÇÁÒÁÎÔÉÊ ÎÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ, ÄÁÖÅ ÇÁÒÁÎÔÉÉ ðïìåúîïóôé ÉÌÉ "
"ðòéçïäîïóôé\n"
"äìñ ïðòåäåìåîîïê ãåìé.\n"
#: src/getargs.c:208 src/lex.c:635 #: src/getargs.c:214 src/lex.c:635
#, c-format #, c-format
msgid "`%s' is no longer supported" msgid "`%s' is no longer supported"
msgstr "" msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
#: src/getargs.c:232 #: src/getargs.c:238
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
#: src/getargs.c:239 #: src/getargs.c:245
#, 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:243 #: src/getargs.c:249
#, 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"
@@ -258,46 +261,46 @@ msgstr "%s:
msgid "too many gotos (max %d)" msgid "too many gotos (max %d)"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
#: src/lex.c:70 #: src/lex.c:72
msgid "unexpected `/' found and ignored" msgid "unexpected `/' found and ignored"
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'" msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
#: src/lex.c:99 src/reader.c:270 #: src/lex.c:101 src/reader.c:270
msgid "unterminated comment" msgid "unterminated comment"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
#: src/lex.c:131 #: src/lex.c:133
msgid "unexpected end of file" msgid "unexpected end of file"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ"
#: src/lex.c:160 #: src/lex.c:162
msgid "unescaped newline in constant" msgid "unescaped newline in constant"
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ" msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
#: src/lex.c:202 #: src/lex.c:204
#, 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:227 #: src/lex.c:229
#, 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:239 #: src/lex.c:241
#, 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:335 #: src/lex.c:337
msgid "unterminated type name at end of file" msgid "unterminated type name at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/lex.c:338 #: src/lex.c:340
msgid "unterminated type name" msgid "unterminated type name"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
#: src/lex.c:430 #: src/lex.c:432
msgid "use \"...\" for multi-character literal tokens" msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ" msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
@@ -354,20 +357,13 @@ msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:202 #: src/print.c:202
#, fuzzy, c-format #, c-format
msgid "state %d" msgid "state %d"
msgstr "" msgstr "ÓÏÓÔÏÑÎÉÅ %d"
"\n"
"\n"
"ÓÏÓÔÏÑÎÉÅ %d\n"
"\n"
#: src/print.c:233 #: src/print.c:233
#, fuzzy
msgid "Grammar" msgid "Grammar"
msgstr "" msgstr "çÒÁÍÍÁÔÉËÁ"
"\n"
"çÒÁÍÍÁÔÉËÁ\n"
#: src/print.c:240 #: src/print.c:240
#, c-format #, c-format
@@ -379,20 +375,12 @@ msgid "\t\t/* empty */"
msgstr "\t\t/* ÐÕÓÔÏ */" msgstr "\t\t/* ÐÕÓÔÏ */"
#: src/print.c:253 #: src/print.c:253
#, fuzzy
msgid "Terminals, with rules where they appear" msgid "Terminals, with rules where they appear"
msgstr "" msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
"\n"
"ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n"
#: src/print.c:302 #: src/print.c:302
#, fuzzy
msgid "Nonterminals, with rules where they appear" msgid "Nonterminals, with rules where they appear"
msgstr "" msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
"\n"
"îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n"
#: src/print.c:329 #: src/print.c:329
msgid " on left:" msgid " on left:"
@@ -403,14 +391,14 @@ msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:" msgstr " ÎÁÐÒÁ×Ï:"
#: src/print_graph.c:174 #: src/print_graph.c:174
#, fuzzy, c-format #, c-format
msgid "%-4s\terror (nonassociative)" msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n" msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
#: src/print_graph.c:187 #: src/print_graph.c:187
#, fuzzy, c-format #, c-format
msgid "$default\treduce using rule %d (%s)" msgid "$default\treduce using rule %d (%s)"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
#: src/reader.c:79 #: src/reader.c:79
msgid " Skipping to next \\n" msgid " Skipping to next \\n"
@@ -434,9 +422,9 @@ msgid "unterminated string"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
#: src/reader.c:326 src/reader.c:390 #: src/reader.c:326 src/reader.c:390
#, fuzzy, c-format #, c-format
msgid "%s is invalid" msgid "%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË $%s" msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
#: src/reader.c:366 #: src/reader.c:366
#, c-format #, c-format
@@ -472,7 +460,7 @@ msgstr ""
msgid "symbol %s redefined" msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268 #: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, c-format #, c-format
msgid "type redeclaration for %s" msgid "type redeclaration for %s"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s" msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
@@ -483,14 +471,14 @@ msgid "`%s' is invalid in %s"
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s" msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
#: src/reader.c:561 src/reader.c:721 #: src/reader.c:561 src/reader.c:721
#, fuzzy, c-format #, c-format
msgid "multiple %s declarations" msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start" msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:563 src/reader.c:1246 #: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, fuzzy, c-format #, c-format
msgid "invalid %s declaration" msgid "invalid %s declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start" msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
#: src/reader.c:583 #: src/reader.c:583
msgid "%type declaration has no <typename>" msgid "%type declaration has no <typename>"
@@ -516,161 +504,138 @@ msgstr "
msgid "unexpected item: %s" msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s" msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143 #: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, fuzzy, c-format #, c-format
msgid "unmatched %s" msgid "unmatched %s"
msgstr "ÎÅÐÁÒÎÁÑ `{'" msgstr "ÎÅÐÁÒÎÁÑ %s"
#: src/reader.c:791 #: src/reader.c:796
#, fuzzy, c-format #, c-format
msgid "argument of %%expect is not an integer" msgid "argument of %%expect is not an integer"
msgstr "ÁÒÇÕÍÅÎÔ %expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ" msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
#: src/reader.c:838 #: src/reader.c:843
#, 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:867
#, 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:887 #: src/reader.c:1010
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
#: src/reader.c:988
#, c-format #, c-format
msgid "unrecognized: %s" msgid "unrecognized: %s"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s" msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
#: src/reader.c:993 #: src/reader.c:1015
msgid "no input grammar" msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ" msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:998 #: src/reader.c:1020
#, c-format #, c-format
msgid "unknown character: %s" msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s" msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:1166 #: src/reader.c:1188
#, c-format #, c-format
msgid "unterminated %guard clause" msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard" msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
#: src/reader.c:1333 #: src/reader.c:1355
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:1340 #: src/reader.c:1362
msgid "grammar starts with vertical bar" msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ" msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1371 #: src/reader.c:1393
#, 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:1473 #: src/reader.c:1495
msgid "two @prec's in a row" msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ" msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1481 #: src/reader.c:1503
#, fuzzy, 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:1490 #: src/reader.c:1512
msgid "two actions at end of one rule" msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ" msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1504 #: src/reader.c:1526
#, 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:1510 #: src/reader.c:1532
msgid "empty rule for typed nonterminal, and no action" msgid "empty rule for typed nonterminal, and no action"
msgstr "" msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ" "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1554 #: src/reader.c:1576
#, c-format #, c-format
msgid "invalid input: %s" msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s" msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1562 #: src/reader.c:1584
#, 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:1565 #: src/reader.c:1587
msgid "no rules in the input grammar" msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ" msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1589 #: src/reader.c:1611
#, 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:1694 #: src/reader.c:1716
#, c-format #, c-format
msgid "conflicting precedences for %s and %s" msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s" msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1706 #: src/reader.c:1728
#, c-format #, c-format
msgid "conflicting assoc values for %s and %s" msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s" msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1757 #: src/reader.c:1779
#, 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:1770 #: src/reader.c:1792
#, 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:1772 #: src/reader.c:1794
#, 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:404 #: src/reduce.c:402
#, fuzzy
msgid "Useless nonterminals:" msgid "Useless nonterminals:"
msgstr "" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
"âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:\n"
"\n"
#: src/reduce.c:419 #: src/reduce.c:417
#, fuzzy
msgid "Terminals which are not used:" msgid "Terminals which are not used:"
msgstr "" msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
"\n"
"\n"
"îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:\n"
"\n"
#: src/reduce.c:430 #: src/reduce.c:428
#, fuzzy
msgid "Useless rules:" msgid "Useless rules:"
msgstr "" msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
"\n"
"\n"
"âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:\n"
"\n"
#: src/reduce.c:459 #: src/reduce.c:457
msgid "" msgid ""
"Variables\n" "Variables\n"
"---------\n" "---------\n"
@@ -680,11 +645,11 @@ msgstr ""
"----------\n" "----------\n"
"\n" "\n"
#: src/reduce.c:461 #: src/reduce.c:459
msgid "Value Sprec Sassoc Tag\n" msgid "Value Sprec Sassoc Tag\n"
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n" msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
#: src/reduce.c:466 #: src/reduce.c:464
msgid "" msgid ""
"Rules\n" "Rules\n"
"-----\n" "-----\n"
@@ -694,7 +659,7 @@ msgstr ""
"-------\n" "-------\n"
"\n" "\n"
#: src/reduce.c:477 #: src/reduce.c:475
msgid "" msgid ""
"Rules interpreted\n" "Rules interpreted\n"
"-----------------\n" "-----------------\n"
@@ -704,36 +669,36 @@ msgstr ""
"--------------------------\n" "--------------------------\n"
"\n" "\n"
#: src/reduce.c:494 #: src/reduce.c:492
#, c-format #, c-format
msgid "%d rules never reduced\n" msgid "%d rules never reduced\n"
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n" msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
#: src/reduce.c:496 #: src/reduce.c:494
#, c-format #, c-format
msgid "%s contains " msgid "%s contains "
msgstr "%s ÓÏÄÅÒÖÉÔ " msgstr "%s ÓÏÄÅÒÖÉÔ "
#: src/reduce.c:500 #: src/reduce.c:498
#, c-format #, c-format
msgid "%d useless nonterminal%s" msgid "%d useless nonterminal%s"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s" msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s"
#: src/reduce.c:505 #: src/reduce.c:503
msgid " and " msgid " and "
msgstr " É " msgstr " É "
#: src/reduce.c:509 #: src/reduce.c:507
#, c-format #, c-format
msgid "%d useless rule%s" msgid "%d useless rule%s"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s" msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
#: src/reduce.c:542 #: src/reduce.c:540
#, 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:555 #: src/reduce.c:553
#, c-format #, c-format
msgid "" msgid ""
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n" "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
@@ -741,50 +706,6 @@ msgstr ""
"×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ " "×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
"×Ù×ÏÄÁ%s.\n" "×Ù×ÏÄÁ%s.\n"
#: src/vcg.c:234
msgid "vcg graph: no such color."
msgstr ""
#: src/vcg.c:249
msgid "vcg graph: no such text mode"
msgstr ""
#: src/vcg.c:265
msgid "vcg graph: no such shape"
msgstr ""
#: src/vcg.c:304
msgid "vcg graph: no such decision"
msgstr ""
#: src/vcg.c:320
msgid "vcg graph: no such an orientation"
msgstr ""
#: src/vcg.c:335
msgid "vcg graph: no such an alignement"
msgstr ""
#: src/vcg.c:349
msgid "vcg graph: no such an arrow mode"
msgstr ""
#: src/vcg.c:365
msgid "vcg graph: no such crossing_type"
msgstr ""
#: src/vcg.c:382
msgid "vcg graph: no such view"
msgstr ""
#: src/vcg.c:398
msgid "vcg graph: no such linestyle"
msgstr ""
#: src/vcg.c:413
msgid "vcg graph: no such an arrowstyle"
msgstr ""
#: lib/getopt.c:675 #: lib/getopt.c:675
#, c-format #, c-format
msgid "%s: option `%s' is ambiguous\n" msgid "%s: option `%s' is ambiguous\n"
@@ -847,9 +768,8 @@ msgstr "%s:
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message #. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext. #. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66 #: lib/obstack.c:477 lib/xmalloc.c:66
#, fuzzy
msgid "memory exhausted" msgid "memory exhausted"
msgstr "%s: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n" msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
#. Get translations for open and closing quotation marks. #. Get translations for open and closing quotation marks.
#. #.
@@ -867,23 +787,17 @@ msgstr "%s:
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. #. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
#: lib/quotearg.c:259 #: lib/quotearg.c:259
msgid "`" msgid "`"
msgstr "" msgstr "`"
#: lib/quotearg.c:260 #: lib/quotearg.c:260
msgid "'" msgid "'"
msgstr "" msgstr "'"
#~ msgid "unterminated comment at end of file" #~ msgid "multiple %%header_extension declarations"
#~ msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ" #~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%header_extension"
#~ msgid "unmatched close-brace (`}')" #~ msgid "multiple %%source_extension declarations"
#~ msgstr "ÎÅÐÁÒÎÁÑ ÚÁËÒÙ×ÁÀÝÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')" #~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
#~ msgid "@%s is invalid" #~ msgid "@%s is invalid"
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s" #~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
#~ msgid "unmatched right brace (`}')"
#~ msgstr "ÎÅÐÁÒÎÁÑ ÐÒÁ×ÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
#~ msgid "ill-formed %type declaration"
#~ msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %type"
+835
View File
@@ -0,0 +1,835 @@
# Turkish translations for GNU Bison messages.
# Copyright (C) 2001 Free Software Foundation, Inc.
# Altug Bayram <[email protected]>, 2001.
#
msgid ""
msgstr ""
"Project-Id-Version: bison 1.28c\n"
"POT-Creation-Date: 2001-09-22 18:19+0200\n"
"PO-Revision-Date: 2001-09-10 10:54GMT\n"
"Last-Translator: Altug Bayram <[email protected]>\n"
"Language-Team: Turkish <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-9\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 0.9.5\n"
#: src/LR0.c:207
#, c-format
msgid "too many states (max %d)"
msgstr "çok fazla durum (en fazla %d)"
#: lib/error.c:117 src/complain.c:96
msgid "Unknown system error"
msgstr "Bilinmeyen sistem hatasý"
#: src/complain.c:150
msgid "warning: "
msgstr "uyarý: "
#: src/complain.c:238 src/complain.c:279
msgid "fatal error: "
msgstr "ölümcül hata:"
#: src/conflicts.c:49
#, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr ""
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s "
"olarakçözümlendi.\n"
#: src/conflicts.c:115 src/conflicts.c:138
msgid "reduce"
msgstr "indirgeme"
#: src/conflicts.c:121 src/conflicts.c:134
msgid "shift"
msgstr "öteleme"
#: src/conflicts.c:142
msgid "an error"
msgstr "bir hata"
#: src/conflicts.c:422
msgid " 1 shift/reduce conflict"
msgstr " 1 öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:427
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d öteleme/indirgeme çeliþkisi"
#: src/conflicts.c:433
msgid " and"
msgstr " ve"
#: src/conflicts.c:439
msgid " 1 reduce/reduce conflict"
msgstr " 1 indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:444
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d indirgeme/indirgeme çeliþkisi"
#: src/conflicts.c:481
#, c-format
msgid "State %d contains"
msgstr "%d durumu içerir"
#. If invoked with `--yacc', use the output format specified by
#. POSIX.
#: src/conflicts.c:493
msgid "conflicts: "
msgstr "çeliþkiler: "
#: src/conflicts.c:495
#, c-format
msgid " %d shift/reduce"
msgstr " %d öteleme/indirgeme"
#: src/conflicts.c:499
#, c-format
msgid " %d reduce/reduce"
msgstr " %d indirgeme/indirgeme"
#: src/conflicts.c:504
#, c-format
msgid "%s contains"
msgstr "%s içerir"
#: src/conflicts.c:590 src/conflicts.c:711
#, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n"
#: src/conflicts.c:602 src/print.c:173
#, c-format
msgid ""
" $default\treduce using rule %d (%s)\n"
"\n"
msgstr ""
" $default\tindirgeme kural %d (%s)'i kullanýyor\n"
"\n"
#: src/conflicts.c:691 src/conflicts.c:705
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/conflicts.c:732
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
#: src/derives.c:44
msgid "DERIVES"
msgstr "TÜRETÝLENLER"
#: src/derives.c:49
#, c-format
msgid "%s derives"
msgstr "%s türetildi"
#: src/files.c:132
#, c-format
msgid "cannot open file `%s'"
msgstr "`%s' dosyasý açýlamadý"
#: src/files.c:151
msgid "cannot close file"
msgstr "dosya kapatýlamýyor"
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:83
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"
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n"
#: src/getargs.c:91
msgid ""
"If a long option shows an argument as mandatory, then it is mandatory\n"
"for the equivalent short option also. Similarly for optional arguments.\n"
msgstr ""
"Eðer bir uzun seçenek bir argümaný gerektirirse, bu gereklilik, denk olan\n"
"kýsa seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de\n"
"geçerlidir.\n"
#: src/getargs.c:97
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 ""
"Çalýþma kipleri:\n"
" -h, --help bu yardýmý göster ve çýk\n"
" -V, --version sürüm bilgisini ver ve çýk\n"
" -y, --yacc POSIX yacc öykünmesi\n"
#: src/getargs.c:104
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 ""
"Ayrýþtýrýcý:\n"
" -S, --skeleton=DOSYA kullanýlacak iskeleti belirler\n"
" -t, --debug ayrýþtýrýcý için hata ayýklayýcý aracý\n"
" --locations konum hesaplamalarýný etkinleþtirir\n"
" -p, --name-prefix=ÖNEK dýþ simgelere eklenen ÖNEK\n"
" -l, --no-lines `#line' bildirimlerini üretmez\n"
" -n, --no-parser sadece tablolarý üretir\n"
" -k, --token-table andaç isimlerinin bir tablosunu içerir\n"
#: src/getargs.c:116
#, fuzzy
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=FILE leave output to FILE\n"
" -g, --graph also produce a VCG graph description of the "
"automaton\n"
msgstr ""
"Çýktý:\n"
" -d, --defines bir baþlýk dosyasý 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"
" -o, --output-file=DOSYA çýktýyý DOSYAYA býrakýr\n"
#: src/getargs.c:126
msgid "Report bugs to <[email protected]>.\n"
msgstr ""
"Hatalarý <[email protected]>'a,\n"
"çeviri hatalarýný <[email protected]>'e bildir.\n"
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:140
#, c-format
msgid "bison (GNU Bison) %s"
msgstr "bison (GNU Bison) %s"
#: src/getargs.c:145
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
"Telifhakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
"Inc.\n"
#: src/getargs.c:149
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 ""
"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"
"UYGUNLUÐU için bile garanti verilmez.\n"
#: src/getargs.c:214 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr "`%s' artýk desteklenmiyor"
#: src/getargs.c:238
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
#: src/getargs.c:245
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: gramer dosyasý verilmemiþ\n"
#: src/getargs.c:249
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' den sonraki argümanlar yoksayýldý\n"
#: src/lalr.c:312
#, c-format
msgid "too many gotos (max %d)"
msgstr "gotos çok fazla (en fazla %d)"
#: src/lex.c:72
msgid "unexpected `/' found and ignored"
msgstr "beklenmeyen `/' bulundu ve yoksayýldý"
#: src/lex.c:101 src/reader.c:270
msgid "unterminated comment"
msgstr "sonlandýrýlmamýþ açýklama"
#: src/lex.c:133
msgid "unexpected end of file"
msgstr "beklenmeyen dosya sonu"
#: src/lex.c:162
msgid "unescaped newline in constant"
msgstr "sabit içinde kaçýþsýz yeni satýr"
#: src/lex.c:204
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "sekizli deðer 0...255'in dýþýnda: `\\%o'"
#: src/lex.c:229
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "onaltýlýk deðer 255'in üstünde: `\\x%x'"
#: src/lex.c:241
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "bilinmeyen kaçýþ sýrasý: `\\' `%s' tarafýndan takip edildi"
#: src/lex.c:337
msgid "unterminated type name at end of file"
msgstr "dosya sonunda sonlandýrýlmamýþ tip adý"
#: src/lex.c:340
msgid "unterminated type name"
msgstr "sonlandýrýlmamýþ tip ismi"
#: src/lex.c:432
msgid "use \"...\" for multi-character literal tokens"
msgstr "çok-karakterli yazýn andaçlarý için \"...\" kullan"
#: src/main.c:108
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: iç hata: %s\n"
#: src/nullable.c:52
msgid "Entering set_nullable"
msgstr "set_nullable'a girildi"
#: src/output.c:993
#, c-format
msgid "maximum table size (%d) exceeded"
msgstr "en büyük tablo uzunluðu (%d) aþýldý"
#: src/print.c:38
#, c-format
msgid " type %d is %s\n"
msgstr " tip %d %s'dir\n"
#: src/print.c:86
#, c-format
msgid " (rule %d)"
msgstr " (kural %d)"
#: src/print.c:112
msgid " $default\taccept\n"
msgstr " $default\tonayla\n"
#: src/print.c:114
msgid " NO ACTIONS\n"
msgstr " EYLEM YOK\n"
#: src/print.c:133
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tdurum %d'ye git\n"
#: src/print.c:136
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tötele, ve durum %d'ye git\n"
#: src/print.c:160
#, c-format
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\thata (birleþmeli deðil)\n"
#: src/print.c:190
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tdurum %d'ye git\n"
#: src/print.c:202
#, c-format
msgid "state %d"
msgstr "durum %d"
#: src/print.c:233
msgid "Grammar"
msgstr "Gramer"
#: src/print.c:240
#, c-format
msgid "rule %-4d %s ->"
msgstr "kural %-4d %s ->"
#: src/print.c:246
msgid "\t\t/* empty */"
msgstr "\t\t/* boþ */"
#: src/print.c:253
msgid "Terminals, with rules where they appear"
msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:302
msgid "Nonterminals, with rules where they appear"
msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde"
#: src/print.c:329
msgid " on left:"
msgstr " solda:"
#: src/print.c:344
msgid " on right:"
msgstr " saðda:"
#: src/print_graph.c:174
#, c-format
msgid "%-4s\terror (nonassociative)"
msgstr "%-4s\thata (birleþmeli deðil)"
#: src/print_graph.c:187
#, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Sonrakine atlanýyor \\n"
#: src/reader.c:81
#, c-format
msgid " Skipping to next %c"
msgstr " Sonraki %c'ye atlanýyor"
#: src/reader.c:132 src/reader.c:144
msgid "invalid $ value"
msgstr "geçersiz $ deðeri"
#: src/reader.c:170 src/reader.c:185
msgid "unterminated string at end of file"
msgstr "dosyanýn sonunda sonlandýrýlmamýþ dizge"
#: src/reader.c:173
msgid "unterminated string"
msgstr "sonlandýrýlmamýþ dizge"
#: src/reader.c:326 src/reader.c:390
#, c-format
msgid "%s is invalid"
msgstr "%s geçersizdir"
#: src/reader.c:366
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "`%s''in $$'ý bildirilmiþ tip deðil"
#: src/reader.c:383
#, c-format
msgid "$%d of `%s' has no declared type"
msgstr "`%d''in $%s'i bildirilmiþ tip deðil"
#: src/reader.c:437
msgid "unterminated `%{' definition"
msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ"
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
#, c-format
msgid "Premature EOF after %s"
msgstr "%s'den sonra erken EOF"
#: src/reader.c:499
#, c-format
msgid "symbol `%s' used more than once as a literal string"
msgstr "simge `%s' birden fazla defa sabit dizge olarak kullanýldý"
#: src/reader.c:502
#, c-format
msgid "symbol `%s' given more than one literal string"
msgstr "`%s' simgesine birden fazla sabit dizge verilmiþ"
#: src/reader.c:524 src/reader.c:667
#, c-format
msgid "symbol %s redefined"
msgstr "%s simgesi yeniden tanýmlandý"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1290
#, c-format
msgid "type redeclaration for %s"
msgstr "%s için yeniden tip bildirimi"
#: src/reader.c:544
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' %s içinde geçersizdir"
#: src/reader.c:561 src/reader.c:721
#, c-format
msgid "multiple %s declarations"
msgstr "çoklu %s bildirimleri"
#: src/reader.c:563 src/reader.c:902 src/reader.c:927 src/reader.c:1268
#, c-format
msgid "invalid %s declaration"
msgstr "geçersiz %s bildirimi"
#: src/reader.c:583
msgid "%type declaration has no <typename>"
msgstr "%type bildirimi <tipadý>'na sahip deðil"
#: src/reader.c:618
#, c-format
msgid "invalid %%type declaration due to item: %s"
msgstr "geçersiz %%type bildirimine neden olan öðe: %s"
#: src/reader.c:663
#, c-format
msgid "redefining precedence of %s"
msgstr "%s'in önceliði tekrar tanýmlandý"
#: src/reader.c:687
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "geçersiz metin (%s) - sayý tanýtýcýdan sonra olmalýdýr"
#: src/reader.c:697
#, c-format
msgid "unexpected item: %s"
msgstr "beklenmeyen öðe: %s"
#: src/reader.c:764 src/reader.c:1094 src/reader.c:1165
#, c-format
msgid "unmatched %s"
msgstr "eþlenemeyen %s"
#: src/reader.c:796
#, c-format
msgid "argument of %%expect is not an integer"
msgstr "%%expect'in argümaný bir tamsayý deðil"
#: src/reader.c:843
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr"
#: src/reader.c:867
#, c-format
msgid "expected string constant instead of %s"
msgstr "%s'in yerine sabit dizge beklendi"
#: src/reader.c:1010
#, c-format
msgid "unrecognized: %s"
msgstr "tanýnmayan: %s"
#: src/reader.c:1015
msgid "no input grammar"
msgstr "girdi grameri yok"
#: src/reader.c:1020
#, c-format
msgid "unknown character: %s"
msgstr "bilinmeyen karakter: %s"
#: src/reader.c:1188
#, c-format
msgid "unterminated %guard clause"
msgstr "sonlandýrýlmamýþ %guard yantümcesi"
#: src/reader.c:1355
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "kötü-biçemli kural: baþlangýç simgesini takip eden \":\" yok"
#: src/reader.c:1362
msgid "grammar starts with vertical bar"
msgstr "gramer düþey çubuk ile baþlýyor"
#: src/reader.c:1393
#, c-format
msgid "rule given for %s, which is a token"
msgstr "bir andaç olan %s için verilen kural"
#: src/reader.c:1495
msgid "two @prec's in a row"
msgstr "bir satýrda iki @prec"
#: src/reader.c:1503
#, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ"
#: src/reader.c:1512
msgid "two actions at end of one rule"
msgstr "bir kuralýn sonunda iki eylem"
#: src/reader.c:1526
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
#: src/reader.c:1532
msgid "empty rule for typed nonterminal, and no action"
msgstr "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylembelirtilmemiþ"
#: src/reader.c:1576
#, c-format
msgid "invalid input: %s"
msgstr "geçersiz girdi: %s"
#: src/reader.c:1584
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
#: src/reader.c:1587
msgid "no rules in the input grammar"
msgstr "girdi grameri içinde kurallar yok"
#: src/reader.c:1611
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"simge %s kullanýldý, fakat bir andaç olarak tanýmlanmadý vekurallarý yok"
#: src/reader.c:1716
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "%s ve %s için çeliþen öncelikler"
#: src/reader.c:1728
#, 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:1779
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý"
#: src/reader.c:1792
#, c-format
msgid "the start symbol %s is undefined"
msgstr "baþlangýç simgesi %s tanýmlanmadý"
#: src/reader.c:1794
#, c-format
msgid "the start symbol %s is a token"
msgstr "baþlangýç simgesi %s bir andaçtýr"
#: src/reduce.c:402
msgid "Useless nonterminals:"
msgstr "Yararsýz kurallar:"
#: src/reduce.c:417
msgid "Terminals which are not used:"
msgstr "Kullanýlmayan sabit simgeler:"
#: src/reduce.c:428
msgid "Useless rules:"
msgstr "Yararsýz kurallar:"
#: src/reduce.c:457
msgid ""
"Variables\n"
"---------\n"
"\n"
msgstr ""
"Deðiþkenler\n"
"-----------\n"
"\n"
#: src/reduce.c:459
msgid "Value Sprec Sassoc Tag\n"
msgstr "Deðer Söncel Sbirleþ Etiket\n"
#: src/reduce.c:464
msgid ""
"Rules\n"
"-----\n"
"\n"
msgstr ""
"Kurallar\n"
"--------\n"
"\n"
#: src/reduce.c:475
msgid ""
"Rules interpreted\n"
"-----------------\n"
"\n"
msgstr ""
"Kurallar yorumlandý\n"
"-------------------\n"
"\n"
#: src/reduce.c:492
#, c-format
msgid "%d rules never reduced\n"
msgstr "%d kural asla indirgenmedi\n"
#: src/reduce.c:494
#, c-format
msgid "%s contains "
msgstr "%s içerir "
#: src/reduce.c:498
#, c-format
msgid "%d useless nonterminal%s"
msgstr "%d yararsýz deðiþken simge%s"
#: src/reduce.c:503
msgid " and "
msgstr " ve "
#: src/reduce.c:507
#, c-format
msgid "%d useless rule%s"
msgstr "%d yararsýz kural%s"
#: src/reduce.c:540
#, c-format
msgid "Start symbol %s does not derive any sentence"
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
#: src/reduce.c:553
#, 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
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: `%s' seçeneði belirsiz\n"
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: `--%s' seçeneði argümansýz kullanýlýr\n"
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: seçenek `%c%s' argümansýz kullanýlýr\n"
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
#. --option
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: `--%s' seçeneði bilinmiyor\n"
#. +option or -option
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: `%c%s' seçeneði bilinmiyor\n"
#. 1003.2 specifies the format of this message.
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: kuraldýþý seçenek -- %c\n"
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: geçersiz seçenek -- %c\n"
#. 1003.2 specifies the format of this message.
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: seçenek bir argümanla kullanýlýr -- %c\n"
#: lib/getopt.c:862
#, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: `-W %s' seçeneði belirsiz\n"
#: lib/getopt.c:880
#, c-format
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"
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
#. before exiting when memory is exhausted. Goes through gettext.
#: lib/obstack.c:477 lib/xmalloc.c:66
msgid "memory exhausted"
msgstr "bellek tükendi"
#. 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:259
msgid "`"
msgstr "`"
#: lib/quotearg.c:260
msgid "'"
msgstr "'"
#~ msgid "multiple %%header_extension declarations"
#~ msgstr "çoklu %%header_extension bildirimleri"
#~ msgid "multiple %%source_extension declarations"
#~ msgstr "çoklu %%source_extension bildirimleri"
#~ msgid "vcg graph: no such color."
#~ msgstr "vcg graph: böyle bir renk yok."
#~ msgid "vcg graph: no such text mode"
#~ msgstr "vcg graph: böyle bir metin kipi yok"
#~ msgid "vcg graph: no such shape"
#~ msgstr "vcg graph: böyle bir þekil yok"
#~ msgid "vcg graph: no such decision"
#~ msgstr "vcg graph: böyle bir karar yok"
#~ msgid "vcg graph: no such an orientation"
#~ msgstr "vcg graph: böyle bir konum yok"
#~ msgid "vcg graph: no such an alignement"
#~ msgstr "vcg graph: böyle bir hizalama yok"
#~ msgid "vcg graph: no such an arrow mode"
#~ msgstr "vcg graph: böyle bir yön kipi yok"
#~ msgid "vcg graph: no such crossing_type"
#~ msgstr "vcg graph: böyle bir kesme tipi yok"
#~ msgid "vcg graph: no such view"
#~ msgstr "vcg graph: böyle bir görünüm yok"
#~ msgid "vcg graph: no such linestyle"
#~ msgstr "vcg graph: böyle bir çizgi biçemi yok"
#~ msgid "vcg graph: no such an arrowstyle"
#~ msgstr "vcg graph: böyle bir yön biçemi yok"
-1
View File
@@ -3,4 +3,3 @@
Makefile Makefile
bison bison
*.log *.log
*.flc
+5 -7
View File
@@ -13,19 +13,17 @@ bin_PROGRAMS = bison
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \ bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
derives.c \ derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \ files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
output.c print_graph.c \ output.c \
muscle_tab.c options.c \ print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
print.c reader.c reduce.c symtab.c warshall.c vcg.c
EXTRA_bison_SOURCES = vmsgetargs.c EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \ noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
derives.h \ derives.h \
files.h getargs.h gram.h lalr.h lex.h nullable.h \ files.h getargs.h gram.h lalr.h lex.h nullable.h \
output.h print_graph.h \ output.h state.h \
muscle_tab.h options.h \ print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
print.h reader.h reduce.h state.h symtab.h warshall.h system.h \ vcg.h vcg_defaults.h print_graph.h
types.h vcg.h vcg_defaults.h
pkgdata_DATA = bison.simple bison.hairy pkgdata_DATA = bison.simple bison.hairy
+9 -24
View File
@@ -58,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -67,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
@@ -115,9 +111,8 @@ bin_PROGRAMS = bison
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \ bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
derives.c \ derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \ files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
output.c print_graph.c \ output.c \
muscle_tab.c options.c \ print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
print.c reader.c reduce.c symtab.c warshall.c vcg.c
EXTRA_bison_SOURCES = vmsgetargs.c EXTRA_bison_SOURCES = vmsgetargs.c
@@ -125,10 +120,9 @@ EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \ noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
derives.h \ derives.h \
files.h getargs.h gram.h lalr.h lex.h nullable.h \ files.h getargs.h gram.h lalr.h lex.h nullable.h \
output.h print_graph.h \ output.h state.h \
muscle_tab.h options.h \ print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
print.h reader.h reduce.h state.h symtab.h warshall.h system.h \ vcg.h vcg_defaults.h print_graph.h
types.h vcg.h vcg_defaults.h
pkgdata_DATA = bison.simple bison.hairy pkgdata_DATA = bison.simple bison.hairy
@@ -145,10 +139,9 @@ am_bison_OBJECTS = LR0$U.$(OBJEXT) closure$U.$(OBJEXT) \
complain$U.$(OBJEXT) conflicts$U.$(OBJEXT) derives$U.$(OBJEXT) \ complain$U.$(OBJEXT) conflicts$U.$(OBJEXT) derives$U.$(OBJEXT) \
files$U.$(OBJEXT) getargs$U.$(OBJEXT) gram$U.$(OBJEXT) \ files$U.$(OBJEXT) getargs$U.$(OBJEXT) gram$U.$(OBJEXT) \
lalr$U.$(OBJEXT) lex$U.$(OBJEXT) main$U.$(OBJEXT) \ lalr$U.$(OBJEXT) lex$U.$(OBJEXT) main$U.$(OBJEXT) \
nullable$U.$(OBJEXT) output$U.$(OBJEXT) print_graph$U.$(OBJEXT) \ nullable$U.$(OBJEXT) output$U.$(OBJEXT) print$U.$(OBJEXT) \
muscle_tab$U.$(OBJEXT) options$U.$(OBJEXT) print$U.$(OBJEXT) \
reader$U.$(OBJEXT) reduce$U.$(OBJEXT) symtab$U.$(OBJEXT) \ reader$U.$(OBJEXT) reduce$U.$(OBJEXT) symtab$U.$(OBJEXT) \
warshall$U.$(OBJEXT) vcg$U.$(OBJEXT) warshall$U.$(OBJEXT) vcg$U.$(OBJEXT) print_graph$U.$(OBJEXT)
bison_OBJECTS = $(am_bison_OBJECTS) bison_OBJECTS = $(am_bison_OBJECTS)
bison_LDADD = $(LDADD) bison_LDADD = $(LDADD)
bison_DEPENDENCIES = ../lib/libbison.a bison_DEPENDENCIES = ../lib/libbison.a
@@ -163,8 +156,7 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
@AMDEP_TRUE@ $(DEPDIR)/derives$U.Po $(DEPDIR)/files$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/derives$U.Po $(DEPDIR)/files$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/getargs$U.Po $(DEPDIR)/gram$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/getargs$U.Po $(DEPDIR)/gram$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/lalr$U.Po $(DEPDIR)/lex$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/lalr$U.Po $(DEPDIR)/lex$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/muscle_tab$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/nullable$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/nullable$U.Po $(DEPDIR)/options$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/output$U.Po $(DEPDIR)/print$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/output$U.Po $(DEPDIR)/print$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/print_graph$U.Po $(DEPDIR)/reader$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/print_graph$U.Po $(DEPDIR)/reader$U.Po \
@AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/symtab$U.Po \ @AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/symtab$U.Po \
@@ -245,9 +237,7 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lalr$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lalr$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lex$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lex$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/main$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/main$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/muscle_tab$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/nullable$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/nullable$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/options$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/output$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/output$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print_graph$U.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/print_graph$U.Po@am__quote@
@@ -295,12 +285,8 @@ lex_.c: lex.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lex.c; then echo $(srcdir)/lex.c; else echo lex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lex_.c || rm -f lex_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lex.c; then echo $(srcdir)/lex.c; else echo lex.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > lex_.c || rm -f lex_.c
main_.c: main.c $(ANSI2KNR) main_.c: main.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > main_.c || rm -f main_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > main_.c || rm -f main_.c
muscle_tab_.c: muscle_tab.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/muscle_tab.c; then echo $(srcdir)/muscle_tab.c; else echo muscle_tab.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > muscle_tab_.c || rm -f muscle_tab_.c
nullable_.c: nullable.c $(ANSI2KNR) nullable_.c: nullable.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/nullable.c; then echo $(srcdir)/nullable.c; else echo nullable.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > nullable_.c || rm -f nullable_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/nullable.c; then echo $(srcdir)/nullable.c; else echo nullable.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > nullable_.c || rm -f nullable_.c
options_.c: options.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/options.c; then echo $(srcdir)/options.c; else echo options.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > options_.c || rm -f options_.c
output_.c: output.c $(ANSI2KNR) output_.c: output.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/output.c; then echo $(srcdir)/output.c; else echo output.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > output_.c || rm -f output_.c $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/output.c; then echo $(srcdir)/output.c; else echo output.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > output_.c || rm -f output_.c
print_.c: print.c $(ANSI2KNR) print_.c: print.c $(ANSI2KNR)
@@ -322,8 +308,7 @@ warshall_.c: warshall.c $(ANSI2KNR)
LR0_.$(OBJEXT) closure_.$(OBJEXT) complain_.$(OBJEXT) \ LR0_.$(OBJEXT) closure_.$(OBJEXT) complain_.$(OBJEXT) \
conflicts_.$(OBJEXT) derives_.$(OBJEXT) files_.$(OBJEXT) \ conflicts_.$(OBJEXT) derives_.$(OBJEXT) files_.$(OBJEXT) \
getargs_.$(OBJEXT) gram_.$(OBJEXT) lalr_.$(OBJEXT) lex_.$(OBJEXT) \ getargs_.$(OBJEXT) gram_.$(OBJEXT) lalr_.$(OBJEXT) lex_.$(OBJEXT) \
main_.$(OBJEXT) muscle_tab_.$(OBJEXT) nullable_.$(OBJEXT) \ main_.$(OBJEXT) nullable_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \
options_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \
print_graph_.$(OBJEXT) reader_.$(OBJEXT) reduce_.$(OBJEXT) \ print_graph_.$(OBJEXT) reader_.$(OBJEXT) reduce_.$(OBJEXT) \
symtab_.$(OBJEXT) vcg_.$(OBJEXT) vmsgetargs_.$(OBJEXT) \ symtab_.$(OBJEXT) vcg_.$(OBJEXT) vmsgetargs_.$(OBJEXT) \
warshall_.$(OBJEXT) : $(ANSI2KNR) warshall_.$(OBJEXT) : $(ANSI2KNR)
+40 -205
View File
@@ -1,8 +1,5 @@
/* -*- C -*- */ /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line
/* A Bison parser, made from %%filename
by GNU bison %%version. */
/* Skeleton output parser for bison, /* Skeleton output parser for bison,
Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc. Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
@@ -31,29 +28,6 @@
It was written by Richard Stallman by simplifying the hairy parser It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */ used when %semantic_parser is specified. */
#include <stdio.h>
/* If name_prefix is specify substitute the variables and functions
names. */
#define yyparse %%prefix##parse
#define yylex %%prefix##lex
#define yyerror %%prefix##error
#define yylval %%prefix##lval
#define yychar %%prefix##char
#define yydebug %%prefix##debug
#define yynerrs %%prefix##nerrs
/* Copy the user declarations. */
#line %%input_line "%%filename"
%%prologue
#line %%line "%%skeleton"
#ifndef __cplusplus
# ifndef __STDC__
# define const
# endif
#endif
#ifndef YYSTACK_USE_ALLOCA #ifndef YYSTACK_USE_ALLOCA
# ifdef alloca # ifdef alloca
# define YYSTACK_USE_ALLOCA 1 # define YYSTACK_USE_ALLOCA 1
@@ -104,163 +78,31 @@
# define YYSTACK_ALLOC malloc # define YYSTACK_ALLOC malloc
#endif #endif
#define YYBISON 1 /* Identify Bison output. */
#define YYPURE %%pure /* Identify pure parsers. */
#ifndef YYDEBUG
# define YYDEBUG %%debug
#endif
#line %%input_line "%%filename"
#ifndef YYSTYPE
typedef %%stype YYSTYPE;
#endif
#ifndef YYLTYPE
typedef struct yyltype
{
int first_line;
int first_column;
int last_line;
int last_column;
} yyltype;
# define YYLTYPE %%ltype
#endif
#ifndef YYERROR_VERBOSE
# define YYERROR_VERBOSE %%verbose
#endif
/* Tokens. */
%%tokendef
#define YYFINAL %%final
#define YYFLAG %%flag
#define YYNTBASE %%ntbase
#define YYLAST %%last
#define YYNTOKENS %%ntokens
#define YYNNTS %%nnts
#define YYNRULES %%nrules
#define YYNSTATES %%nstates
#define YYMAXUTOK %%maxtok
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
#define YYTRANSLATE(x) ((unsigned)(x) <= %%maxtok ? yytranslate[x] : %%nsym)
/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
static const char yytranslate[] =
{
%%translate
};
#if YYDEBUG
static const short yyprhs[] =
{
%%prhs
};
static const short yyrhs[] =
{
%%rhs
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
%%rline
};
#endif
#if YYDEBUG || YYERROR_VERBOSE
/* YYTNME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
%%tname
};
#endif
/* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */
static const short yytoknum[] =
{
%%toknum
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
%%r1
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
%%r2
};
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
doesn't specify something else to do. Zero means the default is an
error. */
static const short yydefact[] =
{
%%defact
};
static const short yydefgoto[] =
{
%%defgoto
};
static const short yypact[] =
{
%%pact
};
static const short yypgoto[] =
{
%%pgoto
};
static const short yytable[] =
{
%%table
};
static const short yycheck[] =
{
%%check
};
#define yyerrok (yyerrstatus = 0) #define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY) #define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2 #define YYEMPTY -2
#define YYEOF 0 #define YYEOF 0
#define YYACCEPT goto yyacceptlab #define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab #define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1 #define YYERROR goto yyerrlab1
/* Like YYERROR except do call yyerror. This remains here temporarily /* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC. to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */ Once GCC version 2 has supplanted version 1, this can go. */
#define YYFAIL goto yyerrlab #define YYFAIL goto yyerrlab
#define YYRECOVERING() (!!yyerrstatus) #define YYRECOVERING() (!!yyerrstatus)
#define YYBACKUP(Token, Value) \ #define YYBACKUP(Token, Value) \
do \ do \
if (yychar == YYEMPTY && yylen == 1) \ if (yychar == YYEMPTY && yylen == 1) \
{ \ { \
yychar = (Token); \ yychar = (Token); \
yylval = (Value); \ yylval = (Value); \
yychar1 = YYTRANSLATE (yychar); \ yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \ YYPOPSTACK; \
goto yybackup; \ goto yybackup; \
} \ } \
else \ else \
{ \ { \
yyerror ("syntax error: cannot back up"); \ yyerror ("syntax error: cannot back up"); \
YYERROR; \ YYERROR; \
} \ } \
while (0) while (0)
@@ -268,6 +110,7 @@ while (0)
#define YYTERROR 1 #define YYTERROR 1
#define YYERRCODE 256 #define YYERRCODE 256
/* YYLLOC_DEFAULT -- Compute the default location (before the actions /* YYLLOC_DEFAULT -- Compute the default location (before the actions
are run). are run).
@@ -281,8 +124,6 @@ while (0)
Current.last_column = Rhs[N].last_column; Current.last_column = Rhs[N].last_column;
#endif #endif
/* Definition of YYLSP_NEEDED. */
#define YYLSP_NEEDED %%locations_flag
/* YYLEX -- calling `yylex' with the right arguments. */ /* YYLEX -- calling `yylex' with the right arguments. */
@@ -304,6 +145,7 @@ while (0)
# define YYLEX yylex () # define YYLEX yylex ()
#endif /* !YYPURE */ #endif /* !YYPURE */
/* Enable debugging if requested. */ /* Enable debugging if requested. */
#if YYDEBUG #if YYDEBUG
# define YYDPRINTF(Args) \ # define YYDPRINTF(Args) \
@@ -322,7 +164,7 @@ int yydebug;
/* YYINITDEPTH -- initial size of the parser's stacks. */ /* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH #ifndef YYINITDEPTH
# define YYINITDEPTH %%initdepth # define YYINITDEPTH 200
#endif #endif
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
@@ -332,11 +174,9 @@ int yydebug;
#endif #endif
#ifndef YYMAXDEPTH #ifndef YYMAXDEPTH
# define YYMAXDEPTH %%maxdepth # define YYMAXDEPTH 10000
#endif #endif
/* Define __yy_memcpy. Note that the size argument /* Define __yy_memcpy. Note that the size argument
should be passed with type unsigned int, because that is what the non-GCC should be passed with type unsigned int, because that is what the non-GCC
definitions require. With GCC, __builtin_memcpy takes an arg definitions require. With GCC, __builtin_memcpy takes an arg
@@ -365,11 +205,10 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
while (i-- > 0) while (i-- > 0)
*t++ = *f++; *t++ = *f++;
} }
#endif #endif
#line
#line %%line "%%skeleton"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed /* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *. into yyparse. The argument should have type void *.
@@ -406,7 +245,7 @@ int yyparse (void);
/* The lookahead symbol. */ \ /* The lookahead symbol. */ \
int yychar; \ int yychar; \
\ \
/* The semantic value of the lookahead symbol. */ \ /* The semantic value of the lookahead symbol. */ \
YYSTYPE yylval; \ YYSTYPE yylval; \
\ \
/* Number of parse errors so far. */ \ /* Number of parse errors so far. */ \
@@ -423,7 +262,8 @@ YYLTYPE yylloc;
_YY_DECL_VARIABLES _YY_DECL_VARIABLES
#endif #endif
/* If nonreentrant, generate the variables here. */
/* If nonreentrant, generate the variables here. */
#if !YYPURE #if !YYPURE
YY_DECL_VARIABLES YY_DECL_VARIABLES
@@ -433,7 +273,7 @@ int
yyparse (YYPARSE_PARAM_ARG) yyparse (YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL YYPARSE_PARAM_DECL
{ {
/* If reentrant, generate the variables here. */ /* If reentrant, generate the variables here. */
#if YYPURE #if YYPURE
YY_DECL_VARIABLES YY_DECL_VARIABLES
#endif /* !YYPURE */ #endif /* !YYPURE */
@@ -453,7 +293,7 @@ yyparse (YYPARSE_PARAM_ARG)
Refer to the stacks thru separate pointers, to allow yyoverflow Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */ to reallocate them elsewhere. */
/* The state stack. */ /* The state stack. */
short yyssa[YYINITDEPTH]; short yyssa[YYINITDEPTH];
short *yyss = yyssa; short *yyss = yyssa;
register short *yyssp; register short *yyssp;
@@ -479,6 +319,7 @@ yyparse (YYPARSE_PARAM_ARG)
int yystacksize = YYINITDEPTH; int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0; int yyfree_stacks = 0;
/* The variables used to return semantic value and location from the /* The variables used to return semantic value and location from the
action routines. */ action routines. */
YYSTYPE yyval; YYSTYPE yyval;
@@ -487,7 +328,7 @@ yyparse (YYPARSE_PARAM_ARG)
# endif # endif
/* When reducing, the number of symbols on the RHS of the reduced /* When reducing, the number of symbols on the RHS of the reduced
rule. */ rule. */
int yylen; int yylen;
YYDPRINTF ((stderr, "Starting parse\n")); YYDPRINTF ((stderr, "Starting parse\n"));
@@ -512,13 +353,13 @@ yyparse (YYPARSE_PARAM_ARG)
/*------------------------------------------------------------. /*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate. | | yynewstate -- Push a new state, which is found in yystate. |
`------------------------------------------------------------*/ `------------------------------------------------------------*/
yynewstate: yynewstate:
/* In all cases, when you get here, the value and location stacks /* In all cases, when you get here, the value and location stacks
have just been pushed. so pushing a state here evens the stacks. have just been pushed. so pushing a state here evens the stacks.
*/ */
yyssp++; yyssp++;
yysetstate: yysetstate:
*yyssp = yystate; *yyssp = yystate;
if (yyssp >= yyss + yystacksize - 1) if (yyssp >= yyss + yystacksize - 1)
@@ -575,7 +416,7 @@ yysetstate:
yystacksize *= 2; yystacksize *= 2;
if (yystacksize > YYMAXDEPTH) if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH; yystacksize = YYMAXDEPTH;
# if !YYSTACK_USE_ALLOCA # ifndef YYSTACK_USE_ALLOCA
yyfree_stacks = 1; yyfree_stacks = 1;
# endif # endif
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
@@ -607,6 +448,7 @@ yysetstate:
goto yybackup; goto yybackup;
/*-----------. /*-----------.
| yybackup. | | yybackup. |
`-----------*/ `-----------*/
@@ -633,12 +475,12 @@ yybackup:
yychar = YYLEX; yychar = YYLEX;
} }
/* Convert token to internal form (in yychar1) for indexing tables with. */ /* Convert token to internal form (in yychar1) for indexing tables with */
if (yychar <= 0) /* This means end of input. */ if (yychar <= 0) /* This means end of input. */
{ {
yychar1 = 0; yychar1 = 0;
yychar = YYEOF; /* Don't call YYLEX any more. */ yychar = YYEOF; /* Don't call YYLEX any more */
YYDPRINTF ((stderr, "Now at end of input.\n")); YYDPRINTF ((stderr, "Now at end of input.\n"));
} }
@@ -759,11 +601,8 @@ yyreduce:
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
} }
#endif #endif
switch (yyn) %% actions /* The action file replaces this line. */
{ #line
%%action
}
#line %%line "%%skeleton"
yyvsp -= yylen; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;
@@ -811,7 +650,7 @@ yyerrlab:
{ {
++yynerrs; ++yynerrs;
#if YYERROR_VERBOSE #ifdef YYERROR_VERBOSE
yyn = yypact[yystate]; yyn = yypact[yystate];
if (yyn > YYFLAG && yyn < YYLAST) if (yyn > YYFLAG && yyn < YYLAST)
@@ -839,11 +678,11 @@ yyerrlab:
{ {
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, "'"); strcat (msg, "'");
count++; count++;
} }
@@ -851,26 +690,26 @@ yyerrlab:
yyerror (msg); yyerror (msg);
free (msg); free (msg);
} }
else else
yyerror ("parse error; also virtual memory exceeded"); yyerror ("parse error; also virtual memory exceeded");
} }
else else
#endif /* YYERROR_VERBOSE */ #endif /* YYERROR_VERBOSE */
yyerror ("parse error"); yyerror ("parse error");
} }
goto yyerrlab1; goto yyerrlab1;
/*----------------------------------------------------. /*--------------------------------------------------.
| yyerrlab1 -- error raised explicitly by an action. | | yyerrlab1 -- error raised explicitly by an action |
`----------------------------------------------------*/ `--------------------------------------------------*/
yyerrlab1: yyerrlab1:
if (yyerrstatus == 3) if (yyerrstatus == 3)
{ {
/* If just tried and failed to reuse lookahead token after an /* If just tried and failed to reuse lookahead token after an
error, discard it. */ error, discard it. */
/* Return failure if at end of input. */ /* return failure if at end of input */
if (yychar == YYEOF) if (yychar == YYEOF)
YYABORT; YYABORT;
YYDPRINTF ((stderr, "Discarding token %d (%s).\n", YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
@@ -881,7 +720,7 @@ yyerrlab1:
/* Else will try to reuse lookahead token after shifting the error /* Else will try to reuse lookahead token after shifting the error
token. */ token. */
yyerrstatus = 3; /* Each real token shifted decrements this. */ yyerrstatus = 3; /* Each real token shifted decrements this */
goto yyerrhandle; goto yyerrhandle;
@@ -904,7 +743,7 @@ yyerrdefault:
/*---------------------------------------------------------------. /*---------------------------------------------------------------.
| yyerrpop -- pop the current state because it cannot handle the | | yyerrpop -- pop the current state because it cannot handle the |
| error token. | | error token |
`---------------------------------------------------------------*/ `---------------------------------------------------------------*/
yyerrpop: yyerrpop:
if (yyssp == yyss) if (yyssp == yyss)
@@ -992,7 +831,3 @@ yyabortlab:
} }
return 1; return 1;
} }
#line %%input_line "%%filename"
%%epilogue
+6 -10
View File
@@ -19,14 +19,10 @@
/* Based on error.c and error.h, /* Based on error.c and error.h,
written by David MacKenzie <djm@gnu.ai.mit.edu>. */ written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H #include "system.h"
# include <config.h>
#endif
#include <stdio.h>
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC #if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
# if __STDC__ # ifdef __STDC__
# include <stdarg.h> # include <stdarg.h>
# define VA_START(args, lastarg) va_start(args, lastarg) # define VA_START(args, lastarg) va_start(args, lastarg)
# else # else
@@ -119,7 +115,7 @@ int error_one_per_line;
`--------------------------------*/ `--------------------------------*/
void void
#if defined VA_START && __STDC__ #if defined VA_START && defined __STDC__
warn (const char *message, ...) warn (const char *message, ...)
#else #else
warn (message, va_alist) warn (message, va_alist)
@@ -171,7 +167,7 @@ warn (message, va_alist)
`-----------------------------------------------------------*/ `-----------------------------------------------------------*/
void void
#if defined VA_START && __STDC__ #if defined VA_START && defined __STDC__
complain (const char *message, ...) complain (const char *message, ...)
#else #else
complain (message, va_alist) complain (message, va_alist)
@@ -221,7 +217,7 @@ complain (message, va_alist)
`-------------------------------------------------*/ `-------------------------------------------------*/
void void
#if defined VA_START && __STDC__ #if defined VA_START && defined __STDC__
fatal (const char *message, ...) fatal (const char *message, ...)
#else #else
fatal (message, va_alist) fatal (message, va_alist)
@@ -259,7 +255,7 @@ fatal (message, va_alist)
`------------------------------------------------------------------*/ `------------------------------------------------------------------*/
void void
#if defined VA_START && __STDC__ #if defined VA_START && defined __STDC__
error (int status, int errnum, error (int status, int errnum,
const char *message, ...) const char *message, ...)
#else #else
+1 -1
View File
@@ -23,7 +23,7 @@
extern "C" { extern "C" {
#endif #endif
#if defined (__STDC__) && __STDC__ #ifdef __STDC__
/* Informative messages, but we proceed. */ /* Informative messages, but we proceed. */
+15 -21
View File
@@ -39,6 +39,8 @@ struct obstack graph_obstack;
char *spec_outfile = NULL; /* for -o. */ char *spec_outfile = NULL; /* for -o. */
char *spec_file_prefix = NULL; /* for -b. */ char *spec_file_prefix = NULL; /* for -b. */
char *spec_name_prefix = NULL; /* for -p. */ char *spec_name_prefix = NULL; /* for -p. */
char *spec_graph_file = NULL; /* for -g. */
char *spec_defines_file = NULL; /* for --defines. */
char *infile = NULL; char *infile = NULL;
char *attrsfile = NULL; char *attrsfile = NULL;
@@ -260,20 +262,10 @@ get_extension_index (const char *filename)
static void static void
compute_exts_from_gf (const char *ext) compute_exts_from_gf (const char *ext)
{ {
/* Checks if SRC_EXTENSION is NULL. In the other case, %source_extension src_extension = tr (ext, 'y', 'c');
was specified in the grammar file. */ src_extension = tr (src_extension, 'Y', 'C');
if (src_extension == NULL) header_extension = tr (ext, 'y', 'h');
{ header_extension = tr (header_extension, 'Y', 'H');
src_extension = tr (ext, 'y', 'c');
src_extension = tr (src_extension, 'Y', 'C');
}
/* Checks if HEADER_EXTENSION is NULL. In the other case,
%header_extension was specified in the grammar file. */
if (header_extension == NULL)
{
header_extension = tr (ext, 'y', 'h');
header_extension = tr (header_extension, 'Y', 'H');
}
} }
/* Computes extensions from the given c source file extension. */ /* Computes extensions from the given c source file extension. */
@@ -428,11 +420,13 @@ output_files (void)
compute_base_names (); compute_base_names ();
/* Set default extensions */ /* It the defines filename if not given, we create it. */
if (!src_extension) if (!spec_defines_file)
src_extension = ".c"; spec_defines_file = stringappend (base_name, header_extension);
if (!header_extension)
header_extension = ".h"; /* It the graph filename if not given, we create it. */
if (!spec_graph_file)
spec_graph_file = stringappend (short_base_name, ".vcg");
attrsfile = stringappend (short_base_name, EXT_STYPE_H); attrsfile = stringappend (short_base_name, EXT_STYPE_H);
#ifndef MSDOS #ifndef MSDOS
@@ -447,7 +441,7 @@ output_files (void)
/* Output the header file if wanted. */ /* Output the header file if wanted. */
if (defines_flag) if (defines_flag)
defines_obstack_save (stringappend (base_name, header_extension)); defines_obstack_save (spec_defines_file);
/* If we output only the table, dump the actions in ACTFILE. */ /* If we output only the table, dump the actions in ACTFILE. */
if (no_parser_flag) if (no_parser_flag)
@@ -474,5 +468,5 @@ output_files (void)
stringappend (short_base_name, EXT_OUTPUT)); stringappend (short_base_name, EXT_OUTPUT));
if (graph_flag) if (graph_flag)
obstack_save (&graph_obstack, stringappend (short_base_name, ".vcg")); obstack_save (&graph_obstack, spec_graph_file);
} }
+6 -3
View File
@@ -33,10 +33,16 @@ extern char *spec_name_prefix;
/* File name pfx specified with -b, or 0 if no -b. */ /* File name pfx specified with -b, or 0 if no -b. */
extern char *spec_file_prefix; extern char *spec_file_prefix;
/* File name specified for the output VCG graph. */
extern char *spec_graph_file;
/* File name specified with --defines. */
extern char *spec_defines_file;
/* Read grammar specifications. */ /* Read grammar specifications. */
extern FILE *finput; extern FILE *finput;
/* Output all the action code; precise form depends on which parser. */ /* Output all the action code; precise form depends on which parser. */
extern struct obstack action_obstack; extern struct obstack action_obstack;
@@ -62,9 +68,6 @@ extern struct obstack graph_obstack;
extern char *infile; extern char *infile;
extern char *attrsfile; extern char *attrsfile;
extern const char *src_extension;
extern const char *header_extension;
void open_files PARAMS((void)); void open_files PARAMS((void));
void output_files PARAMS((void)); void output_files PARAMS((void));
+38 -5
View File
@@ -24,8 +24,6 @@
#include "files.h" #include "files.h"
#include "complain.h" #include "complain.h"
#include "getargs.h" #include "getargs.h"
#include "xalloc.h"
#include "options.h"
int debug_flag = 0; int debug_flag = 0;
int defines_flag = 0; int defines_flag = 0;
@@ -41,6 +39,37 @@ int graph_flag = 0;
const char *skeleton = NULL; const char *skeleton = NULL;
extern char *program_name; extern char *program_name;
const char *shortopts = "yvgdhrltknVo:b:p:S:";
static struct option longopts[] =
{
/* Operation modes. */
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"yacc", no_argument, 0, 'y'},
{"fixed-output-files",no_argument, 0, 'y'},
/* Parser. */
{"skeleton", required_argument, 0, 'S'},
{"debug", no_argument, 0, 'd'},
{"locations", no_argument, &locations_flag, 1},
/* was 'a'; apparently unused -wjh */
{"name-prefix", required_argument, 0, 'p'},
{"no-lines", no_argument, 0, 'l'},
{"no-parser", no_argument, 0, 'n'},
{"raw", no_argument, 0, 'r'},
{"token-table", no_argument, 0, 'k'},
/* Output. */
{"defines", optional_argument, 0, 'd'},
{"verbose", no_argument, 0, 'v'},
{"file-prefix", required_argument, 0, 'b'},
{"output-file", required_argument, 0, 'o'},
{"graph", optional_argument, 0, 'g'},
/* Hidden. */
{"statistics", no_argument, &statistics_flag, 1},
{0, 0, 0, 0}
};
/*---------------------------. /*---------------------------.
| Display the help message. | | Display the help message. |
@@ -89,7 +118,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"), stream); -o, --output-file=FILE leave output to FILE\n\
-g, --graph also produce a VCG graph description of the \
automaton\n"), stream);
putc ('\n', stream); putc ('\n', stream);
fputs (_("\ fputs (_("\
@@ -132,7 +163,6 @@ getargs (int argc, char *argv[])
{ {
int c; int c;
create_long_option_table ();
while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != EOF) while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != EOF)
switch (c) switch (c)
{ {
@@ -153,7 +183,9 @@ getargs (int argc, char *argv[])
exit (0); exit (0);
case 'g': case 'g':
/* Here, the -g and --graph=FILE options are differentiated. */
graph_flag = 1; graph_flag = 1;
spec_graph_file = optarg;
break; break;
case 'v': case 'v':
@@ -165,7 +197,9 @@ getargs (int argc, char *argv[])
break; break;
case 'd': case 'd':
/* Here, the -d and --defines options are differentiated. */
defines_flag = 1; defines_flag = 1;
spec_defines_file = optarg;
break; break;
case 'l': case 'l':
@@ -206,7 +240,6 @@ getargs (int argc, char *argv[])
exit (1); exit (1);
} }
XFREE (longopts);
if (optind == argc) if (optind == argc)
{ {
fprintf (stderr, _("%s: no grammar file given\n"), program_name); fprintf (stderr, _("%s: no grammar file given\n"), program_name);
+71 -34
View File
@@ -23,7 +23,6 @@
#include "files.h" #include "files.h"
#include "getopt.h" /* for optarg */ #include "getopt.h" /* for optarg */
#include "symtab.h" #include "symtab.h"
#include "options.h"
#include "lex.h" #include "lex.h"
#include "xalloc.h" #include "xalloc.h"
#include "complain.h" #include "complain.h"
@@ -37,15 +36,17 @@ const char *token_buffer = NULL;
bucket *symval; bucket *symval;
int numval; int numval;
static int unlexed; /* these two describe a token to be reread */ /* these two describe a token to be reread */
static bucket *unlexed_symval; /* by the next call to lex */ static token_t unlexed = tok_undef;
/* by the next call to lex */
static bucket *unlexed_symval = NULL;
void void
init_lex (void) init_lex (void)
{ {
obstack_init (&token_obstack); obstack_init (&token_obstack);
unlexed = -1; unlexed = tok_undef;
} }
@@ -357,12 +358,12 @@ lex (void)
/* Just to make sure. */ /* Just to make sure. */
token_buffer = NULL; token_buffer = NULL;
if (unlexed >= 0) if (unlexed != tok_undef)
{ {
token_t res = unlexed;
symval = unlexed_symval; symval = unlexed_symval;
c = unlexed; unlexed = tok_undef;
unlexed = -1; return res;
return c;
} }
c = skip_white_space (); c = skip_white_space ();
@@ -510,34 +511,67 @@ lex (void)
} }
} }
/* This function is a strcmp, which doesn't differentiate `-' and `_' /* the following table dictates the action taken for the various %
chars. */ directives. A set_flag value causes the named flag to be set. A
retval action returns the code. */
static int struct percent_table_struct
option_strcmp (const char *left, const char *right)
{ {
const unsigned char *l, *r; const char *name;
int c; void *set_flag;
token_t retval;
};
assert(left != NULL && right != NULL); struct percent_table_struct percent_table[] =
l = (const unsigned char *)left; {
r = (const unsigned char *)right; { "token", NULL, tok_token },
while (((c = *l - *r++) == 0 && *l != '\0') { "term", NULL, tok_token },
|| ((*l == '-' || *l == '_') && (*r == '_' || *r == '-'))) { "nterm", NULL, tok_nterm },
l++; { "type", NULL, tok_type },
return c; { "guard", NULL, tok_guard },
} { "union", NULL, tok_union },
{ "expect", NULL, tok_expect },
{ "thong", NULL, tok_thong },
{ "start", NULL, tok_start },
{ "left", NULL, tok_left },
{ "right", NULL, tok_right },
{ "nonassoc", NULL, tok_nonassoc },
{ "binary", NULL, tok_nonassoc },
{ "prec", NULL, tok_prec },
{ "locations", &locations_flag, tok_noop }, /* -l */
{ "no_lines", &no_lines_flag, tok_noop }, /* -l */
{ "raw", NULL, tok_obsolete }, /* -r */
{ "token_table", &token_table_flag, tok_noop }, /* -k */
{ "yacc", &yacc_flag, tok_noop }, /* -y */
{ "fixed_output_files",&yacc_flag, tok_noop }, /* -y */
{ "defines", &defines_flag, tok_noop }, /* -d */
{ "no_parser", &no_parser_flag, tok_noop }, /* -n */
{ "graph", &graph_flag, tok_noop }, /* -g */
#if 0
/* For the time being, this is not enabled yet, while it's possible
though, since we use obstacks. The only risk is with semantic
parsers which will output an `include' of an output file: be sure
that the name included is indeed the name of the output file. */
{ "output_file", &spec_outfile, tok_setopt }, /* -o */
{ "file_prefix", &spec_file_prefix, tok_setopt }, /* -b */
{ "name_prefix", &spec_name_prefix, tok_setopt }, /* -p */
#endif
{ "verbose", &verbose_flag, tok_noop }, /* -v */
{ "debug", &debug_flag, tok_noop }, /* -t */
{ "semantic_parser", &semantic_parser, tok_noop },
{ "pure_parser", &pure_parser, tok_noop },
{ NULL, NULL, tok_illegal}
};
/* Parse a token which starts with %. /* Parse a token which starts with %.
Assumes the % has already been read and discarded. */ Assumes the % has already been read and discarded. */
int token_t
parse_percent_token (void) parse_percent_token (void)
{ {
int c; struct percent_table_struct *tx;
const struct option_table_struct *tx;
c = getc (finput); int c = getc (finput);
switch (c) switch (c)
{ {
@@ -569,8 +603,8 @@ 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);
} }
@@ -580,9 +614,8 @@ parse_percent_token (void)
token_buffer = obstack_finish (&token_obstack); token_buffer = obstack_finish (&token_obstack);
/* table lookup % directive */ /* table lookup % directive */
for (tx = option_table; tx->name; tx++) for (tx = percent_table; tx->name; tx++)
if ((tx->access == opt_percent || tx->access == opt_both) if (strcmp (token_buffer + 1, tx->name) == 0)
&& option_strcmp (token_buffer + 1, tx->name) == 0)
break; break;
if (tx->set_flag) if (tx->set_flag)
@@ -591,7 +624,7 @@ parse_percent_token (void)
return tok_noop; return tok_noop;
} }
switch (tx->ret_val) switch (tx->retval)
{ {
case tok_setopt: case tok_setopt:
*((char **) (tx->set_flag)) = optarg; *((char **) (tx->set_flag)) = optarg;
@@ -601,7 +634,11 @@ parse_percent_token (void)
case tok_obsolete: case tok_obsolete:
fatal (_("`%s' is no longer supported"), token_buffer); fatal (_("`%s' is no longer supported"), token_buffer);
break; break;
default:
/* Other cases do not apply here. */
break;
} }
return tx->ret_val; return tx->retval;
} }
+2 -5
View File
@@ -24,6 +24,7 @@
/* Token-type codes. */ /* Token-type codes. */
typedef enum token_e typedef enum token_e
{ {
tok_undef, /* Not defined. Used to initial token_t vars. */
tok_eof, tok_eof,
tok_identifier, tok_identifier,
tok_comma, tok_comma,
@@ -47,10 +48,6 @@ typedef enum token_e
tok_number, tok_number,
tok_expect, tok_expect,
tok_thong, tok_thong,
tok_hdrext,
tok_srcext,
tok_define,
tok_skel,
tok_noop, tok_noop,
tok_setopt, tok_setopt,
tok_illegal, tok_illegal,
@@ -73,6 +70,6 @@ void read_type_name PARAMS ((FILE *fin));
token_t lex PARAMS ((void)); token_t lex PARAMS ((void));
int parse_percent_token PARAMS ((void)); token_t parse_percent_token PARAMS ((void));
#endif /* !LEX_H_ */ #endif /* !LEX_H_ */
+1 -3
View File
@@ -34,7 +34,6 @@
#include "LR0.h" #include "LR0.h"
#include "conflicts.h" #include "conflicts.h"
#include "print_graph.h" #include "print_graph.h"
#include "muscle_tab.h"
/* The name this program was run with, for messages. */ /* The name this program was run with, for messages. */
char *program_name; char *program_name;
@@ -52,7 +51,6 @@ main (int argc, char *argv[])
lineno = 0; lineno = 0;
getargs (argc, argv); getargs (argc, argv);
muscle_init ();
open_files (); open_files ();
/* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE /* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE
@@ -86,7 +84,7 @@ main (int argc, char *argv[])
/* Print information about results, if requested. */ /* Print information about results, if requested. */
print_results (); print_results ();
/* Output the VCG graph. */ /* Output the VCG graph. */
print_graph (); print_graph ();
/* Output the tables and the parser to ftable. In file output. */ /* Output the tables and the parser to ftable. In file output. */
-126
View File
@@ -1,126 +0,0 @@
/* Macro table manager for Bison,
Copyright 1984, 1989, 2000 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <string.h>
#include "xalloc.h"
#include "system.h"
#include "hash.h"
#include "files.h"
#include "muscle_tab.h"
#include "getargs.h"
struct hash_table muscle_table;
static unsigned long
mhash1 (const void *item)
{
return_STRING_HASH_1 (((muscle_entry_t *) item)->key);
}
static unsigned long
mhash2 (const void *item)
{
return_STRING_HASH_2 (((muscle_entry_t *) item)->key);
}
static int
mcmp (const void *x, const void *y)
{
return strcmp (((muscle_entry_t*) x)->key, ((muscle_entry_t *) y)->key);
}
void
muscle_init (void)
{
hash_init (&muscle_table, MTABSIZE, &mhash1, &mhash2, &mcmp);
/* Version and input file. */
muscle_insert ("version", VERSION);
muscle_insert ("filename", infile);
/* Skeleton use. */
muscle_insert ("skeleton", skeleton);
/* Types. */
muscle_insert ("stype", "int");
muscle_insert ("ltype", "yyltype");
/* Tokens. */
muscle_insert ("tokendef", "");
/* Tables. */
muscle_insert ("rhs", "0");
muscle_insert ("pact", "0");
muscle_insert ("prhs", "0");
muscle_insert ("stos", "0");
muscle_insert ("check", "0");
muscle_insert ("pgoto", "0");
muscle_insert ("table", "0");
muscle_insert ("tname", "0");
muscle_insert ("defact", "0");
muscle_insert ("toknum", "0");
muscle_insert ("defgoto", "0");
muscle_insert ("translate", "0");
/* Various macros. */
muscle_insert ("flag", "0");
muscle_insert ("last", "0");
muscle_insert ("pure", "0");
muscle_insert ("nsym", "0");
muscle_insert ("debug", "0");
muscle_insert ("final", "0");
muscle_insert ("maxtok", "0");
muscle_insert ("ntbase", "0");
muscle_insert ("verbose", "0");
muscle_insert ("prefix", "yy");
/* Default #line formatting. */
muscle_insert ("linef", "#line %d %s\n");
/* No parser macros. */
muscle_insert ("nnts", "0");
muscle_insert ("nrules", "0");
muscle_insert ("nstates", "0");
muscle_insert ("ntokens", "0");
/* Stack parameters. */
muscle_insert ("maxdepth", "10000");
muscle_insert ("initdepth", "200");
/* C++ macros. */
muscle_insert ("name", "Parser");
}
void
muscle_insert (const char *key, const char *value)
{
muscle_entry_t *pair = XMALLOC (muscle_entry_t, 1);
pair->key = key;
pair->value = value;
hash_insert (&muscle_table, pair);
}
const char*
muscle_find (const char *key)
{
muscle_entry_t pair = { key, 0 };
muscle_entry_t *result = hash_find_item (&muscle_table, &pair);
return result ? result->value : 0;
}
-36
View File
@@ -1,36 +0,0 @@
/* Definitions for macrotab.c and callers, part of bison,
Copyright 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef MUSCLE_TAB_H_
# define MUSCLE_TAB_H
# define MTABSIZE 101
typedef struct muscle_entry_s
{
const char *key;
const char *value;
} muscle_entry_t;
void muscle_init PARAMS ((void));
void muscle_insert PARAMS ((const char *key, const char *value));
const char *muscle_find PARAMS ((const char *key));
#endif /* not MUSCLE_TAB_H_ */
-154
View File
@@ -1,154 +0,0 @@
/* Concentrate all options use in bison,
Copyright 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include "xalloc.h"
#include "system.h"
#include "getopt.h"
#include "getargs.h"
#include "gram.h"
#include "symtab.h"
#include "lex.h"
#include "options.h"
/* Shorts options. */
const char *shortopts = "yvgdhrltknVo:b:p:S:";
/* Long options. */
struct option *longopts = NULL;
struct percent_table_struct *percent_table = NULL;
const struct option_table_struct option_table[] =
{
/*
* Command line.
*/
/* Operation modes. */
{opt_cmd_line, "help", no_argument, 0, 0, 'h'},
{opt_cmd_line, "version", no_argument, 0, 0, 'V'},
/* Parser. */
/* was 'a'; apparently unused -wjh */
{opt_cmd_line, "name-prefix", required_argument, 0, 0, 'p'},
/* Output. */
{opt_cmd_line, "file-prefix", required_argument, 0, 0, 'b'},
{opt_cmd_line, "output-file", required_argument, 0, 0, 'o'},
{opt_cmd_line, "graph", no_argument, 0, 0, 'g'},
/* Hidden. */
{opt_cmd_line, "statistics", no_argument, &statistics_flag, 0, 1},
/*
* Percent declarations.
*/
{opt_percent, "token", 0, NULL, tok_token, 0},
{opt_percent, "term", 0, NULL, tok_token, 0},
{opt_percent, "nterm", 0, NULL, tok_nterm, 0},
{opt_percent, "type", 0, NULL, tok_type, 0},
{opt_percent, "guard", 0, NULL, tok_guard, 0},
{opt_percent, "union", 0, NULL, tok_union, 0},
{opt_percent, "expect", 0, NULL, tok_expect, 0},
{opt_percent, "thong", 0, NULL, tok_thong, 0},
{opt_percent, "start", 0, NULL, tok_start, 0},
{opt_percent, "left", 0, NULL, tok_left, 0},
{opt_percent, "right", 0, NULL, tok_right, 0},
{opt_percent, "nonassoc", 0, NULL, tok_nonassoc, 0},
{opt_percent, "binary", 0, NULL, tok_nonassoc, 0},
{opt_percent, "prec", 0, NULL, tok_prec, 0},
#if 0
/* For the time being, this is not enabled yet, while it's possible
though, since we use obstacks. The only risk is with semantic
parsers which will output an `include' of an output file: be sure
that the naem included is indeed the name of the output file. */
/* FIXME Should we activate this options ? */
{opt_both, "output-file", required_argument, &spec_outfile, tok_setopt, 'o'},
{opt_both, "file-prefix", required_argument,&spec_file_prefix,tok_setopt,'b'},
{opt_both, "name-prefix", required_argument,&spec_name_prefix,tok_setopt,'p'},
#endif
{opt_percent, "header-extension", 0, NULL, tok_hdrext, 0},
{opt_percent, "source-extension", 0, NULL, tok_srcext, 0},
{opt_percent, "define", 0, NULL, tok_define, 0},
{opt_percent, "semantic-parser", 0, &semantic_parser, tok_noop, 0},
{opt_percent, "pure-parser", 0, &pure_parser, tok_noop, 0},
/*
* Percent and command line declarations.
*/
/* FIXME Usually option use `-' to separe words on command line
and `_' for percent option. But here the separator are always
the same, the char `-'. */
/* Output. */
{opt_both, "defines", no_argument, &defines_flag, tok_noop, 'd'},
{opt_both, "verbose", no_argument, &verbose_flag, tok_noop, 'v'},
/* Operation modes. */
{opt_both, "fixed-output-files", no_argument, &yacc_flag, tok_noop, 'y'},
{opt_both, "yacc", no_argument, &yacc_flag, tok_noop, 'y'},
/* Parser. */
{opt_both, "debug", no_argument, &debug_flag, tok_noop, 'd'},
{opt_both, "locations", no_argument, &locations_flag, tok_noop, 1},
{opt_both, "no-lines", no_argument, &no_lines_flag, tok_noop, 'l'},
{opt_both, "no-parser", no_argument, &no_parser_flag, tok_noop, 'n'},
{opt_both, "raw", no_argument, 0, tok_obsolete, 'r'},
{opt_both, "skeleton", required_argument, 0, tok_skel, 'S'},
{opt_both, "token-table", no_argument, &token_table_flag, tok_noop, 'k'},
{0, 0, 0, 0, 0, 0}
};
/*--------------------------------------------------------.
| Create the longoptions structure from the option_table, |
| for the getopt file. |
`--------------------------------------------------------*/
void
create_long_option_table ()
{
int i = 0;
int j = 0;
int number_options;
for (number_options = 0; option_table[i].name; i++)
if (option_table[i].access == opt_cmd_line
|| option_table[i].access == opt_both)
++number_options;
longopts = XMALLOC (struct option, number_options + 1);
for (i = 0; option_table[i].name; i++)
if (option_table[i].access == opt_cmd_line
|| option_table[i].access == opt_both)
{
/* Copy the struct information in the longoptions. */
longopts[j].name = option_table[i].name;
longopts[j].has_arg = option_table[i].has_arg;
longopts[j].flag = option_table[i].set_flag;
longopts[j++].val = option_table[i].val;
}
longopts[number_options].name = NULL;
longopts[number_options].has_arg = 0;
longopts[number_options].flag = NULL;
longopts[number_options].val = 0;
}
-62
View File
@@ -1,62 +0,0 @@
/* Concentrate all options use in bison,
Copyright 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifndef OPTIONS_H_
# define OPTIONS_H_
/* opt_access_t and struct option_table_struct need to be declare
here, for the parse_percent_token function in lex.c. */
/* Option accessibility. */
typedef enum opt_access_e
{
opt_cmd_line = 1,
opt_percent,
opt_both
} opt_access_t;
/* This is the general struct, which contains user's options from
command line or in grammar with percent flag. */
struct option_table_struct
{
/* Set the accessibility. */
opt_access_t access;
/* This name is used for long option et percent directives. */
const char *name;
/* Use for command line. */
int has_arg;
/* A set_flag value causes the named flag to be set. */
int *set_flag;
/* A retval action returns the code. */
int ret_val;
/* The short option value, frequently a letter. */
int val;
};
extern const char *shortopts;
extern struct option *longopts;
/* Table which contain all options. */
extern const struct option_table_struct option_table[];
/* Set the longopts variable from option_table. */
void create_long_option_table PARAMS (());
#endif /* !OPTIONS_H_ */
+439 -207
View File
@@ -103,10 +103,11 @@
#include "lalr.h" #include "lalr.h"
#include "reader.h" #include "reader.h"
#include "conflicts.h" #include "conflicts.h"
#include "muscle_tab.h"
extern void berror PARAMS((const char *)); extern void berror PARAMS((const char *));
static int nvectors; static int nvectors;
static int nentries; static int nentries;
static short **froms; static short **froms;
@@ -123,53 +124,210 @@ static short *check;
static int lowzero; static int lowzero;
static int high; static int high;
struct obstack muscle_obstack;
struct obstack output_obstack;
/* FIXME. */
static inline void static inline void
output_table_data (struct obstack *oout, output_short_or_char_table (struct obstack *oout,
short *table_data, const char *comment,
short first, const char *type,
short begin, const char *table_name,
short end) short *short_table,
short first_value,
short begin, short end)
{ {
int i; int i, j;
int j = 1;
obstack_fgrow1 (oout, "%6d", first); if (comment)
for (i = begin; i < end; ++i) obstack_fgrow1 (oout, "/* %s. */\n", comment);
obstack_fgrow3 (oout, "static const %s %s[] =\n{\n %6d",
type, table_name, first_value);
j = 1;
for (i = begin; i < end; i++)
{ {
obstack_1grow (oout, ','); obstack_1grow (oout, ',');
if (j >= 10) if (j >= 10)
{ {
obstack_sgrow (oout, "\n "); obstack_sgrow (oout, "\n ");
j = 1; j = 1;
} }
else else
++j; {
obstack_fgrow1 (oout, "%6d", table_data[i]); j++;
}
obstack_fgrow1 (oout, "%6d", short_table[i]);
} }
obstack_1grow (oout, 0);
obstack_sgrow (oout, "\n};\n");
} }
static inline void
output_short_table (struct obstack *oout,
const char *comment,
const char *table_name,
short *short_table,
short first_value,
short begin, short end)
{
output_short_or_char_table (oout, comment, "short", table_name, short_table,
first_value, begin, end);
}
/*--------------------------------------------------------------.
| output_headers -- Output constant strings to the beginning of |
| certain files. |
`--------------------------------------------------------------*/
/* Don't put the `%s' insides quotes, since it quotearg puts them. */
#define GUARDSTR \
"\n\
#include %s\n\
extern int yyerror;\n\
extern int yycost;\n\
extern char * yymsg;\n\
extern YYSTYPE yyval;\n\
\n\
yyguard(n, yyvsp, yylsp)\n\
register int n;\n\
register YYSTYPE *yyvsp;\n\
register YYLTYPE *yylsp;\n\
{\n\
yyerror = 0;\n\
yycost = 0;\n\
yymsg = 0;\n\
switch (n)\n\
{"
#define ACTSTR \
"\n\
#include %s\n\
extern YYSTYPE yyval;\n\
extern int yychar;\n\
\n\
yyaction(n, yyvsp, yylsp)\n\
register int n;\n\
register YYSTYPE *yyvsp;\n\
register YYLTYPE *yylsp;\n\
{\n\
switch (n)\n\
{"
#define ACTSTR_SIMPLE "\n switch (yyn) {\n"
void
output_headers (void)
{
char *attrsfile_quoted = 0;
if (semantic_parser)
{
/* FIXME: This is *buggy*. ATTRSFILE is not computed yet, since
we are waiting for the full input file to have been read to
be sure of the output file name. So basically, here, a SEGV
is guaranteed. OTOH, currently semantic parsers are not
supported. */
attrsfile_quoted = quotearg_style (c_quoting_style, attrsfile);
obstack_fgrow1 (&guard_obstack, GUARDSTR, attrsfile_quoted);
}
if (no_parser_flag)
return;
if (semantic_parser)
obstack_fgrow1 (&action_obstack, ACTSTR, attrsfile_quoted);
else
obstack_sgrow (&action_obstack, ACTSTR_SIMPLE);
/* Rename certain symbols if -p was specified. */
if (spec_name_prefix)
{
obstack_fgrow1 (&table_obstack,
"#define yyparse %sparse\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yylex %slex\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yyerror %serror\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yylval %slval\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yychar %schar\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yydebug %sdebug\n", spec_name_prefix);
obstack_fgrow1 (&table_obstack,
"#define yynerrs %snerrs\n", spec_name_prefix);
}
}
/*-------------------------------------------------------.
| Output constant strings to the ends of certain files. |
`-------------------------------------------------------*/
void
output_trailers (void)
{
if (semantic_parser)
obstack_sgrow (&guard_obstack, "\n }\n}\n");
obstack_1grow (&action_obstack, '\n');
if (no_parser_flag)
return;
if (semantic_parser)
obstack_sgrow (&action_obstack, " }\n");
obstack_sgrow (&action_obstack, "}\n");
}
static void static void
output_token_translations (void) output_token_translations (void)
{ {
output_table_data (&output_obstack, token_translations, obstack_sgrow (&table_obstack, "\
0, 1, max_user_token_number + 1); \n\
muscle_insert ("translate", obstack_finish (&output_obstack)); /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
if (translations)
{
obstack_fgrow2 (&table_obstack,
"#define YYTRANSLATE(x) ((unsigned)(x) <= %d ? yytranslate[x] : %d)\
\n\
\n",
max_user_token_number, nsyms);
output_short_or_char_table (&table_obstack,
"YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX",
ntokens < 127 ? "char" : "short",
"yytranslate", token_translations,
0, 1, max_user_token_number + 1);
}
else
{
obstack_sgrow (&table_obstack,
"\n#define YYTRANSLATE(x) (x)\n");
}
} }
static void static void
output_gram (void) output_gram (void)
{ {
output_table_data (&output_obstack, rrhs, /* With the ordinary parser,
0, 1, nrules + 1); yyprhs and yyrhs are needed only for yydebug. */
muscle_insert ("prhs", obstack_finish (&output_obstack)); /* With the no_parser option, all tables are generated */
if (!semantic_parser && !no_parser_flag)
obstack_sgrow (&table_obstack, "\n#if YYDEBUG != 0\n");
output_short_table (&table_obstack, NULL, "yyprhs", rrhs,
0, 1, nrules + 1);
{ {
size_t yyrhs_size = 1; size_t yyrhs_size = 1;
@@ -183,26 +341,21 @@ output_gram (void)
for (sp = ritem + 1, i = 1; *sp; ++sp, ++i) for (sp = ritem + 1, i = 1; *sp; ++sp, ++i)
yyrhs[i] = *sp > 0 ? *sp : 0; yyrhs[i] = *sp > 0 ? *sp : 0;
output_table_data (&output_obstack, yyrhs, output_short_table (&table_obstack, NULL, "yyrhs", yyrhs,
ritem[0], 1, yyrhs_size); ritem[0], 1, yyrhs_size);
muscle_insert ("rhs", obstack_finish (&output_obstack));
XFREE (yyrhs); XFREE (yyrhs);
} }
#if 0
if (!semantic_parser && !no_parser_flag) if (!semantic_parser && !no_parser_flag)
obstack_sgrow (&table_obstack, "\n#endif\n"); obstack_sgrow (&table_obstack, "\n#endif\n");
#endif
} }
static void static void
output_stos (void) output_stos (void)
{ {
output_table_data (&output_obstack, accessing_symbol, output_short_table (&table_obstack, NULL, "yystos", accessing_symbol,
0, 1, nstates); 0, 1, nstates);
muscle_insert ("stos", obstack_finish (&output_obstack));
} }
@@ -213,9 +366,34 @@ output_rule_data (void)
int j; int j;
short *short_tab = NULL; short *short_tab = NULL;
output_table_data (&output_obstack, rline, obstack_sgrow (&table_obstack, "\n\
0, 1, nrules + 1); #if YYDEBUG != 0\n");
muscle_insert ("rline", obstack_finish (&output_obstack));
output_short_table (&table_obstack,
"YYRLINE[YYN] -- source line where rule number YYN was defined",
"yyrline", rline,
0, 1, nrules + 1);
obstack_sgrow (&table_obstack, "#endif\n\n");
if (token_table_flag || no_parser_flag)
{
obstack_fgrow1 (&table_obstack, "#define YYNTOKENS %d\n", ntokens);
obstack_fgrow1 (&table_obstack, "#define YYNNTS %d\n", nvars);
obstack_fgrow1 (&table_obstack, "#define YYNRULES %d\n", nrules);
obstack_fgrow1 (&table_obstack, "#define YYNSTATES %d\n", nstates);
obstack_fgrow1 (&table_obstack, "#define YYMAXUTOK %d\n\n",
max_user_token_number);
}
/* Output the table of symbol names. */
if (!token_table_flag && !no_parser_flag)
obstack_sgrow (&table_obstack,
"\n#if YYDEBUG != 0 || defined YYERROR_VERBOSE\n\n");
obstack_sgrow (&table_obstack, "\
/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */\n");
obstack_sgrow (&table_obstack,
"static const char *const yytname[] =\n{\n ");
j = 0; j = 0;
for (i = 0; i < nsyms; i++) for (i = 0; i < nsyms; i++)
@@ -238,61 +416,80 @@ output_rule_data (void)
if (j + strsize > 75) if (j + strsize > 75)
{ {
obstack_sgrow (&output_obstack, "\n "); obstack_sgrow (&table_obstack, "\n ");
j = 2; j = 2;
} }
obstack_1grow (&output_obstack, '\"'); obstack_1grow (&table_obstack, '\"');
for (p = tags[i]; p && *p; p++) for (p = tags[i]; p && *p; p++)
{ {
if (*p == '"' || *p == '\\') if (*p == '"' || *p == '\\')
obstack_fgrow1 (&output_obstack, "\\%c", *p); obstack_fgrow1 (&table_obstack, "\\%c", *p);
else if (*p == '\n') else if (*p == '\n')
obstack_sgrow (&output_obstack, "\\n"); obstack_sgrow (&table_obstack, "\\n");
else if (*p == '\t') else if (*p == '\t')
obstack_sgrow (&output_obstack, "\\t"); obstack_sgrow (&table_obstack, "\\t");
else if (*p == '\b') else if (*p == '\b')
obstack_sgrow (&output_obstack, "\\b"); obstack_sgrow (&table_obstack, "\\b");
else if (*p < 040 || *p >= 0177) else if (*p < 040 || *p >= 0177)
obstack_fgrow1 (&output_obstack, "\\%03o", *p); obstack_fgrow1 (&table_obstack, "\\%03o", *p);
else else
obstack_1grow (&output_obstack, *p); obstack_1grow (&table_obstack, *p);
} }
obstack_sgrow (&output_obstack, "\", "); obstack_sgrow (&table_obstack, "\", ");
j += strsize; j += strsize;
} }
/* add a NULL entry to list of tokens */ /* add a NULL entry to list of tokens */
obstack_sgrow (&output_obstack, "NULL"); obstack_sgrow (&table_obstack, "NULL\n};\n");
/* Finish table and store. */ if (!token_table_flag && !no_parser_flag)
obstack_1grow (&output_obstack, 0); obstack_sgrow (&table_obstack, "#endif\n\n");
muscle_insert ("tname", obstack_finish (&output_obstack));
/* Output YYTOKNUM. */ /* Output YYTOKNUM. */
output_table_data (&output_obstack, user_toknums, if (token_table_flag)
0, 1, ntokens + 1); {
muscle_insert ("toknum", obstack_finish (&output_obstack)); output_short_table (&table_obstack,
"YYTOKNUM[YYLEX] -- Index in YYTNAME corresponding to YYLEX",
"yytoknum", user_toknums,
0, 1, ntokens + 1);
}
/* Output YYR1. */ /* Output YYR1. */
output_table_data (&output_obstack, rlhs, output_short_table (&table_obstack,
0, 1, nrules + 1); "YYR1[YYN] -- Symbol number of symbol that rule YYN derives",
muscle_insert ("r1", obstack_finish (&output_obstack)); "yyr1", rlhs,
0, 1, nrules + 1);
XFREE (rlhs + 1); XFREE (rlhs + 1);
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] = rrhs[i + 1] - rrhs[i] - 1;
short_tab[nrules] = nitems - rrhs[nrules] - 1; short_tab[nrules] = nitems - rrhs[nrules] - 1;
output_table_data (&output_obstack, short_tab, output_short_table (&table_obstack,
0, 1, nrules + 1); "YYR2[YYN] -- Number of symbols composing right hand side of rule YYN",
muscle_insert ("r2", obstack_finish (&output_obstack)); "yyr2", short_tab,
0, 1, nrules + 1);
obstack_1grow (&table_obstack, '\n');
XFREE (short_tab); XFREE (short_tab);
XFREE (rrhs + 1); XFREE (rrhs + 1);
} }
static void
output_defines (void)
{
obstack_fgrow1 (&table_obstack, "\n\n#define\tYYFINAL\t\t%d\n", final_state);
obstack_fgrow1 (&table_obstack, "#define\tYYFLAG\t\t%d\n", MINSHORT);
obstack_fgrow1 (&table_obstack, "#define\tYYNTBASE\t%d\n", ntokens);
}
/*------------------------------------------------------------------. /*------------------------------------------------------------------.
| Decide what to do for each type of token if seen as the lookahead | | Decide what to do for each type of token if seen as the lookahead |
| token in specified state. The value returned is used as the | | token in specified state. The value returned is used as the |
@@ -533,12 +730,15 @@ token_actions (void)
yydefact[i] = action_row (i); yydefact[i] = action_row (i);
save_row (i); save_row (i);
} }
output_table_data (&output_obstack, yydefact,
yydefact[0], 1, nstates);
muscle_insert ("defact", obstack_finish (&output_obstack));
XFREE (actrow); XFREE (actrow);
output_short_table (&table_obstack,
"YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE\n\
doesn't specify something else to do. Zero means the default is an\n\
error",
"yydefact", yydefact,
yydefact[0], 1, nstates);
obstack_1grow (&table_obstack, '\n');
XFREE (yydefact); XFREE (yydefact);
} }
@@ -665,9 +865,10 @@ static void
goto_actions (void) goto_actions (void)
{ {
int i; int i;
short *yydefgoto = XMALLOC (short, nsyms - ntokens);
short *yydefgoto = XMALLOC (short, nsyms - ntokens);
state_count = XCALLOC (short, nstates); state_count = XCALLOC (short, nstates);
for (i = ntokens; i < nsyms; ++i) for (i = ntokens; i < nsyms; ++i)
{ {
int default_state = default_goto (i); int default_state = default_goto (i);
@@ -675,9 +876,8 @@ goto_actions (void)
yydefgoto[i - ntokens] = default_state; yydefgoto[i - ntokens] = default_state;
} }
output_table_data (&output_obstack, yydefgoto, output_short_table (&table_obstack, NULL, "yydefgoto", yydefgoto,
yydefgoto[0], 1, nsyms - ntokens); yydefgoto[0], 1, nsyms - ntokens);
muscle_insert ("defgoto", obstack_finish (&output_obstack));
XFREE (state_count); XFREE (state_count);
XFREE (yydefgoto); XFREE (yydefgoto);
@@ -879,15 +1079,13 @@ pack_table (void)
static void static void
output_base (void) output_base (void)
{ {
/* Output pact. */ output_short_table (&table_obstack, NULL, "yypact", base,
output_table_data (&output_obstack, base, base[0], 1, nstates);
base[0], 1, nstates);
muscle_insert ("pact", obstack_finish (&output_obstack));
/* Output pgoto. */ obstack_1grow (&table_obstack, '\n');
output_table_data (&output_obstack, base,
base[nstates], nstates + 1, nvectors); output_short_table (&table_obstack, NULL, "yypgoto", base,
muscle_insert ("pgoto", obstack_finish (&output_obstack)); base[nstates], nstates + 1, nvectors);
XFREE (base); XFREE (base);
} }
@@ -896,9 +1094,9 @@ output_base (void)
static void static void
output_table (void) output_table (void)
{ {
output_table_data (&output_obstack, table, obstack_fgrow1 (&table_obstack, "\n\n#define\tYYLAST\t\t%d\n\n\n", high);
table[0], 1, high + 1); output_short_table (&table_obstack, NULL, "yytable", table,
muscle_insert ("table", obstack_finish (&output_obstack)); table[0], 1, high + 1);
XFREE (table); XFREE (table);
} }
@@ -906,9 +1104,8 @@ output_table (void)
static void static void
output_check (void) output_check (void)
{ {
output_table_data (&output_obstack, check, output_short_table (&table_obstack, NULL, "yycheck", check,
check[0], 1, high + 1); check[0], 1, high + 1);
muscle_insert ("check", obstack_finish (&output_obstack));
XFREE (check); XFREE (check);
} }
@@ -940,81 +1137,29 @@ output_actions (void)
sort_actions (); sort_actions ();
pack_table (); pack_table ();
obstack_1grow (&table_obstack, '\n');
output_base (); output_base ();
output_table (); output_table ();
obstack_1grow (&table_obstack, '\n');
output_check (); output_check ();
} }
/*------------------------------------------.
/*------------------------------------------------------------. | Copy the parser code into TABLE_OBSTACK. |
| Copy the parser code from SKEL_FILENAME into OOUT obstack. | `------------------------------------------*/
| and do the muscle substitution. |
`------------------------------------------------------------*/
static void static void
output_parser (const char *skel_filename, struct obstack *oout) output_parser (void)
{ {
int c; int c;
FILE *fskel; FILE *fskel;
size_t line; size_t line;
int actions_dumped = 0;
fskel = xfopen (skel_filename, "r"); if (pure_parser)
obstack_sgrow (&table_obstack, "#define YYPURE 1\n\n");
/* New output code. */ /* Loop over lines in the standard parser file. */
line = 1;
c = getc (fskel);
while (c != EOF)
{
if (c != '%')
{
if (c == '\n')
++line;
obstack_1grow (oout, c);
c = getc (fskel);
}
else if ((c = getc (fskel)) == '%')
{
/* Read the muscle. */
const char *muscle_key = 0;
const char *muscle_value = 0;
while (isalnum (c = getc (fskel)) || c == '_')
obstack_1grow (&muscle_obstack, c);
obstack_1grow (&muscle_obstack, 0);
/* Output the right value, or see if it's something special. */
muscle_key = obstack_finish (&muscle_obstack);
muscle_value = muscle_find (muscle_key);
if (muscle_value)
obstack_sgrow (oout, muscle_value);
else if (!strcmp (muscle_key, "line"))
obstack_fgrow1 (oout, "%d", line + 1);
else if (!strcmp (muscle_key, "input_line"))
obstack_fgrow1 (oout, "%d", lineno);
/* FIXME: Insert the code to recognize %%sub-skeleton for exemple. */
else
{
obstack_sgrow (oout, "%%");
obstack_sgrow (oout, muscle_key);
}
}
else
obstack_1grow (oout, '%');
}
/* End. */
xfclose (fskel);
}
/*----------------------------------------.
| Prepare the master parser to be output |
`----------------------------------------*/
static void
output_master_parser (void)
{
if (!skeleton) if (!skeleton)
{ {
if (semantic_parser) if (semantic_parser)
@@ -1022,7 +1167,130 @@ output_master_parser (void)
else else
skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE); skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
} }
output_parser (skeleton, &table_obstack); fskel = xfopen (skeleton, "r");
/* Set LINE to 2, not 1: `#line LINENUM' -- Here LINENUM is a
decimal integer constant. This specifies that the line number of
the *following* line of input, in its original source file, was
LINENUM. */
line = 2;
while (1)
{
enum line_type_e
{
regular_line,
sync_line, /* #line. */
actions_line /* %% actions. */
};
enum line_type_e line_type = regular_line;
c = getc (fskel);
/* Is this line special? */
if (c == '#')
{
/* See if it's a `#line' line. */
if ((c = getc (fskel)) == 'l')
if ((c = getc (fskel)) == 'i')
if ((c = getc (fskel)) == 'n')
if ((c = getc (fskel)) == 'e')
line_type = sync_line;
else
obstack_sgrow (&table_obstack, "#lin");
else
obstack_sgrow (&table_obstack, "#li");
else
obstack_sgrow (&table_obstack, "#l");
else
obstack_sgrow (&table_obstack, "#");
}
else if (c == '%')
{
/* See if it's a `%% actions' line. */
if ((c = getc (fskel)) == '%')
if ((c = getc (fskel)) == ' ')
if ((c = getc (fskel)) == 'a')
if ((c = getc (fskel)) == 'c')
if ((c = getc (fskel)) == 't')
if ((c = getc (fskel)) == 'i')
if ((c = getc (fskel)) == 'o')
if ((c = getc (fskel)) == 'n')
if ((c = getc (fskel)) == 's')
line_type = actions_line;
else
obstack_sgrow (&table_obstack, "%% action");
else
obstack_sgrow (&table_obstack, "%% actio");
else
obstack_sgrow (&table_obstack, "%% acti");
else
obstack_sgrow (&table_obstack, "%% act");
else
obstack_sgrow (&table_obstack, "%% ac");
else
obstack_sgrow (&table_obstack, "%% a");
else
obstack_sgrow (&table_obstack, "%% ");
else
obstack_sgrow (&table_obstack, "%%");
else
obstack_sgrow (&table_obstack, "%");
}
switch (line_type)
{
case sync_line:
if (!no_lines_flag)
obstack_fgrow2 (&table_obstack, "#line %d %s\n",
line, quotearg_style (c_quoting_style, skeleton));
/* Skip the end of line. */
for (; c != '\n' && c != EOF; c = getc (fskel))
/* nothing */;
break;
case actions_line:
{
size_t size = obstack_object_size (&action_obstack);
actions_dumped++;
assert (actions_dumped == 1);
obstack_grow (&table_obstack,
obstack_finish (&action_obstack),
size);
}
/* Skip the end of line. */
for (; c != '\n' && c != EOF; c = getc (fskel))
/* nothing */;
break;
case regular_line:
for (; c != '\n' && c != EOF; c = getc (fskel))
obstack_1grow (&table_obstack, c);
}
if (c == EOF)
break;
obstack_1grow (&table_obstack, c);
line++;
}
assert (actions_dumped == 1);
xfclose (fskel);
}
static void
output_program (void)
{
int c;
if (!no_lines_flag)
obstack_fgrow2 (&table_obstack, "#line %d %s\n",
lineno, quotearg_style (c_quoting_style, infile));
while ((c = getc (finput)) != EOF)
obstack_1grow (&table_obstack, c);
} }
@@ -1040,55 +1308,6 @@ free_itemsets (void)
} }
} }
/* FIXME. */
#define MUSCLE_INSERT_INT(Key, Value) \
{ \
obstack_fgrow1 (&muscle_obstack, "%d", Value); \
obstack_1grow (&muscle_obstack, 0); \
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
}
#define MUSCLE_INSERT_STRING(Key, Value) \
{ \
obstack_sgrow (&muscle_obstack, Value); \
obstack_1grow (&muscle_obstack, 0); \
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
}
#define MUSCLE_INSERT_PREFIX(Key, Value) \
{ \
obstack_fgrow2 (&muscle_obstack, "%s%s", spec_name_prefix, Value); \
obstack_1grow (&muscle_obstack, 0); \
muscle_insert (Key, obstack_finish (&muscle_obstack)); \
}
static void
prepare (void)
{
MUSCLE_INSERT_INT ("last", high);
MUSCLE_INSERT_INT ("flag", MINSHORT);
MUSCLE_INSERT_INT ("pure", pure_parser);
MUSCLE_INSERT_INT ("nsym", nsyms);
MUSCLE_INSERT_INT ("debug", debug_flag);
MUSCLE_INSERT_INT ("final", final_state);
MUSCLE_INSERT_INT ("maxtok", max_user_token_number);
MUSCLE_INSERT_INT ("ntbase", ntokens);
MUSCLE_INSERT_INT ("verbose", 0);
MUSCLE_INSERT_INT ("nnts", nvars);
MUSCLE_INSERT_INT ("nrules", nrules);
MUSCLE_INSERT_INT ("nstates", nstates);
MUSCLE_INSERT_INT ("ntokens", ntokens);
MUSCLE_INSERT_INT ("locations_flag", locations_flag);
/* We need to save the actions in the muscle %%action. */
muscle_insert ("action", obstack_finish (&action_obstack));
if (spec_name_prefix)
MUSCLE_INSERT_STRING ("prefix", spec_name_prefix);
}
/*----------------------------------------------------------. /*----------------------------------------------------------.
| Output the parsing tables and the parser code to ftable. | | Output the parsing tables and the parser code to ftable. |
@@ -1097,29 +1316,42 @@ prepare (void)
void void
output (void) output (void)
{ {
obstack_init (&output_obstack); /* output_token_defines(ftable); / * JF put out token defines FIRST */
/* If using a simple parser the definition of YYSTYPE are put into
TABLE_OBSTACK. */
if (!semantic_parser)
{
size_t size = obstack_object_size (&attrs_obstack);
obstack_grow (&table_obstack, obstack_finish (&attrs_obstack), size);
}
reader_output_yylsp (&table_obstack);
if (debug_flag)
obstack_sgrow (&table_obstack, "\
#ifndef YYDEBUG\n\
# define YYDEBUG 1\n\
#endif\n\
\n");
if (semantic_parser)
obstack_fgrow1 (&table_obstack, "#include %s\n",
quotearg_style (c_quoting_style, attrsfile));
if (!no_parser_flag)
obstack_sgrow (&table_obstack, "#include <stdio.h>\n\n");
free_itemsets (); free_itemsets ();
output_defines ();
output_token_translations (); output_token_translations ();
/* if (semantic_parser) */
/* This is now unconditional because debugging printouts can use it. */
output_gram (); output_gram ();
XFREE (ritem); XFREE (ritem);
if (semantic_parser) if (semantic_parser)
output_stos (); output_stos ();
output_rule_data (); output_rule_data ();
output_actions (); output_actions ();
if (!no_parser_flag)
#if 0 output_parser ();
if (!no_parser_flag) */ output_program ();
#endif
prepare ();
/* Copy definitions in directive. */
muscle_insert ("prologue", obstack_finish (&attrs_obstack));
output_master_parser ();
obstack_free (&muscle_obstack, 0);
obstack_free (&output_obstack, 0);
obstack_free (&action_obstack, 0);
} }
+6
View File
@@ -21,6 +21,12 @@
#ifndef OUTPUT_H_ #ifndef OUTPUT_H_
# define OUTPUT_H_ # define OUTPUT_H_
/* Output constant strings to the beginning of certain files. */
void output_headers PARAMS ((void));
/* Output constant strings to the ends of certain files. */
void output_trailers PARAMS ((void));
/* Output the parsing tables and the parser code to FTABLE. */ /* Output the parsing tables and the parser code to FTABLE. */
void output PARAMS ((void)); void output PARAMS ((void));
+11 -6
View File
@@ -36,7 +36,7 @@
static graph_t graph; static graph_t graph;
static unsigned node_output_size = 0; static size_t node_output_size = 0;
/* Return an unambiguous printable representated, allocated in slot 0, /* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */ for NAME, suitable for C strings. */
@@ -246,10 +246,15 @@ print_state (int state)
} }
/* `obstack_cat' NODE_OBSTACK to GRAPH_OBSTACK. */ /* `obstack_cat' NODE_OBSTACK to GRAPH_OBSTACK. */
obstack_grow (&graph_obstack, {
obstack_base (&node_obstack), size_t obs_size;
obstack_object_size (&node_obstack));
obstack_finish (&node_obstack); obs_size = obstack_object_size (&node_obstack);
obstack_grow (&graph_obstack,
obstack_base (&node_obstack),
obs_size);
obstack_free (&node_obstack, 0);
}
} }
@@ -268,7 +273,7 @@ print_graph (void)
#endif #endif
graph.display_edge_labels = yes; graph.display_edge_labels = yes;
graph.layoutalgorithm = 0; graph.layoutalgorithm = normal;
graph.port_sharing = no; graph.port_sharing = no;
graph.finetuning = yes; graph.finetuning = yes;
+138 -177
View File
@@ -28,14 +28,12 @@
#include "files.h" #include "files.h"
#include "xalloc.h" #include "xalloc.h"
#include "symtab.h" #include "symtab.h"
#include "options.h"
#include "lex.h" #include "lex.h"
#include "gram.h" #include "gram.h"
#include "complain.h" #include "complain.h"
#include "output.h" #include "output.h"
#include "reader.h" #include "reader.h"
#include "conflicts.h" #include "conflicts.h"
#include "muscle_tab.h"
/* Number of slots allocated (but not necessarily used yet) in `rline' */ /* Number of slots allocated (but not necessarily used yet) in `rline' */
static int rline_allocated; static int rline_allocated;
@@ -158,12 +156,11 @@ get_type_name (int n, symbol_list * rule)
`------------------------------------------------------------*/ `------------------------------------------------------------*/
static inline void static inline void
copy_string2 (FILE *fin, struct obstack *oout, int match, int store) copy_string (FILE *fin, struct obstack *oout, int match)
{ {
int c; int c;
if (store) obstack_1grow (oout, match);
obstack_1grow (oout, match);
c = getc (fin); c = getc (fin);
@@ -195,30 +192,9 @@ copy_string2 (FILE *fin, struct obstack *oout, int match, int store)
c = getc (fin); c = getc (fin);
} }
if (store) obstack_1grow (oout, c);
obstack_1grow (oout, c);
} }
/* FIXME. */
static inline void
copy_string (FILE *fin, struct obstack *oout, int match)
{
copy_string2 (fin, oout, match, 1);
}
/* FIXME. */
static inline void
copy_identifier (FILE *fin, struct obstack *oout)
{
int c;
while (isalnum (c = getc (fin)) || c == '_')
obstack_1grow (oout, c);
ungetc (c, fin);
}
/*-----------------------------------------------------------------. /*-----------------------------------------------------------------.
| Dump the wannabee comment from IN to OUT1 and OUT2 (which can be | | Dump the wannabee comment from IN to OUT1 and OUT2 (which can be |
@@ -427,14 +403,9 @@ copy_definition (void)
/* -1 while reading a character if prev char was %. */ /* -1 while reading a character if prev char was %. */
int after_percent; int after_percent;
#if 0
if (!no_lines_flag) if (!no_lines_flag)
{ obstack_fgrow2 (&attrs_obstack, "#line %d %s\n",
obstack_fgrow2 (&attrs_obstack, muscle_find ("linef"), lineno, quotearg_style (c_quoting_style, infile));
lineno, quotearg_style (c_quoting_style,
muscle_find("filename")));
}
#endif
after_percent = 0; after_percent = 0;
@@ -491,8 +462,8 @@ copy_definition (void)
static void static void
parse_token_decl (symbol_class what_is, symbol_class what_is_not) parse_token_decl (symbol_class what_is, symbol_class what_is_not)
{ {
token_t token = 0; token_t token = tok_undef;
char *typename = 0; char *typename = NULL;
/* The symbol being defined. */ /* The symbol being defined. */
struct bucket *symbol = NULL; struct bucket *symbol = NULL;
@@ -735,9 +706,9 @@ token_buffer);
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| Copy the union declaration into the stype muscle | | Copy the union declaration into ATTRS_OBSTACK (and fdefines), |
| (and fdefines), where it is made into the definition of | | where it is made into the definition of YYSTYPE, the type of |
| YYSTYPE, the type of elements of the parser value stack. | | elements of the parser value stack. |
`--------------------------------------------------------------*/ `--------------------------------------------------------------*/
static void static void
@@ -745,18 +716,19 @@ parse_union_decl (void)
{ {
int c; int c;
int count = 0; int count = 0;
struct obstack union_obstack;
if (typed) if (typed)
complain (_("multiple %s declarations"), "%union"); complain (_("multiple %s declarations"), "%union");
typed = 1; typed = 1;
if (no_lines_flag) if (!no_lines_flag)
obstack_fgrow2 (&attrs_obstack, "\n#line %d %s\n",
lineno, quotearg_style (c_quoting_style, infile));
else
obstack_1grow (&attrs_obstack, '\n'); obstack_1grow (&attrs_obstack, '\n');
obstack_init (&union_obstack); obstack_sgrow (&attrs_obstack, "typedef union");
obstack_sgrow (&union_obstack, "union");
if (defines_flag) if (defines_flag)
obstack_sgrow (&defines_obstack, "typedef union"); obstack_sgrow (&defines_obstack, "typedef union");
@@ -764,9 +736,14 @@ parse_union_decl (void)
while (c != EOF) while (c != EOF)
{ {
obstack_1grow (&union_obstack, c);
if (defines_flag) /* If C contains '/', it is output by copy_comment (). */
obstack_1grow (&defines_obstack, c); if (c != '/')
{
obstack_1grow (&attrs_obstack, c);
if (defines_flag)
obstack_1grow (&defines_obstack, c);
}
switch (c) switch (c)
{ {
@@ -775,7 +752,7 @@ parse_union_decl (void)
break; break;
case '/': case '/':
copy_comment2 (finput, &defines_obstack, &union_obstack); copy_comment2 (finput, &defines_obstack, &attrs_obstack);
break; break;
case '{': case '{':
@@ -788,21 +765,19 @@ parse_union_decl (void)
count--; count--;
if (count <= 0) if (count <= 0)
{ {
obstack_sgrow (&attrs_obstack, " YYSTYPE;\n");
if (defines_flag) if (defines_flag)
obstack_sgrow (&defines_obstack, " YYSTYPE;\n"); obstack_sgrow (&defines_obstack, " YYSTYPE;\n");
/* 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 != ';')
ungetc (c, finput); ungetc (c, finput);
obstack_1grow (&union_obstack, 0);
muscle_insert ("stype", obstack_finish (&union_obstack));
return; return;
} }
} }
c = getc (finput); c = getc (finput);
} }
} }
@@ -904,88 +879,60 @@ parse_thong_decl (void)
nsyms--; nsyms--;
} }
/* FIXME. */
static void /*-----------------------------------------------------------------------------.
parse_muscle_decl (void) | Parse a double quoted parameter. It was used for %{source,header}_extension. |
| For the moment, It is not used since extension features have been removed. |
`-----------------------------------------------------------------------------*/
#if 0
static const char *
parse_dquoted_param (const char *from)
{ {
int ch = ungetc (skip_white_space (), finput); char buff[32];
char* muscle_key; int c;
char* muscle_value; int i;
/* Read key. */ c = skip_white_space ();
if (!isalpha (ch) && ch != '_')
if (c != '"')
{ {
complain (_("invalid %s declaration"), "%define"); ungetc (c, finput);
skip_to_char ('%'); complain (_("invalid %s declaration"), from);
return; return NULL;
} }
copy_identifier (finput, &muscle_obstack);
obstack_1grow (&muscle_obstack, 0);
muscle_key = obstack_finish (&muscle_obstack);
/* Read value. */ c = getc (finput);
ch = skip_white_space (); for (i = 0; (c >= '!') && (c <= '~'); i++)
if (ch != '"')
{ {
ungetc (ch, finput); if (c == '"')
if (ch != EOF) break;
if (c == '\\')
{ {
complain (_("invalid %s declaration"), "%define"); c = getc (finput);
skip_to_char ('%'); if ((c < '!') && (c > '~'))
return; break;
} }
else
fatal (_("Premature EOF after %s"), "\""); buff[i] = c;
c = getc (finput);
} }
copy_string2 (finput, &muscle_obstack, '"', 0); buff[i] = '\0';
obstack_1grow (&muscle_obstack, 0);
muscle_value = obstack_finish (&muscle_obstack);
/* Store the (key, value) pair in the environment. */ if (c != '"')
muscle_insert (muscle_key, muscle_value); {
ungetc (c, finput);
complain (_("invalid %s declaration"), from);
return NULL;
}
return xstrdup (buff);
} }
#endif
/*----------------------------------.
| Parse what comes after %skeleton. |
`----------------------------------*/
void
parse_skel_decl (void)
{
/* Complete with parse_dquoted_param () on the CVS branch 1.29. */
}
/*------------------------------------------.
| Parse what comes after %header_extension. |
`------------------------------------------*/
static void
parse_header_extension_decl (void)
{
char buff[32];
if (header_extension)
complain (_("multiple %%header_extension declarations"));
fscanf (finput, "%s", buff);
header_extension = xstrdup (buff);
}
/*------------------------------------------.
| Parse what comes after %source_extension. |
`------------------------------------------*/
static void
parse_source_extension_decl (void)
{
char buff[32];
if (src_extension)
complain (_("multiple %%source_extension declarations"));
fscanf (finput, "%s", buff);
src_extension = xstrdup (buff);
}
/*----------------------------------------------------------------. /*----------------------------------------------------------------.
| Read from finput until `%%' is seen. Discard the `%%'. Handle | | Read from finput until `%%' is seen. Discard the `%%'. Handle |
@@ -1056,22 +1003,6 @@ read_declarations (void)
parse_assoc_decl (non_assoc); parse_assoc_decl (non_assoc);
break; break;
case tok_hdrext:
parse_header_extension_decl ();
break;
case tok_srcext:
parse_source_extension_decl ();
break;
case tok_define:
parse_muscle_decl ();
break;
case tok_skel:
parse_skel_decl ();
break;
case tok_noop: case tok_noop:
break; break;
@@ -1110,13 +1041,14 @@ copy_action (symbol_list *rule, int stack_offset)
if (semantic_parser) if (semantic_parser)
stack_offset = 0; stack_offset = 0;
obstack_fgrow1 (&action_obstack, "\ncase %d:\n", nrules); sprintf (buf, "\ncase %d:\n", nrules);
obstack_grow (&action_obstack, buf, strlen (buf));
if (!no_lines_flag) if (!no_lines_flag)
{ {
obstack_fgrow2 (&action_obstack, muscle_find ("linef"), sprintf (buf, "#line %d %s\n",
lineno, quotearg_style (c_quoting_style, lineno, quotearg_style (c_quoting_style, infile));
muscle_find ("filename"))); obstack_grow (&action_obstack, buf, strlen (buf));
} }
obstack_1grow (&action_obstack, '{'); obstack_1grow (&action_obstack, '{');
@@ -1202,9 +1134,8 @@ copy_guard (symbol_list *rule, int stack_offset)
obstack_fgrow1 (&guard_obstack, "\ncase %d:\n", nrules); obstack_fgrow1 (&guard_obstack, "\ncase %d:\n", nrules);
if (!no_lines_flag) if (!no_lines_flag)
obstack_fgrow2 (&guard_obstack, muscle_find ("linef"), obstack_fgrow2 (&guard_obstack, "#line %d %s\n",
lineno, quotearg_style (c_quoting_style, lineno, quotearg_style (c_quoting_style, infile));
muscle_find ("filename")));
obstack_1grow (&guard_obstack, '{'); obstack_1grow (&guard_obstack, '{');
count = 0; count = 0;
@@ -1655,6 +1586,22 @@ readgram (void)
if (nrules == 0) if (nrules == 0)
fatal (_("no rules in the input grammar")); fatal (_("no rules in the input grammar"));
/* JF put out same default YYSTYPE as YACC does */
if (typed == 0
&& !value_components_used)
{
/* We used to use `unsigned long' as YYSTYPE on MSDOS,
but it seems better to be consistent.
Most programs should declare their own type anyway. */
obstack_sgrow (&attrs_obstack,
"#ifndef YYSTYPE\n#define YYSTYPE int\n#endif\n");
if (defines_flag)
obstack_sgrow (&defines_obstack, "\
# ifndef YYSTYPE\n\
# define YYSTYPE int\n\
# endif\n");
}
/* Report any undefined symbols and consider them nonterminals. */ /* Report any undefined symbols and consider them nonterminals. */
for (bp = firstsymbol; bp; bp = bp->next) for (bp = firstsymbol; bp; bp = bp->next)
@@ -1669,25 +1616,6 @@ readgram (void)
ntokens = nsyms - nvars; ntokens = nsyms - nvars;
} }
/* At the end of the grammar file, some C source code must
be stored. It is going to be associated to the epilogue
directive. */
static void
read_additionnal_code (void)
{
char c;
struct obstack el_obstack;
obstack_init (&el_obstack);
while ((c = getc (finput)) != EOF)
obstack_1grow (&el_obstack, c);
obstack_1grow (&el_obstack, 0);
muscle_insert ("epilogue", obstack_finish (&el_obstack));
}
/*--------------------------------------------------------------. /*--------------------------------------------------------------.
| For named tokens, but not literal ones, define the name. The | | For named tokens, but not literal ones, define the name. The |
@@ -1734,6 +1662,8 @@ output_token_defines (struct obstack *oout)
if (semantic_parser) if (semantic_parser)
obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value); obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value);
} }
obstack_1grow (oout, '\n');
} }
@@ -1752,6 +1682,8 @@ packsymbols (void)
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; tags[0] = DOLLAR;
user_toknums = XCALLOC (short, nsyms + 1); user_toknums = XCALLOC (short, nsyms + 1);
@@ -1853,14 +1785,8 @@ packsymbols (void)
error_token_number = errtoken->value; error_token_number = errtoken->value;
output_token_defines (&output_obstack);
obstack_1grow (&output_obstack, 0);
muscle_insert ("tokendef", obstack_finish (&output_obstack));
#if 0
if (!no_parser_flag) if (!no_parser_flag)
output_token_defines (&table_obstack); output_token_defines (&table_obstack);
#endif
if (startval->class == unknown_sym) if (startval->class == unknown_sym)
fatal (_("the start symbol %s is undefined"), startval->tag); fatal (_("the start symbol %s is undefined"), startval->tag);
@@ -2007,17 +1933,12 @@ reader (void)
init_lex (); init_lex ();
lineno = 1; lineno = 1;
/* Initialize the muscle obstack. */
obstack_init (&muscle_obstack);
/* Initialize the symbol table. */ /* Initialize the symbol table. */
tabinit (); tabinit ();
/* Construct the error token */ /* Construct the error token */
errtoken = getsym ("error"); errtoken = getsym ("error");
errtoken->class = token_sym; errtoken->class = token_sym;
errtoken->user_token_number = 256; /* Value specified by POSIX. */ errtoken->user_token_number = 256; /* Value specified by POSIX. */
/* Construct a token that represents all undefined literal tokens. /* Construct a token that represents all undefined literal tokens.
It is always token number 2. */ It is always token number 2. */
undeftoken = getsym ("$undefined."); undeftoken = getsym ("$undefined.");
@@ -2027,17 +1948,30 @@ 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, "\
/* %s, made from %s\n\
by GNU bison %s. */\n\
\n",
no_parser_flag ? "Bison-generated parse tables" : "A Bison parser",
infile, VERSION);
obstack_sgrow (&table_obstack,
"#define YYBISON 1 /* Identify Bison output. */\n\n");
read_declarations (); read_declarations ();
/* Start writing the guard and action files, if they are needed. */
output_headers ();
/* Read in the grammar, build grammar in list form. Write out /* Read in the grammar, build grammar in list form. Write out
guards and actions. */ guards and actions. */
readgram (); readgram ();
/* Some C code is given at the end of the grammar file. */
read_additionnal_code ();
/* Now we know whether we need the line-number stack. If we do, /* Now we know whether we need the line-number stack. If we do,
write its type into the .tab.h file. write its type into the .tab.h file. */
This is no longer need with header skeleton. */ if (defines_flag)
reader_output_yylsp (&defines_obstack);
/* Write closing delimiters for actions and guards. */
output_trailers ();
if (locations_flag)
obstack_sgrow (&table_obstack, "#define YYLSP_NEEDED 1\n\n");
/* Assign the symbols their symbol numbers. Write #defines for the /* Assign the symbols their symbol numbers. Write #defines for the
token symbols into FDEFINES if requested. */ token symbols into FDEFINES if requested. */
packsymbols (); packsymbols ();
@@ -2047,3 +1981,30 @@ reader (void)
referred to by symbol number. */ referred to by symbol number. */
free_symtab (); free_symtab ();
} }
/*------------------------------------------------------------------.
| Define YYLTYPE. Cannot be in the skeleton since we might have to |
| output it in the headers if --defines is used. |
`------------------------------------------------------------------*/
void
reader_output_yylsp (struct obstack *oout)
{
if (locations_flag)
obstack_sgrow (oout, "\
\n\
#ifndef YYLTYPE\n\
typedef struct yyltype\n\
{\n\
int first_line;\n\
int first_column;\n\
\n\
int last_line;\n\
int last_column;\n\
} yyltype;\n\
\n\
# define YYLTYPE yyltype\n\
#endif\n\
\n");
}
+2 -2
View File
@@ -30,10 +30,10 @@
extern void reader PARAMS ((void)); extern void reader PARAMS ((void));
extern void reader_output_yylsp PARAMS ((struct obstack *));
extern int lineno; extern int lineno;
extern char **tags; extern char **tags;
extern short *user_toknums; extern short *user_toknums;
extern struct obstack muscle_obstack;
#endif /* !READER_H_ */ #endif /* !READER_H_ */
+2 -4
View File
@@ -117,7 +117,7 @@ static void
useless_nonterminals (void) useless_nonterminals (void)
{ {
BSet Np, Ns; BSet Np, Ns;
int i, n; int i;
/* N is set as built. Np is set being built this iteration. P is /* N is set as built. Np is set being built this iteration. P is
set of all productions which have a RHS all in N. */ set of all productions which have a RHS all in N. */
@@ -140,7 +140,6 @@ useless_nonterminals (void)
saved to be used when finding useful productions: only saved to be used when finding useful productions: only
productions in this set will appear in the final grammar. */ productions in this set will appear in the final grammar. */
n = 0;
while (1) while (1)
{ {
for (i = WORDSIZE (nvars) - 1; i >= 0; i--) for (i = WORDSIZE (nvars) - 1; i >= 0; i--)
@@ -171,7 +170,7 @@ static void
inaccessable_symbols (void) inaccessable_symbols (void)
{ {
BSet Vp, Vs, Pp; BSet Vp, Vs, Pp;
int i, n; int i;
short t; short t;
rule r; rule r;
@@ -207,7 +206,6 @@ inaccessable_symbols (void)
SETBIT (V, start_symbol); SETBIT (V, start_symbol);
n = 0;
while (1) while (1)
{ {
for (i = WORDSIZE (nsyms) - 1; i >= 0; i--) for (i = WORDSIZE (nsyms) - 1; i >= 0; i--)
+107 -55
View File
@@ -19,10 +19,9 @@
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "system.h" #include "system.h"
#include "xalloc.h"
#include "vcg.h" #include "vcg.h"
#include "vcg_defaults.h" #include "vcg_defaults.h"
#include "xalloc.h"
#include "complain.h"
/* Initialize a graph with the default values. */ /* Initialize a graph with the default values. */
void void
@@ -51,6 +50,9 @@ new_graph (graph_t *g)
g->textmode = G_TEXTMODE; g->textmode = G_TEXTMODE;
g->shape = G_SHAPE; g->shape = G_SHAPE;
g->vertical_order = G_VERTICAL_ORDER;
g->horizontal_order = G_HORIZONTAL_ORDER;
g->xmax = G_XMAX; /* Not output. */ g->xmax = G_XMAX; /* Not output. */
g->ymax = G_YMAX; /* Not output. */ g->ymax = G_YMAX; /* Not output. */
@@ -231,8 +233,7 @@ get_color_str (enum color_e c)
case orchid: return "orchid"; case orchid: return "orchid";
case black: return "black"; case black: return "black";
default: default:
complain (_("vcg graph: no such color.")); assert (!"Not a default color.");
return get_color_str(G_COLOR);
} }
return NULL; return NULL;
} }
@@ -246,8 +247,7 @@ get_textmode_str (enum textmode_e t)
case left_justify: return "left_justify"; case left_justify: return "left_justify";
case right_justify: return "right_justify"; case right_justify: return "right_justify";
default: default:
complain (_("vcg graph: no such text mode")); assert (!"Not a text mode.");
return get_textmode_str(G_TEXTMODE);
} }
return NULL; return NULL;
} }
@@ -262,8 +262,7 @@ get_shape_str (enum shape_e s)
case ellipse: return "ellipse"; case ellipse: return "ellipse";
case triangle: return "triangle"; case triangle: return "triangle";
default: default:
complain (_("vcg graph: no such shape")); assert (!"Not a shape.");
return get_shape_str(G_SHAPE);
} }
return NULL; return NULL;
} }
@@ -288,21 +287,20 @@ get_layoutalgorithm_str (enum layoutalgorithm_e l)
case dfs: return "dfs"; case dfs: return "dfs";
case tree: return "tree"; case tree: return "tree";
default: default:
return "normal"; assert (!"Not a layout algorithm.");
} }
return NULL; return NULL;
} }
static const char * static const char *
get_decision_str (enum decision_e d, enum decision_e defaults) get_decision_str (enum decision_e d)
{ {
switch (d) switch (d)
{ {
case no: return "no"; case no: return "no";
case yes: return "yes"; case yes: return "yes";
default: default:
complain (_("vcg graph: no such decision")); assert (!"Either yes nor no.");
return get_decision_str(defaults, 0);
} }
return NULL; return NULL;
} }
@@ -317,8 +315,7 @@ get_orientation_str (enum orientation_e o)
case left_to_right: return "left_to_right"; case left_to_right: return "left_to_right";
case right_to_left: return "right_to_left"; case right_to_left: return "right_to_left";
default: default:
complain (_("vcg graph: no such an orientation")); assert (!"Not an orientation.");
return get_orientation_str(G_ORIENTATION);
} }
return NULL; return NULL;
} }
@@ -332,8 +329,7 @@ get_node_alignement_str (enum alignement_e a)
case top: return "top"; case top: return "top";
case bottom: return "bottom"; case bottom: return "bottom";
default: default:
complain (_("vcg graph: no such an alignement")); assert (!"Not an alignement.");
return get_node_alignement_str(G_NODE_ALIGNEMENT);
} }
return NULL; return NULL;
} }
@@ -346,8 +342,7 @@ get_arrow_mode_str (enum arrow_mode_e a)
case fixed: return "fixed"; case fixed: return "fixed";
case free_a: return "free"; case free_a: return "free";
default: default:
complain (_("vcg graph: no such an arrow mode")); assert (!"Not an arrow mode.");
return get_arrow_mode_str(G_ARROW_MODE);
} }
return NULL; return NULL;
} }
@@ -362,8 +357,7 @@ get_crossing_type_str (enum crossing_type_e c)
case barymedian: return "barymedian"; case barymedian: return "barymedian";
case medianbary: return "medianbary"; case medianbary: return "medianbary";
default: default:
complain (_("vcg graph: no such crossing_type")); assert (!"Not a crossing type.");
return get_crossing_type_str(G_CROSSING_WEIGHT);
} }
return NULL; return NULL;
} }
@@ -379,8 +373,7 @@ get_view_str (enum view_e v)
case fcfish: return "fcfish"; case fcfish: return "fcfish";
case fpfish: return "fpfish"; case fpfish: return "fpfish";
default: default:
complain (_("vcg graph: no such view")); assert (!"Not a view.");
return get_view_str(G_VIEW);
} }
return NULL; return NULL;
} }
@@ -395,8 +388,7 @@ get_linestyle_str (enum linestyle_e l)
case dotted: return "dotted"; case dotted: return "dotted";
case invisible: return "invisible"; case invisible: return "invisible";
default: default:
complain (_("vcg graph: no such linestyle")); assert (!"Not a line style.");
return get_linestyle_str(E_LINESTYLE);
} }
return NULL; return NULL;
} }
@@ -410,8 +402,7 @@ get_arrowstyle_str (enum arrowstyle_e a)
case line: return "line"; case line: return "line";
case none: return "none"; case none: return "none";
default: default:
complain (_("vcg graph: no such an arrowstyle")); assert (!"Not an arrow style.");
return get_arrowstyle_str(E_ARROWSTYLE);
} }
return NULL; return NULL;
} }
@@ -435,6 +426,46 @@ add_edge (graph_t *graph, edge_t *edge)
graph->edge_list = edge; graph->edge_list = edge;
} }
void
add_classname (graph_t *g, int val, const char *name)
{
struct classname_s *classname;
classname = XMALLOC (struct classname_s, 1);
classname->no = val;
classname->name = name;
classname->next = g->classname;
g->classname = classname;
}
void
add_infoname (graph_t *g, int integer, const char *string)
{
struct infoname_s *infoname;
infoname = XMALLOC (struct infoname_s, 1);
infoname->integer = integer;
infoname->string = string;
infoname->next = g->infoname;
g->infoname = infoname;
}
/* Build a colorentry struct and add it to the list. */
void
add_colorentry (graph_t *g, int color_idx, int red_cp,
int green_cp, int blue_cp)
{
struct colorentry_s *ce;
ce = XMALLOC (struct colorentry_s, 1);
ce->color_index = color_idx;
ce->red_cp = red_cp;
ce->green_cp = green_cp;
ce->blue_cp = blue_cp;
ce->next = g->colorentry;
g->colorentry = ce;
}
/*-------------------------------------. /*-------------------------------------.
| Open and close functions (formatted) | | Open and close functions (formatted) |
`-------------------------------------*/ `-------------------------------------*/
@@ -490,6 +521,7 @@ close_graph(graph_t *graph, struct obstack *os)
{ {
obstack_1grow (os, '\n'); obstack_1grow (os, '\n');
/* FIXME: Unallocate nodes and edges if required. */
{ {
node_t *node; node_t *node;
@@ -681,6 +713,11 @@ output_graph (graph_t *graph, struct obstack *os)
if (graph->shape != G_SHAPE) if (graph->shape != G_SHAPE)
obstack_fgrow1 (os, "\tshape:\t%s\n", get_shape_str (graph->shape)); obstack_fgrow1 (os, "\tshape:\t%s\n", get_shape_str (graph->shape));
if (graph->vertical_order != G_VERTICAL_ORDER)
obstack_fgrow1 (os, "\tvertical_order:\t%d\n", graph->vertical_order);
if (graph->horizontal_order != G_HORIZONTAL_ORDER)
obstack_fgrow1 (os, "\thorizontal_order:\t%d\n", graph->horizontal_order);
if (graph->xmax != G_XMAX) if (graph->xmax != G_XMAX)
obstack_fgrow1 (os, "\txmax:\t%d\n", graph->xmax); obstack_fgrow1 (os, "\txmax:\t%d\n", graph->xmax);
if (graph->ymax != G_YMAX) if (graph->ymax != G_YMAX)
@@ -708,6 +745,8 @@ output_graph (graph_t *graph, struct obstack *os)
if (graph->hidden != G_HIDDEN) if (graph->hidden != G_HIDDEN)
obstack_fgrow1 (os, "\thidden:\t%d\n", graph->hidden); obstack_fgrow1 (os, "\thidden:\t%d\n", graph->hidden);
/* FIXME: Unallocate struct list if required.
Maybe with a little function. */
if (graph->classname != G_CLASSNAME) if (graph->classname != G_CLASSNAME)
{ {
struct classname_s *ite; struct classname_s *ite;
@@ -716,6 +755,30 @@ output_graph (graph_t *graph, struct obstack *os)
obstack_fgrow2 (os, "\tclassname %d :\t%s\n", ite->no, ite->name); obstack_fgrow2 (os, "\tclassname %d :\t%s\n", ite->no, ite->name);
} }
if (graph->infoname != G_INFONAME)
{
struct infoname_s *ite;
for (ite = graph->infoname; ite; ite = ite->next)
obstack_fgrow2 (os, "\tinfoname %d :\t%s\n", ite->integer, ite->string);
}
if (graph->colorentry != G_COLORENTRY)
{
struct colorentry_s *ite;
char buff[64];
for (ite = graph->colorentry; ite; ite = ite->next)
{
sprintf (buff, "\tcolorentry %d :\t%d %d %d\n",
ite->color_index,
ite->red_cp,
ite->green_cp,
ite->blue_cp);
obstack_sgrow (os, buff);
}
}
if (graph->layoutalgorithm != G_LAYOUTALGORITHM) if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
obstack_fgrow1 (os, "\tlayoutalgorithm:\t%s\n", obstack_fgrow1 (os, "\tlayoutalgorithm:\t%s\n",
get_layoutalgorithm_str(graph->layoutalgorithm)); get_layoutalgorithm_str(graph->layoutalgorithm));
@@ -732,54 +795,48 @@ output_graph (graph_t *graph, struct obstack *os)
if (graph->late_edge_labels != G_LATE_EDGE_LABELS) if (graph->late_edge_labels != G_LATE_EDGE_LABELS)
obstack_fgrow1 (os, "\tlate_edge_labels:\t%s\n", obstack_fgrow1 (os, "\tlate_edge_labels:\t%s\n",
get_decision_str(graph->late_edge_labels, get_decision_str(graph->late_edge_labels));
G_LATE_EDGE_LABELS));
if (graph->display_edge_labels != G_DISPLAY_EDGE_LABELS) if (graph->display_edge_labels != G_DISPLAY_EDGE_LABELS)
obstack_fgrow1 (os, "\tdisplay_edge_labels:\t%s\n", obstack_fgrow1 (os, "\tdisplay_edge_labels:\t%s\n",
get_decision_str(graph->display_edge_labels, get_decision_str(graph->display_edge_labels));
G_DISPLAY_EDGE_LABELS));
if (graph->dirty_edge_labels != G_DIRTY_EDGE_LABELS) if (graph->dirty_edge_labels != G_DIRTY_EDGE_LABELS)
obstack_fgrow1 (os, "\tdirty_edge_labels:\t%s\n", obstack_fgrow1 (os, "\tdirty_edge_labels:\t%s\n",
get_decision_str(graph->dirty_edge_labels, get_decision_str(graph->dirty_edge_labels));
G_DIRTY_EDGE_LABELS));
if (graph->finetuning != G_FINETUNING) if (graph->finetuning != G_FINETUNING)
obstack_fgrow1 (os, "\tfinetuning:\t%s\n", obstack_fgrow1 (os, "\tfinetuning:\t%s\n",
get_decision_str(graph->finetuning, G_FINETUNING)); get_decision_str(graph->finetuning));
if (graph->ignore_singles != G_IGNORE_SINGLES) if (graph->ignore_singles != G_IGNORE_SINGLES)
obstack_fgrow1 (os, "\tignore_singles:\t%s\n", obstack_fgrow1 (os, "\tignore_singles:\t%s\n",
get_decision_str(graph->ignore_singles, G_IGNORE_SINGLES)); get_decision_str(graph->ignore_singles));
if (graph->straight_phase != G_STRAIGHT_PHASE) if (graph->straight_phase != G_STRAIGHT_PHASE)
obstack_fgrow1 (os, "\tstraight_phase:\t%s\n", obstack_fgrow1 (os, "\tstraight_phase:\t%s\n",
get_decision_str(graph->straight_phase, G_STRAIGHT_PHASE)); get_decision_str(graph->straight_phase));
if (graph->priority_phase != G_PRIORITY_PHASE) if (graph->priority_phase != G_PRIORITY_PHASE)
obstack_fgrow1 (os, "\tpriority_phase:\t%s\n", obstack_fgrow1 (os, "\tpriority_phase:\t%s\n",
get_decision_str(graph->priority_phase, G_PRIORITY_PHASE)); get_decision_str(graph->priority_phase));
if (graph->manhattan_edges != G_MANHATTAN_EDGES) if (graph->manhattan_edges != G_MANHATTAN_EDGES)
obstack_fgrow1 (os, obstack_fgrow1 (os,
"\tmanhattan_edges:\t%s\n", "\tmanhattan_edges:\t%s\n",
get_decision_str(graph->manhattan_edges, get_decision_str(graph->manhattan_edges));
G_MANHATTAN_EDGES));
if (graph->smanhattan_edges != G_SMANHATTAN_EDGES) if (graph->smanhattan_edges != G_SMANHATTAN_EDGES)
obstack_fgrow1 (os, obstack_fgrow1 (os,
"\tsmanhattan_edges:\t%s\n", "\tsmanhattan_edges:\t%s\n",
get_decision_str(graph->smanhattan_edges, get_decision_str(graph->smanhattan_edges));
G_SMANHATTAN_EDGES));
if (graph->near_edges != G_NEAR_EDGES) if (graph->near_edges != G_NEAR_EDGES)
obstack_fgrow1 (os, "\tnear_edges:\t%s\n", obstack_fgrow1 (os, "\tnear_edges:\t%s\n",
get_decision_str(graph->near_edges, G_NEAR_EDGES)); get_decision_str(graph->near_edges));
if (graph->orientation != G_ORIENTATION) if (graph->orientation != G_ORIENTATION)
obstack_fgrow1 (os, "\torientation:\t%s\n", obstack_fgrow1 (os, "\torientation:\t%s\n",
get_decision_str(graph->orientation, G_ORIENTATION)); get_orientation_str(graph->orientation));
if (graph->node_alignement != G_NODE_ALIGNEMENT) if (graph->node_alignement != G_NODE_ALIGNEMENT)
obstack_fgrow1 (os, "\tnode_alignement:\t%s\n", obstack_fgrow1 (os, "\tnode_alignement:\t%s\n",
get_decision_str(graph->node_alignement, get_node_alignement_str(graph->node_alignement));
G_NODE_ALIGNEMENT));
if (graph->port_sharing != G_PORT_SHARING) if (graph->port_sharing != G_PORT_SHARING)
obstack_fgrow1 (os, "\tport_sharing:\t%s\n", obstack_fgrow1 (os, "\tport_sharing:\t%s\n",
get_decision_str(graph->port_sharing, G_PORT_SHARING)); get_decision_str(graph->port_sharing));
if (graph->arrow_mode != G_ARROW_MODE) if (graph->arrow_mode != G_ARROW_MODE)
obstack_fgrow1 (os, "\tarrow_mode:\t%s\n", obstack_fgrow1 (os, "\tarrow_mode:\t%s\n",
@@ -795,27 +852,22 @@ output_graph (graph_t *graph, struct obstack *os)
get_crossing_type_str(graph->crossing_weight)); get_crossing_type_str(graph->crossing_weight));
if (graph->crossing_phase2 != G_CROSSING_PHASE2) if (graph->crossing_phase2 != G_CROSSING_PHASE2)
obstack_fgrow1 (os, "\tcrossing_phase2:\t%s\n", obstack_fgrow1 (os, "\tcrossing_phase2:\t%s\n",
get_decision_str(graph->crossing_phase2, get_decision_str(graph->crossing_phase2));
G_CROSSING_PHASE2));
if (graph->crossing_optimization != G_CROSSING_OPTIMIZATION) if (graph->crossing_optimization != G_CROSSING_OPTIMIZATION)
obstack_fgrow1 (os, "\tcrossing_optimization:\t%s\n", obstack_fgrow1 (os, "\tcrossing_optimization:\t%s\n",
get_decision_str(graph->crossing_optimization, get_decision_str(graph->crossing_optimization));
G_CROSSING_OPTIMIZATION));
if (graph->view != G_VIEW) if (graph->view != G_VIEW)
obstack_fgrow1 (os, "\tview:\t%s\n", get_view_str(graph->view)); obstack_fgrow1 (os, "\tview:\t%s\n", get_view_str(graph->view));
if (graph->edges != G_EDGES) if (graph->edges != G_EDGES)
obstack_fgrow1 (os, "\tedges:\t%s\n", get_decision_str(graph->edges, obstack_fgrow1 (os, "\tedges:\t%s\n", get_decision_str(graph->edges));
G_EDGES));
if (graph->nodes != G_NODES) if (graph->nodes != G_NODES)
obstack_fgrow1 (os,"\tnodes:\t%s\n", obstack_fgrow1 (os,"\tnodes:\t%s\n", get_decision_str(graph->nodes));
get_decision_str(graph->nodes, G_NODES));
if (graph->splines != G_SPLINES) if (graph->splines != G_SPLINES)
obstack_fgrow1 (os, "\tsplines:\t%s\n", obstack_fgrow1 (os, "\tsplines:\t%s\n", get_decision_str(graph->splines));
get_decision_str(graph->splines, G_SPLINES));
if (graph->bmax != G_BMAX) if (graph->bmax != G_BMAX)
obstack_fgrow1 (os, "\tbmax:\t%d\n", graph->bmax); obstack_fgrow1 (os, "\tbmax:\t%d\n", graph->bmax);
+59 -10
View File
@@ -75,14 +75,32 @@ enum shape_e
triangle triangle
}; };
/* Structure for colorentries. */
struct colorentry_s
{
int color_index;
int red_cp;
int green_cp;
int blue_cp;
struct colorentry_s *next;
};
/* Structure to construct lists of classnames. */ /* Structure to construct lists of classnames. */
struct classname_s struct classname_s
{ {
int no; /* Class number */ int no; /* Class number */
char *name; /* Name associated to the class no. */ const char *name; /* Name associated to the class no. */
struct classname_s *next; /* next name class association. */ struct classname_s *next; /* next name class association. */
}; };
/* Structure is in infoname. */
struct infoname_s
{
int integer;
const char *string;
struct infoname_s *next;
};
/* Layout Algorithms which can be found in VCG. /* Layout Algorithms which can be found in VCG.
Details about each algoithm can be found below. */ Details about each algoithm can be found below. */
enum layoutalgorithm_e enum layoutalgorithm_e
@@ -161,13 +179,13 @@ struct node_s
{ {
/* Title the unique string identifying the node. This attribute is /* Title the unique string identifying the node. This attribute is
mandatory. */ mandatory. */
char *title; const char *title;
/* Label the text displayed inside the node. If no label is specified /* Label the text displayed inside the node. If no label is specified
then the title of the node will be used. Note that this text may then the title of the node will be used. Note that this text may
contain control characters like NEWLINE that influences the size of contain control characters like NEWLINE that influences the size of
the node. */ the node. */
char *label; const char *label;
/* loc is the location as x, y position relatively to the system of /* loc is the location as x, y position relatively to the system of
coordinates of the graph. Locations are specified in the form coordinates of the graph. Locations are specified in the form
@@ -277,7 +295,7 @@ struct node_s
/* info2, info3 can be selected from the menu. The corresponding text /* info2, info3 can be selected from the menu. The corresponding text
labels can be shown by mouse clicks on nodes. labels can be shown by mouse clicks on nodes.
Default are null strings. */ Default are null strings. */
char *infos[3]; const char *infos[3];
/* Node border color. /* Node border color.
Default is textcolor. */ Default is textcolor. */
@@ -483,19 +501,19 @@ struct graph_s
index 2, green has index 3, etc. index 2, green has index 3, etc.
Default is white for background and white or transparent for summary Default is white for background and white or transparent for summary
nodes. */ nodes. */
unsigned char color; enum color_e color;
/* Textcolor. /* Textcolor.
need explainations ??? need explainations ???
defalut is black for summary nodes. */ defalut is black for summary nodes. */
unsigned char textcolor; enum color_e textcolor;
/* Bordercolor is the color of the summary node's border. Default color /* Bordercolor is the color of the summary node's border. Default color
is the textcolor. width, height are width and height of the is the textcolor. width, height are width and height of the
displayed part of the window of the outermost graph in pixels, or displayed part of the window of the outermost graph in pixels, or
width and height of the summary node of inner subgraphs. width and height of the summary node of inner subgraphs.
Default is the defalut of the textcolor. */ Default is the defalut of the textcolor. */
unsigned char bordercolor; enum color_e bordercolor;
/* Width, height are width and height of the displayed part of the /* Width, height are width and height of the displayed part of the
window of the outermost graph in pixels, or width and height of the window of the outermost graph in pixels, or width and height of the
@@ -559,7 +577,22 @@ struct graph_s
Defalut is box, other: rhomb, ellipse, triangle. */ Defalut is box, other: rhomb, ellipse, triangle. */
enum shape_e shape; enum shape_e shape;
/* FIXME {vertival,horizontal}_order */ /* Vertical order is the level position (rank) of the summary node of an
inner subgraph, if this subgraph is folded. We can also specify
level: int. The level is only recognized, if an automatical layout is
calculated. */
int vertical_order;
/* Horizontal order is the horizontal position of the summary node within
a level. The nodes which are specified with horizontal positions are
ordered according to these positions within the levels. The nodes which
do not have this attribute are inserted into this ordering by the
crossing reduction mechanism. Note that connected components are
handled separately, thus it is not possible to intermix such components
by specifying a horizontal order. If the algorithm for downward laid
out trees is used, the horizontal order influences only the order of
the child nodes at a node, but not the order of the whole level. */
int horizontal_order;
/* xmax, ymax specify the maximal size of the virtual window that is /* xmax, ymax specify the maximal size of the virtual window that is
used to display the graph. This is usually larger than the displayed used to display the graph. This is usually larger than the displayed
@@ -630,8 +663,19 @@ struct graph_s
By default, no class names. */ By default, no class names. */
struct classname_s *classname; struct classname_s *classname;
/* FIXME : infoname. */ /* Infoname allows to introduce names for the additional text labels.
/* FIXME : colorentry. */ The names are used in the menus.
Infoname is given by an integer and a string.
The default value is NULL. */
struct infoname_s *infoname;
/* Colorentry allows to fill the color map. A color is a triplet of integer
values for the red/green/blue-part. Each integer is between 0 (off) and
255 (on), e.g., 0 0 0 is black and 255 255 255 is white. For instance
colorentry 75 : 70 130 180 sets the map entry 75 to steel blue. This
color can be used by specifying just the number 75.
Default id NULL. */
struct colorentry_s *colorentry;
/* layoutalgorithm chooses different graph layout algorithms /* layoutalgorithm chooses different graph layout algorithms
Possibilities are maxdepth, mindepth, maxdepthslow, mindepthslow, Possibilities are maxdepth, mindepth, maxdepthslow, mindepthslow,
@@ -955,6 +999,11 @@ void new_edge PARAMS ((edge_t *edge));
void add_node PARAMS ((graph_t *graph, node_t *node)); void add_node PARAMS ((graph_t *graph, node_t *node));
void add_edge PARAMS ((graph_t *graph, edge_t *edge)); void add_edge PARAMS ((graph_t *graph, edge_t *edge));
void add_colorentry PARAMS ((graph_t *g, int color_idx, int red_cp,
int green_cp, int blue_cp));
void add_classname PARAMS ((graph_t *g, int val, const char *name));
void add_infoname PARAMS ((graph_t *g, int val, const char *name));
void open_node PARAMS ((struct obstack *os)); void open_node PARAMS ((struct obstack *os));
void output_node PARAMS ((node_t *node, struct obstack *os)); void output_node PARAMS ((node_t *node, struct obstack *os));
void close_node PARAMS ((struct obstack *os)); void close_node PARAMS ((struct obstack *os));
+10 -4
View File
@@ -47,8 +47,11 @@
# define G_TEXTMODE centered # define G_TEXTMODE centered
# define G_SHAPE box # define G_SHAPE box
# define G_XMAX 90 /* Not output */ # define G_VERTICAL_ORDER 0 /* Unspecified for subgraphs. */
# define G_YMAX 90 /* Not output */ # define G_HORIZONTAL_ORDER 0 /* Unspecified for subgraphs. */
# define G_XMAX 90 /* Not output */
# define G_YMAX 90 /* Not output */
# define G_XBASE 5 # define G_XBASE 5
# define G_YBASE 5 # define G_YBASE 5
@@ -61,9 +64,12 @@
# define G_YRASTER 1 # define G_YRASTER 1
# define G_XLRASTER 1 # define G_XLRASTER 1
# define G_HIDDEN -1 /* No default value. */ # define G_HIDDEN -1 /* No default value. */
# define G_CLASSNAME NULL /* No class name association */
# define G_INFONAME NULL
# define G_COLORENTRY NULL
# define G_CLASSNAME NULL /* No class name association */
# define G_LAYOUTALGORITHM normal # define G_LAYOUTALGORITHM normal
# define G_LAYOUT_DOWNFACTOR 1 # define G_LAYOUT_DOWNFACTOR 1
# define G_LAYOUT_UPFACTOR 1 # define G_LAYOUT_UPFACTOR 1
+4 -1
View File
@@ -1,7 +1,6 @@
Makefile Makefile
Makefile.in Makefile.in
at-* at-*
debug-*
atconfig atconfig
empty empty
experr experr
@@ -9,7 +8,11 @@ expout
stderr stderr
stdout stdout
testsuite testsuite
testsuite.[0-9]
testsuite.[0-9][0-9]
package.m4
calc.[chy] calc.[chy]
calc.tab.* calc.tab.*
calc calc
*.output *.vcg *.output *.vcg
autom4te.cache
+34 -15
View File
@@ -18,23 +18,42 @@
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA. ## 02111-1307, USA.
# Distribute the testsuite since GNU M4 is needed to build it. EXTRA_DIST = atlocal.in bison $(TESTSUITE_AT) testsuite
noinst_SCRIPTS = testsuite
SUITE = calc.at regression.at DISTCLEANFILES = atconfig atlocal
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
EXTRA_DIST = atgeneral.m4 suite.at $(SUITE) $(noinst_SCRIPTS) TESTSUITE_AT = \
testsuite.at \
output.at calc.at regression.at
TESTSUITE = $(srcdir)/testsuite
check-local: atconfig $(srcdir)/testsuite AUTOM4TE = autom4te
$(SHELL) $(srcdir)/testsuite AUTOTEST = $(AUTOM4TE) --language=autotest
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([PACKAGE_NAME], [@PACKAGE_NAME@])'; \
echo 'm4_define([PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \
echo 'm4_define([PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \
echo 'm4_define([PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >package.m4
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
mv $@.tmp $@
testsuite: atgeneral.m4 suite.at $(SUITE) atconfig: $(top_builddir)/config.status
$(M4) -I $(srcdir) atgeneral.m4 suite.at | \ cd $(top_builddir) && ./config.status tests/$@
sed -e 's/[ ]*$$//' | \
sed -e '/^$$/N;/\n$$/D' > $@-tmp
chmod +x $@-tmp
mv $@-tmp $@
CLEANFILES = debug-*.sh empty atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
DISTCLEANFILES = atconfig cd $(top_builddir) && ./config.status tests/$@
MAINTAINERCLEANFILES = testsuite
clean-local:
$(SHELL) $(TESTSUITE) --clean
check-local: atconfig atlocal $(TESTSUITE)
$(SHELL) $(TESTSUITE)
# Run the test suite on the *installed* tree.
installcheck-local:
$(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin
+47 -36
View File
@@ -13,8 +13,6 @@
@SET_MAKE@ @SET_MAKE@
# Distribute the testsuite since GNU M4 is needed to build it.
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -60,7 +58,6 @@ POST_UNINSTALL = :
host_alias = @host_alias@ host_alias = @host_alias@
host_triplet = @host@ host_triplet = @host@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AT_TESTPATH = @AT_TESTPATH@
AWK = @AWK@ AWK = @AWK@
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@ CATALOGS = @CATALOGS@
@@ -69,9 +66,6 @@ CC = @CC@
CPP = @CPP@ CPP = @CPP@
DATADIRNAME = @DATADIRNAME@ DATADIRNAME = @DATADIRNAME@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GENCAT = @GENCAT@ GENCAT = @GENCAT@
GLIBC21 = @GLIBC21@ GLIBC21 = @GLIBC21@
@@ -102,23 +96,25 @@ am__include = @am__include@
am__quote = @am__quote@ am__quote = @am__quote@
install_sh = @install_sh@ install_sh = @install_sh@
noinst_SCRIPTS = testsuite EXTRA_DIST = atlocal.in bison $(TESTSUITE_AT) testsuite
SUITE = calc.at regression.at DISTCLEANFILES = atconfig atlocal
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
EXTRA_DIST = atgeneral.m4 suite.at $(SUITE) $(noinst_SCRIPTS) TESTSUITE_AT = \
testsuite.at \
output.at calc.at regression.at
CLEANFILES = debug-*.sh empty TESTSUITE = $(srcdir)/testsuite
DISTCLEANFILES = atconfig
MAINTAINERCLEANFILES = testsuite AUTOM4TE = autom4te
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 = atconfig CONFIG_CLEAN_FILES =
SCRIPTS = $(noinst_SCRIPTS)
DIST_SOURCES = DIST_SOURCES =
DIST_COMMON = Makefile.am Makefile.in atconfig.in DIST_COMMON = Makefile.am Makefile.in
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@@ -129,8 +125,6 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && \ cd $(top_builddir) && \
CONFIG_HEADERS= CONFIG_LINKS= \ CONFIG_HEADERS= CONFIG_LINKS= \
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
atconfig: $(top_builddir)/config.status atconfig.in
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
uninstall-info-am: uninstall-info-am:
tags: TAGS tags: TAGS
TAGS: TAGS:
@@ -160,7 +154,7 @@ distdir: $(DISTFILES)
check-am: all-am check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local $(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am check: check-am
all-am: Makefile $(SCRIPTS) all-am: Makefile
installdirs: installdirs:
@@ -180,7 +174,6 @@ install-strip:
mostlyclean-generic: mostlyclean-generic:
clean-generic: clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic: distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
@@ -192,7 +185,7 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am clean: clean-am
clean-am: clean-generic mostlyclean-am clean-am: clean-generic clean-local mostlyclean-am
distclean: distclean-am distclean: distclean-am
@@ -214,7 +207,7 @@ install-info: install-info-am
install-man: install-man:
installcheck-am: installcheck-am: installcheck-local
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
@@ -227,23 +220,41 @@ mostlyclean-am: mostlyclean-generic
uninstall-am: uninstall-info-am uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am check-local clean clean-generic \ .PHONY: all all-am check check-am check-local clean clean-generic \
distclean distclean-generic distdir dvi dvi-am info info-am \ clean-local distclean distclean-generic distdir dvi dvi-am info \
install install-am install-data install-data-am install-exec \ info-am install install-am install-data install-data-am \
install-exec-am install-info install-info-am install-man \ install-exec install-exec-am install-info install-info-am \
install-strip installcheck installcheck-am installdirs \ install-man install-strip installcheck installcheck-am \
maintainer-clean maintainer-clean-generic mostlyclean \ installcheck-local installdirs maintainer-clean \
mostlyclean-generic uninstall uninstall-am uninstall-info-am maintainer-clean-generic mostlyclean mostlyclean-generic \
uninstall uninstall-am uninstall-info-am
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
{ \
echo '# Signature of the current package.'; \
echo 'm4_define([PACKAGE_NAME], [@PACKAGE_NAME@])'; \
echo 'm4_define([PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \
echo 'm4_define([PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \
echo 'm4_define([PACKAGE_STRING], [@PACKAGE_STRING@])'; \
echo 'm4_define([PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
} >package.m4
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
mv $@.tmp $@
check-local: atconfig $(srcdir)/testsuite atconfig: $(top_builddir)/config.status
$(SHELL) $(srcdir)/testsuite cd $(top_builddir) && ./config.status tests/$@
testsuite: atgeneral.m4 suite.at $(SUITE) atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
$(M4) -I $(srcdir) atgeneral.m4 suite.at | \ cd $(top_builddir) && ./config.status tests/$@
sed -e 's/[ ]*$$//' | \
sed -e '/^$$/N;/\n$$/D' > $@-tmp clean-local:
chmod +x $@-tmp $(SHELL) $(TESTSUITE) --clean
mv $@-tmp $@
check-local: atconfig atlocal $(TESTSUITE)
$(SHELL) $(TESTSUITE)
# Run the test suite on the *installed* tree.
installcheck-local:
$(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: .NOEXPORT:
-97
View File
@@ -1,97 +0,0 @@
# @configure_input@ -*- shell-script -*-
# Configurable variable values for building test suites.
# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# This script is part of Autotest. Unlimited permission to copy,
# distribute and modify the testing scripts that are the output of
# that Autotest script is given. You need not follow the terms of the
# GNU General Public License when using or distributing such scripts,
# even though portions of the text of Autotest appear in them. The
# GNU General Public License (GPL) does govern all other use of the
# material that constitutes the Autotest.
#
# Certain portions of the Autotest source text are designed to be
# copied (in certain cases, depending on the input) into the output of
# Autotest. We call these the "data" portions. The rest of the
# Autotest source text consists of comments plus executable code that
# decides which of the data portions to output in any given case. We
# call these comments and executable code the "non-data" portions.
# Autotest never copies any of the non-data portions into its output.
#
# This special exception to the GPL applies to versions of Autotest
# released by the Free Software Foundation. When you make and
# distribute a modified version of Autotest, you may extend this
# special exception to the GPL to apply to your modified version as
# well, *unless* your modified version has the potential to copy into
# its output some of the text that was the non-data portion of the
# version that you started with. (In other words, unless your change
# moves or copies text from the non-data portions to the data
# portions.) If your modification has such potential, you must delete
# any notice of this special exception to the GPL from your modified
# version.
# Snippet (1
# This debugging script has been automatically generated from `make check'.
# Call it with `--help' to get a quick usage summary.
at_package='@PACKAGE@'
at_version='@VERSION@'
# Snippet )1
# Snippet (2
at_n='@ECHO_N@'
at_c='@ECHO_C@'
test -f atlocal && . ./atlocal
# LC_MESSAGES is always shadowed by LC_ALL. Here are the only cases:
# - GNU: LANGUAGE -> LC_ALL -> LC_MESSAGES -> LANG
# - POSIX: LC_ALL -> LC_MESSAGES -> LANG
# - XPG4: LC_ALL -> LANG
# - SysV/XPG2: LANG
export LANGUAGE; LANGUAGE=C
export LANG; LANG=C
export LC_ALL; LC_ALL=C
srcdir=@srcdir@
top_srcdir=@top_srcdir@
# Use absolute file notations, as the test might change directories.
at_srcdir=`cd @srcdir@ && pwd`
at_top_srcdir=`cd @top_srcdir@ && pwd`
at_builddir=`pwd`
at_top_builddir=`cd .. && pwd`
if test -n "@AT_TESTPATH@"; then
export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH
else
export PATH; PATH=`pwd`:$PATH
fi
# We need GNU M4.
M4='@M4@'
# We need a C compiler.
CC='@CC@'
CFLAGS='@CFLAGS@'
# We need `config.h'.
CPPFLAGS="-I$at_top_builddir @CPPFLAGS@"
# We want to use the files shipped with Bison.
BISON_SIMPLE=$at_top_srcdir/src/bison.simple
export BISON_SIMPLE
BISON_HAIRY=$at_top_srcdir/src/bison.hairy
export BISON_HAIRY
# Snippet )2
-420
View File
@@ -1,420 +0,0 @@
divert(-1) -*- Autoconf -*-
# `m4' macros used in building test suites.
# Copyright (C) 2000 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# This script is part of Autotest. Unlimited permission to copy,
# distribute and modify the testing scripts that are the output of
# that Autotest script is given. You need not follow the terms of the
# GNU General Public License when using or distributing such scripts,
# even though portions of the text of Autotest appear in them. The
# GNU General Public License (GPL) does govern all other use of the
# material that constitutes the Autotest.
#
# Certain portions of the Autotest source text are designed to be
# copied (in certain cases, depending on the input) into the output of
# Autotest. We call these the "data" portions. The rest of the
# Autotest source text consists of comments plus executable code that
# decides which of the data portions to output in any given case. We
# call these comments and executable code the "non-data" portions.
# Autotest never copies any of the non-data portions into its output.
#
# This special exception to the GPL applies to versions of Autotest
# released by the Free Software Foundation. When you make and
# distribute a modified version of Autotest, you may extend this
# special exception to the GPL to apply to your modified version as
# well, *unless* your modified version has the potential to copy into
# its output some of the text that was the non-data portion of the
# version that you started with. (In other words, unless your change
# moves or copies text from the non-data portions to the data
# portions.) If your modification has such potential, you must delete
# any notice of this special exception to the GPL from your modified
# version.
changequote()
changequote([, ])
define([AT_DEFINE], defn([define]))
define([AT_EVAL], defn([eval]))
define([AT_FORMAT], defn([format]))
define([AT_INCLUDE], defn([include]))
define([AT_SHIFT], defn([shift]))
define([AT_UNDEFINE], defn([undefine]))
undefine([define])
undefine([eval])
undefine([format])
undefine([include])
undefine([shift])
undefine([undefine])
# AT_CASE(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
# -----------------------------------------------------------
# m4 equivalent of
# switch (SWITCH)
# {
# case VAL1:
# IF-VAL1;
# break;
# case VAL2:
# IF-VAL2;
# break;
# ...
# default:
# DEFAULT;
# break;
# }.
# All the values are optional, and the macro is robust to active
# symbols properly quoted.
AT_DEFINE([AT_CASE],
[ifelse([$#], 0, [],
[$#], 1, [],
[$#], 2, [$2],
[$1], [$2], [$3],
[AT_CASE([$1], AT_SHIFT(AT_SHIFT(AT_SHIFT($@))))])])
# Use of diversions:
# 0 - overall initialization; for each test group: skipping and cleanups;
# 1 - for each test group: proper code, to reinsert between cleanups;
# 2 - overall wrap up: generation of debugging scripts and statistics.
# AT_LINE
# -------
# Return the current file sans directory, a colon, and the current line.
AT_DEFINE([AT_LINE],
[patsubst(__file__, ^.*/\(.*\), \1):__line__])
# AT_INIT(PROGRAM)
# ----------------
# Begin testing suite, using PROGRAM to check version. The search path
# should be already preset so the proper executable will be selected.
AT_DEFINE([AT_INIT],
[AT_DEFINE(AT_ordinal, 0)
. ./atconfig
# Snippet (3
# -e sets to true
at_stop_on_error=false;
# Shall we save and check stdout and stderr?
# -n sets to false
at_check_stds=:;
# Shall we
# -s sets to false, and -v to true
at_verbose=false
at_usage="Usage: $[0] [OPTION]...
-e Abort the full suite and inhibit normal clean up if a test fails
-n Do not redirect stdout and stderr and do not test their contents
-s Inhibit verbosity while generating or executing debugging scripts
-v Force more detailed output, default for debugging scripts unless -s
-x Have the shell to trace command execution; also implies option -n"
# Snippet )3
# Snippet (4
while test $[#] -gt 0; do
case "$[1]" in
--help) echo "$at_usage"; exit 0 ;;
--version) echo "$[0] ($at_package) $at_version"; exit 0 ;;
-e) at_stop_on_error=:;;
-n) at_check_stds=false;;
-s) at_verbose=false; at_silent=1;;
-v) at_verbose=:; at_silent=;;
-x) at_traceon='set -vx'; at_traceoff='set +vx'; at_check_stds=false;;
*) echo 1>&2 "Try \`$[0] --help' for more information."; exit 1 ;;
esac
shift
done
# To check whether a test succeeded or not, we compare an expected
# output with a reference. In the testing suite, we just need `cmp'
# but in debugging scripts, we want more information, so we prefer
# `diff -u'. Nonetheless we will use `diff' only, because in DOS
# environments, `diff' considers that two files are equal included
# when there are only differences on the coding of new lines. `cmp'
# does not.
#
# Finally, not all the `diff' support `-u', and some, like Tru64, even
# refuse to `diff' /dev/null.
: >empty
if diff -u empty empty >/dev/null 2>&1; then
at_diff='diff -u'
else
at_diff='diff'
fi
# Each generated debugging script, containing a single test group, cleans
# up files at the beginning only, not at the end. This is so we can repeat
# the script many times and browse left over files. To cope with such left
# over files, the full test suite cleans up both before and after test groups.
# Snippet )4
if $1 --version | grep "$at_package.*$at_version" >/dev/null; then
at_banner="Testing suite for $at_package, version $at_version"
at_dashes=`echo $at_banner | sed s/./=/g`
echo "$at_dashes"
echo "$at_banner"
echo "$at_dashes"
else
echo '======================================================='
echo 'ERROR: Not using the proper version, no tests performed'
echo '======================================================='
exit 1
fi
# Remove any debugging script resulting from a previous run.
rm -f debug-*.sh
at_failed_list=
at_ignore_count=0
divert(2)[]dnl
# Wrap up the testing suite with summary statistics.
rm -f at-check-line at-setup-line
at_fail_count=0
if test -z "$at_failed_list"; then
if test "$at_ignore_count" = 0; then
at_banner="All $at_test_count tests were successful"
else
at_banner="All $at_test_count tests were successful ($at_ignore_count ignored)"
fi
else
echo
echo $at_n "Writing \`debug-NN.sh' scripts, NN =$at_c"
for at_group in $at_failed_list; do
echo $at_n " $at_group$at_c"
( echo '#!/bin/sh'
sed -n '/^[#] Snippet (1/,/^[#] Snippet )1/p' atconfig
sed -n '/^[#] Snippet (2/,/^[#] Snippet )2/p' atconfig
sed -n "/^[#] Snippet (3/,/^[#] Snippet )3/p" $[0]
test -z "$at_silent" && echo 'at_verbose=:'
sed -n "/^[#] Snippet (4/,/^[#] Snippet )4/p" $[0]
sed -n "/^[#] Snippet (c$at_group(/,/^[#] Snippet )c$at_group)/p" $[0]
at_desc=`sed -n \
'/^[#] Snippet (d'$at_group'(/,/^[#] Snippet )d'$at_group')/p' $[0] \
| sed -n '2s/^[#] //p'`
echo 'if $at_verbose; then'
echo ' at_banner="$[0]: '$at_desc'"'
echo ' at_dashes=`echo $at_banner | sed s/./=/g`'
echo ' echo'
echo ' echo "$at_dashes"'
echo ' echo "$at_banner"'
echo ' echo "$at_dashes"'
echo 'fi'
echo
sed -n "/^[#] Snippet (d$at_group(/,/^[#] Snippet )d$at_group)/p" $[0]
sed -n "/^[#] Snippet (s$at_group(/,/^[#] Snippet )s$at_group)/p" $[0]
echo 'exit 0'
) | grep -v '^[#] Snippet' > debug-$at_group.sh
chmod +x debug-$at_group.sh
at_fail_count=`expr $at_fail_count + 1`
done
echo ', done'
if $at_stop_on_error; then
at_banner='ERROR: One of the tests failed, inhibiting subsequent tests'
else
at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed"
fi
fi
at_dashes=`echo $at_banner | sed s/./=/g`
echo
echo "$at_dashes"
echo "$at_banner"
echo "$at_dashes"
if test -n "$at_failed_list"; then
if test -z "$at_silent"; then
echo
echo 'When reporting failed tests to maintainers, do not merely list test'
echo 'numbers, as the numbering changes between releases and pretests.'
echo 'Be careful to give at least all the information you got about them.'
echo 'You may investigate any problem if you feel able to do so, in which'
echo 'case the generated debugging scripts provide good starting points.'
echo "Go on and modify them at will. \`./debug-NN --help' gives usage"
echo 'information. Now, failed tests will be executed again, verbosely.'
for at_group in $at_failed_list; do
./debug-$at_group.sh
done
fi
exit 1
fi
exit 0
divert[]dnl
])# AT_INIT
# AT_SETUP(DESCRIPTION)
# ---------------------
# Start a group of related tests, all to be executed in the same subshell.
# The group is testing what DESCRIPTION says.
AT_DEFINE([AT_SETUP],
[AT_DEFINE([AT_ordinal], AT_EVAL(AT_ordinal + 1))
pushdef([AT_group_description], [$1])
pushdef([AT_data_files], )
pushdef([AT_data_expout], )
pushdef([AT_data_experr], )
if $at_stop_on_error && test -n "$at_failed_list"; then :; else
divert(1)[]dnl
echo AT_LINE > at-check-line
echo AT_LINE > at-setup-line
if $at_verbose; then
echo 'testing AT_group_description'
echo $at_n " $at_c"
fi
if $at_verbose; then
echo "AT_ordinal. $srcdir/AT_LINE..."
else
echo $at_n "substr(AT_ordinal. $srcdir/AT_LINE , 0, 30)[]$at_c"
fi
if test -z "$at_skip_mode"; then
(
[#] Snippet (d[]AT_ordinal[](
[#] Testing AT_group_description
[#] Snippet )d[]AT_ordinal[])
[#] Snippet (s[]AT_ordinal[](
[#] starting from `AT_LINE'.
$at_traceon
])
# AT_CLEANUP(FILES)
# -----------------
# Complete a group of related tests, recursively remove those FILES
# created within the test. There is no need to list stdout, stderr,
# nor files created with AT_DATA.
AT_DEFINE([AT_CLEANUP],
$at_traceoff
[[#] Snippet )s[]AT_ordinal[])
)
at_status=$?
$at_verbose &&
echo $at_n " AT_ordinal. $srcdir/`cat at-setup-line`: $at_c"
case $at_status in
0) echo ok
;;
77) echo "ignored near \``cat at-check-line`'"
at_ignore_count=`expr $at_ignore_count + 1`
;;
*) echo "FAILED near \``cat at-check-line`'"
at_failed_list="$at_failed_list AT_ordinal"
;;
esac
else
echo 'ignored (skipped)'
at_ignore_count=`expr $at_ignore_count + 1`
fi
at_test_count=AT_ordinal
if $at_stop_on_error && test -n "$at_failed_list"; then :; else
divert(0)[]dnl
[#] Snippet (c[]AT_ordinal[](
rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr
[#] Snippet )c[]AT_ordinal[])
undivert(1)[]dnl
rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr
fi
fi
popdef([AT_data_experr])
popdef([AT_data_expout])
popdef([AT_data_files])
popdef([AT_group_description])[]dnl
])# AT_CLEANUP
# AT_DATA(FILE, CONTENTS)
# -----------------------
# Initialize an input data FILE with given CONTENTS, which should end with
# an end of line.
# This macro is not robust to active symbols in CONTENTS *on purpose*.
# If you don't want CONTENT to be evaluated, quote it twice.
AT_DEFINE([AT_DATA],
[AT_DEFINE([AT_data_files], AT_data_files[ ]$1)
cat >$1 <<'_ATEOF'
$2[]_ATEOF
])
# AT_CHECK(COMMANDS, [STATUS], STDOUT, STDERR)
# --------------------------------------------
# Execute a test by performing given shell COMMANDS. These commands
# should normally exit with STATUS, while producing expected STDOUT and
# STDERR contents. The special word `expout' for STDOUT means that file
# `expout' contents has been set to the expected stdout. The special word
# `experr' for STDERR means that file `experr' contents has been set to
# the expected stderr.
# STATUS is not checked if it is empty.
# STDOUT and STDERR can be the special value `ignore', in which case
# their content is not checked.
AT_DEFINE([AT_CHECK],
[$at_traceoff
$at_verbose && echo "$srcdir/AT_LINE: patsubst([$1], [\([\"`$]\)], \\\1)"
echo AT_LINE > at-check-line
$at_check_stds && exec 5>&1 6>&2 1>stdout 2>stderr
$at_traceon
$1
ifelse([$2], [], [],
[at_status=$?
if test $at_status != $2; then
$at_verbose && echo "Exit code was $at_status, expected $2" >&6
dnl Maybe there was an important message to read before it died.
$at_verbose && $at_check_stds && cat stderr >&6
dnl Preserve exit code 77.
test $at_status = 77 && exit 77
exit 1
fi
])dnl
$at_traceoff
if $at_check_stds; then
dnl Restore stdout to fd1 and stderr to fd2.
exec 1>&5 2>&6
dnl If not verbose, neutralize the output of diff.
$at_verbose || exec 1>/dev/null 2>/dev/null
at_failed=false;
AT_CASE([$4],
ignore, [$at_verbose && cat stderr;:],
experr, [AT_DEFINE([AT_data_experr], [ experr])dnl
$at_diff experr stderr || at_failed=:],
[], [$at_diff empty stderr || at_failed=:],
[echo $at_n "patsubst([$4], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stderr || at_failed=:])
AT_CASE([$3],
ignore, [$at_verbose && cat stdout;:],
expout, [AT_DEFINE([AT_data_expout], [ expout])dnl
$at_diff expout stdout || at_failed=:],
[], [$at_diff empty stdout || at_failed=:],
[echo $at_n "patsubst([$3], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stdout || at_failed=:])
if $at_failed; then
exit 1
else
:
fi
fi
$at_traceon
])# AT_CHECK
divert(0)dnl
+10
View File
@@ -0,0 +1,10 @@
# @configure_input@ -*- shell-script -*-
# Configurable variable values for Bison test suite.
# Copyright 2000, 2001 Free Software Foundation, Inc.
# We need a C compiler.
CC='@CC@'
CFLAGS='@CFLAGS@'
# We need `config.h'.
CPPFLAGS="-I $top_builddir @CPPFLAGS@"
Executable
+11
View File
@@ -0,0 +1,11 @@
#! /bin/sh
# Wrapper around a non installed bison to make it work as an installed one.
. ./atconfig
# We want to use the files shipped with Bison.
BISON_SIMPLE=$top_srcdir/src/bison.simple
export BISON_SIMPLE
BISON_HAIRY=$top_srcdir/src/bison.hairy
export BISON_HAIRY
exec $top_builddir/src/bison ${1+"$@"}
+56 -41
View File
@@ -1,11 +1,22 @@
# -*- Autoconf -*- # Checking the output filenames. -*- Autotest -*-
# Copyright 2000, 2001 Free Software Foundation, Inc.
cat <<EOF # 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.
Simple Calculator. # 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.
EOF # 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([[Simple Calculator.]])
## ---------------------------------------------------- ## ## ---------------------------------------------------- ##
## Compile the grammar described in the documentation. ## ## Compile the grammar described in the documentation. ##
@@ -23,11 +34,9 @@ EOF
# some occurrences of `$1' etc. which will be interpreted by m4. So # some occurrences of `$1' etc. which will be interpreted by m4. So
# you should call it with $1, $2, and $3 as arguments, which is what # you should call it with $1, $2, and $3 as arguments, which is what
# AT_DATA_CALC_Y does. # AT_DATA_CALC_Y does.
AT_DEFINE([_AT_DATA_CALC_Y], m4_define([_AT_DATA_CALC_Y],
[ifelse([$1$2$3], [m4_if([$1$2$3], $[1]$[2]$[3], [],
$[1]$[2]$[3], [], [m4_fatal([$0: Invalid arguments: $@])])dnl
[errprint([$0: Invalid arguments: $@
])m4exit(1)])dnl
AT_DATA([calc.y], AT_DATA([calc.y],
[[/* Infix notation calculator--calc */ [[/* Infix notation calculator--calc */
@@ -211,14 +220,16 @@ power (int base, int exponent)
} }
int int
main (int argn, const char **argv) main (int argc, const char **argv)
{ {
if (argn == 2) yyin = NULL;
if (argc == 2)
yyin = fopen (argv[1], "r"); yyin = fopen (argv[1], "r");
else else
yyin = stdin; yyin = stdin;
if (!stdin) if (!yyin)
{ {
perror (argv[1]); perror (argv[1]);
exit (1); exit (1);
@@ -241,41 +252,45 @@ main (int argn, const char **argv)
# AT_DATA_CALC_Y([BISON-OPTIONS]) # AT_DATA_CALC_Y([BISON-OPTIONS])
# ------------------------------- # -------------------------------
# Produce `calc.y'. # Produce `calc.y'.
AT_DEFINE([AT_DATA_CALC_Y], m4_define([AT_DATA_CALC_Y],
[_AT_DATA_CALC_Y($[1], $[2], $[3], [_AT_DATA_CALC_Y($[1], $[2], $[3],
[ifelse(regexp([$1], [--yyerror-verbose]), [m4_match([$1], [--yyerror-verbose],
[-1], [], [[#define YYERROR_VERBOSE]])])])
[[#define YYERROR_VERBOSE 1]])])])
# _AT_CHECK_CALC(BISON-OPTIONS, INPUT) # _AT_CHECK_CALC(BISON-OPTIONS, INPUT)
# ------------------------------------ # ------------------------------------
# Run `calc' on INPUT and expect no STDOUT nor STDERR. # Run `calc' on INPUT and expect no STDOUT nor STDERR.
# If `--debug' is passed to bison, discard all the debugging traces m4_define([_AT_CHECK_CALC],
# preserving only the `parse errors'. Note that since there should be [AT_DATA([[input]],
# none, the `grep' will fail with exit status 1. [[$2
AT_DEFINE([_AT_CHECK_CALC], ]])
[ifelse(regexp([$1], [--debug]), AT_CHECK([calc input])dnl
[-1], ])
[AT_CHECK([echo "$2" | calc],
[0], [], [])],
[AT_CHECK([echo "$2" | calc 2>&1 >/dev/null | grep 'parse error' >&2],
[1], [], [])])])
# _AT_CHECK_CALC_ERROR(BISON-OPTIONS, INPUT, # _AT_CHECK_CALC_ERROR(BISON-OPTIONS, INPUT,
# [ERROR-LOCATION], [IF-YYERROR-VERBOSE]) # [ERROR-LOCATION], [IF-YYERROR-VERBOSE])
# ------------------------------------------------------------ # ------------------------------------------------------------
# Run `calc' on INPUT, and expect STDERR. # Run `calc' on INPUT, and expect a `parse error' message.
AT_DEFINE([_AT_CHECK_CALC_ERROR], #
[AT_CHECK([echo "$2" | calc 2>&1 >/dev/null | grep 'parse error' >&2], 0, # If BISON-OPTIONS contains `--location', then make sure the ERROR-LOCATION
[], # is correctly output on stderr.
[ifelse(regexp([$1], [--location]), #
[-1], [], [$3: ])[]dnl # If BISON-OPTIONS contains `--yyerror-verbose', then make sure the
# IF-YYERROR-VERBOSE message is properly output after `parse error, '
# on STDERR.
m4_define([_AT_CHECK_CALC_ERROR],
[AT_DATA([[input]],
[[$2
]])
AT_CHECK([calc input], 0,
[],
[m4_match([$1], [--location], [$3: ])[]dnl
parse error[]dnl parse error[]dnl
ifelse(regexp([$1], [--yyerror-verbose]), m4_match([$1], [--yyerror-verbose], [, $4])[]dnl
[-1], [], [$4])[]dnl
])]) ])])
@@ -284,14 +299,14 @@ ifelse(regexp([$1], [--yyerror-verbose]),
# -------------------------------------------------------- # --------------------------------------------------------
# Start a testing chunk which compiles `calc' grammar with # Start a testing chunk which compiles `calc' grammar with
# BISON-OPTIONS, and performs several tests over the parser. # BISON-OPTIONS, and performs several tests over the parser.
AT_DEFINE([AT_CHECK_CALC], m4_define([AT_CHECK_CALC],
[# We use integers to avoid dependencies upon the precision of doubles. [# We use integers to avoid dependencies upon the precision of doubles.
AT_SETUP([Calculator $1]) AT_SETUP([Calculator $1])
AT_DATA_CALC_Y([$1]) AT_DATA_CALC_Y([$1])
# Specify the output files to avoid problems on different file systems. # Specify the output files to avoid problems on different file systems.
AT_CHECK([bison calc.y -o calc.c patsubst([$1], [--yyerror-verbose])], AT_CHECK([bison calc.y -o calc.c m4_patsubst([$1], [--yyerror-verbose])],
[0], [], []) [0], [], [])
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], []) AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [])
@@ -314,21 +329,21 @@ _AT_CHECK_CALC([$1],
# Some parse errors. # Some parse errors.
_AT_CHECK_CALC_ERROR([$1], [+1], _AT_CHECK_CALC_ERROR([$1], [+1],
[1.0:1.1], [1.0:1.1],
[, unexpected `'+'']) [unexpected `'+''])
_AT_CHECK_CALC_ERROR([$1], [1//2], _AT_CHECK_CALC_ERROR([$1], [1//2],
[1.2:1.3], [1.2:1.3],
[, unexpected `'/'', expecting `NUM' or `'-'' or `'('']) [unexpected `'/'', expecting `NUM' or `'-'' or `'(''])
_AT_CHECK_CALC_ERROR([$1], [error], _AT_CHECK_CALC_ERROR([$1], [error],
[1.0:1.1], [1.0:1.1],
[, unexpected `$undefined.']) [unexpected `$undefined.'])
_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], _AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3],
[1.6:1.7], [1.6:1.7],
[, unexpected `'='']) [unexpected `'=''])
_AT_CHECK_CALC_ERROR([$1], _AT_CHECK_CALC_ERROR([$1],
[ [
+1], +1],
[2.0:2.1], [2.0:2.1],
[, unexpected `'+'']) [unexpected `'+''])
AT_CLEANUP(calc calc.c calc.h calc.output) AT_CLEANUP(calc calc.c calc.h calc.output)
])# AT_CHECK_CALC ])# AT_CHECK_CALC
+70
View File
@@ -0,0 +1,70 @@
# Checking the output filenames. -*- Autotest -*-
# Copyright 2000, 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_BANNER([[Output file names.]])
# AT_CHECK_OUTPUT(INPUT-FILE, [DIRECTIVES], [FLAGS], EXPECTED-FILES)
# ------------------------------------------------------------------
m4_define([AT_CHECK_OUTPUT],
[AT_SETUP([Output files: $2 & $3.])
AT_DATA([$1],
[[$2
%%
foo: {}
]])
AT_CHECK([bison $3 $1], 0)
AT_CHECK([ls $4], [], [ignore])
AT_CLEANUP($4)
])
AT_CHECK_OUTPUT([foo.y], [], [-dv],
[foo.output foo.tab.c foo.tab.h])
AT_CHECK_OUTPUT([foo.y], [], [-dv -o foo.c],
[foo.c foo.h foo.output])
AT_CHECK_OUTPUT([foo.y], [], [-dv -o foo.tab.c],
[foo.output foo.tab.c foo.tab.h])
AT_CHECK_OUTPUT([foo.y], [], [-dv -y],
[y.output y.tab.c y.tab.h])
AT_CHECK_OUTPUT([foo.y], [], [-dv -b bar],
[bar.output bar.tab.c bar.tab.h])
AT_CHECK_OUTPUT([foo.y], [], [-dv -g -o foo.c],
[foo.c foo.h foo.output foo.vcg])
AT_CHECK_OUTPUT([foo.y], [%defines %verbose], [],
[foo.output foo.tab.c foo.tab.h])
AT_CHECK_OUTPUT([foo.y], [%defines %verbose %yacc],[],
[y.output y.tab.c y.tab.h])
# Check priorities of extension control.
AT_CHECK_OUTPUT([foo.yy], [%defines %verbose], [],
[foo.output foo.tab.cc foo.tab.hh])
AT_CHECK_OUTPUT([foo.yy], [%defines %verbose ], [-o foo.c],
[foo.c foo.h foo.output])
AT_CHECK_OUTPUT([foo.yy], [],
[--defines=foo.hpp -o foo.c++],
[foo.c++ foo.hpp])
AT_CHECK_OUTPUT([foo.yy], [],
[-o foo.c++ --graph=foo.gph],
[foo.c++ foo.gph])
+38 -4
View File
@@ -1,11 +1,22 @@
# -*- Autoconf -*- # Bison Regressions. -*- Autotest -*-
# Copyright 2001 Free Software Foundation, Inc.
cat <<EOF # 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.
Regression tests. # 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.
EOF # 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([[Regression tests.]])
## ------------------ ## ## ------------------ ##
## Duplicate string. ## ## Duplicate string. ##
@@ -53,3 +64,26 @@ exp: {};
AT_CHECK([bison --defines union.y]) AT_CHECK([bison --defines union.y])
AT_CLEANUP([union.*]) AT_CLEANUP([union.*])
## --------------------------------------- ##
## Duplicate '/' in C comments in %union ##
## --------------------------------------- ##
AT_SETUP([%union and C comments])
AT_DATA([union-comment.y],
[%union
{
/* The int. */ int integer;
/* The string. */ char *string ;
}
%%
exp: {};
])
AT_CHECK([bison union-comment.y])
AT_CHECK([fgrep '//*' union-comment.tab.c], [1], [])
AT_CLEANUP([union-comment.*])
-61
View File
@@ -1,61 +0,0 @@
#! /bin/sh
# -*- Autoconf -*-
# Validation suite for Bison.
# Copyright 2000 Free Software Foundation, Inc.
AT_INIT([bison])
## ---------------------------- ##
## Checking output file names. ##
## ---------------------------- ##
# AT_CHECK_BISON_FLAGS(FLAGS, EXPECTED-FILES-SORTED)
# --------------------------------------------------
AT_DEFINE([AT_CHECK_BISON_FLAGS],
[AT_SETUP([Output files: $1.])
AT_DATA([foo.y],
[[%%
foo: {}
]])
rm -rf $2
AT_CHECK([bison -dv foo.y $1], 0, ignore, ignore)
AT_CHECK([ls $2 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$2])
rm -f $2
AT_CLEANUP
])
AT_CHECK_BISON_FLAGS([], [foo.output foo.tab.c foo.tab.h])
AT_CHECK_BISON_FLAGS([-o foo.c], [foo.c foo.h foo.output])
AT_CHECK_BISON_FLAGS([-o foo.tab.c], [foo.output foo.tab.c foo.tab.h])
AT_CHECK_BISON_FLAGS([-y], [y.output y.tab.c y.tab.h])
AT_CHECK_BISON_FLAGS([-b bar], [bar.output bar.tab.c bar.tab.h])
# AT_CHECK_BISON_PERCENT(GRAMMAR-OPTIONS, EXPECTED-FILES-SORTED)
# --------------------------------------------------------------
AT_DEFINE([AT_CHECK_BISON_PERCENT],
[AT_SETUP([Output files: $1.])
AT_DATA([foo.y],
[[$1
%defines
%verbose
%%
foo: {}
]])
rm -rf $2
AT_CHECK([bison foo.y], 0, ignore, ignore)
AT_CHECK([ls $2 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$2])
rm -f $2
AT_CLEANUP
])
# The sames, but using the % directives.
AT_CHECK_BISON_PERCENT([], [foo.output foo.tab.c foo.tab.h])
# AT_CHECK_BISON_PERCENT([%output foo.c], [foo.c foo.h foo.output])
# AT_CHECK_BISON_PERCENT([%output foo.tab.c], [foo.output foo.tab.c foo.tab.h])
AT_CHECK_BISON_PERCENT([%yacc], [y.output y.tab.c y.tab.h])
# AT_CHECK_BISON_PERCENT([%file_prefix bar], [bar.output bar.tab.c bar.tab.h])
AT_INCLUDE([calc.at])
AT_INCLUDE([regression.at])
+30
View File
@@ -0,0 +1,30 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU Bison.
# Copyright 2000, 2001 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# We need a recent Autotest.
m4_version_prereq([2.52d])
AT_INIT
AT_VICTIMS([bison])
m4_include([output.at])
m4_include([calc.at])
m4_include([regression.at])