mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-09-23 16:57:06 +00:00
Compare commits
29
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6918b5fcc9 | ||
|
|
38e616f0f5 | ||
|
|
db433e9db8 | ||
|
|
870f12c270 | ||
|
|
e0a53a7f4a | ||
|
|
27c1ceb8da | ||
|
|
8f5d3a2dd5 | ||
|
|
adfd774c80 | ||
|
|
057194c61e | ||
|
|
a6f622cd50 | ||
|
|
2b8ce46775 | ||
|
|
19553c4e06 | ||
|
|
b1722803ec | ||
|
|
6f5e0eea04 | ||
|
|
e4ad4676be | ||
|
|
7b50efe542 | ||
|
|
cf90ca5d46 | ||
|
|
e373aad966 | ||
|
|
3e4c37cf7b | ||
|
|
dfaa776005 | ||
|
|
aecd294cb0 | ||
|
|
52eddd8c33 | ||
|
|
60403d1bc1 | ||
|
|
dd9f12de60 | ||
|
|
6085f203e1 | ||
|
|
7a360eeaed | ||
|
|
af550e2927 | ||
|
|
78632bbcdc | ||
|
|
483c899a17 |
+2
-2
@@ -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
|
||||||
|
|||||||
@@ -1,364 +1,137 @@
|
|||||||
2001-09-25 Pascal Bart <pascal.bart@epita.fr>
|
2001-08-29 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/output.c (output_master_parser): Don't finish action_obstack.
|
Version 1.28d.
|
||||||
(output_parser): Don't care about the muscle action, here.
|
|
||||||
(prepare): Copy the action_obstack in the action muscle.
|
|
||||||
(output): Free action_obstack.
|
|
||||||
|
|
||||||
2001-09-23 Pascal Bart <[email protected]>
|
2001-08-29 Paul Eggert <[email protected]>
|
||||||
|
|
||||||
* src/reader.c (parse_union_decl): Add new obstack union_obstack. Which
|
|
||||||
will contain `%union' declaration.
|
|
||||||
(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 <[email protected]>
|
|
||||||
|
|
||||||
* src/bison.simple: Add new `#line' directive.
|
|
||||||
|
|
||||||
2001-09-22 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/bison.simple: New `#line' directive.
|
|
||||||
* src/output.c (output_parser): Support new dynamic muscle input_line.
|
|
||||||
|
|
||||||
2001-09-22 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
* src/output.c (output_master_parser): New.
|
|
||||||
(output_parser): Be more re-entrant.
|
|
||||||
|
|
||||||
2001-09-21 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
* src/reader.c (copy_definition, parse_union_decl): Update and use
|
|
||||||
`linef' muscle.
|
|
||||||
(copy_action): Likewise.
|
|
||||||
Use obstack_1grow ().
|
|
||||||
* src/muscle_tab.c (muscle_init): Add muscle `linef'.
|
|
||||||
|
|
||||||
2001-09-21 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
* src/options.c (option_table): Adjust.
|
|
||||||
* src/lex.c (parse_percent_token): Fix.
|
|
||||||
|
|
||||||
2001-09-20 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/options.c (symtab.h): Include it, need by lex.h.
|
|
||||||
|
|
||||||
2001-09-20 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/lex.c (parse_percent_token): Change type of variable `tx', which
|
|
||||||
is now an option_table_struct*.
|
|
||||||
(option_strcmp): New function option_strcmp.
|
|
||||||
(parse_percent_token): Call option_strcmp.
|
|
||||||
* 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.
|
|
||||||
* 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]>
|
|
||||||
|
|
||||||
* doc/bison.texinfo: Adjust terminologies about prologue and epilogue
|
|
||||||
sections of Bison.
|
|
||||||
|
|
||||||
2001-09-19 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/bison.simple: s/%%filename/%%skeleton.
|
|
||||||
* src/muscle_tab.c (getargs.h): Include it.
|
|
||||||
(muscle_init): Insert new muscle skeleton.
|
|
||||||
|
|
||||||
2001-09-18 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/output.c (output_parser): Delete unused variable actions_dumped.
|
|
||||||
|
|
||||||
2001-09-07 Pascal Bart <[email protected]>
|
|
||||||
|
|
||||||
* src/output.c (output): Delete call to reader_output_yylsp.
|
|
||||||
* src/reader.c (reader): Likewise.
|
|
||||||
* src/reader.h: Delete declaration of reader_output_yylsp.
|
|
||||||
|
|
||||||
2001-09-02 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
* src/reader.c: Include muscle_tab.h.
|
|
||||||
(parse_union_decl): Update.
|
|
||||||
(parse_macro_decl): Rename parse_muscle_decl.
|
|
||||||
Update to use renamed functions and variable.
|
|
||||||
(read_declarations, copy_action, read_additionnal_code, : Updated
|
|
||||||
with correct variables and functions names.
|
|
||||||
(packsymbols, reader): Likewise.
|
|
||||||
|
|
||||||
* src/reader.h (muscle_obstack): Extern declaration update.
|
|
||||||
|
|
||||||
* src/output.c: Include muscle_tab.h
|
|
||||||
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.
|
|
||||||
(macro_entry_s): Rename muscle_entry_s.
|
|
||||||
Update prototypes.
|
|
||||||
|
|
||||||
* src/muscle_tab.c: Include muscle_tab.h.
|
|
||||||
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.
|
|
||||||
(main): Call muscle_init ().
|
|
||||||
* src/Makefile.am (bison_SOURCES): Echo modifications.
|
|
||||||
|
|
||||||
2001-09-02 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
Now the files macro_tab.[ch] are named muscle_tab.[ch].
|
|
||||||
|
|
||||||
* src/muscle_tab.c, src/muscle_tab.h: Add files.
|
|
||||||
|
|
||||||
2001-09-02 Marc Autret <[email protected]>
|
|
||||||
|
|
||||||
* src/macrotab.c, src/macrotab.h: Remove.
|
|
||||||
|
|
||||||
2001-09-01 Pascal Bart <[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]>
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
+3
-1
@@ -123,6 +123,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,7 +137,7 @@ 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 missing \
|
||||||
mkinstalldirs
|
mkinstalldirs
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
|||||||
+100
-49
@@ -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,102 @@ 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.
|
||||||
local-check: changelog-check po-check writable-files copyright-check
|
# Run `changelog-check' as 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 +204,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
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
Bison News
|
Bison News
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Changes in version 1.28c:
|
Changes in version 1.28d:
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ 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]
|
||||||
Laurent Mascherpa [email protected]
|
Laurent Mascherpa [email protected]
|
||||||
Marc Autret [email protected]
|
Marc Autret [email protected]
|
||||||
Neil Booth [email protected]
|
Neil Booth [email protected]
|
||||||
|
|||||||
@@ -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
+7
-1
@@ -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-08-23'
|
||||||
|
|
||||||
# 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
|
||||||
@@ -333,6 +333,9 @@ EOF
|
|||||||
aushp:SunOS:*:*)
|
aushp:SunOS:*:*)
|
||||||
echo sparc-auspex-sunos${UNAME_RELEASE}
|
echo sparc-auspex-sunos${UNAME_RELEASE}
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
sparc*:NetBSD:*)
|
||||||
|
echo `uname -p`-unknown-netbsd${UNAME_RELEASE}
|
||||||
|
exit 0 ;;
|
||||||
atari*:OpenBSD:*:*)
|
atari*:OpenBSD:*:*)
|
||||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
@@ -1111,6 +1114,9 @@ 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
|
||||||
|
|||||||
Vendored
+3
-3
@@ -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-08-23'
|
||||||
|
|
||||||
# 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
|
||||||
@@ -246,7 +246,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 \
|
||||||
@@ -304,7 +304,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-* \
|
||||||
|
|||||||
+101
-8
@@ -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.3 - GNU automake"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-*)
|
-*)
|
||||||
@@ -61,7 +90,7 @@ Supported PROGRAM values:
|
|||||||
aclocal)
|
aclocal)
|
||||||
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
|
||||||
@@ -70,7 +99,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
|||||||
autoconf)
|
autoconf)
|
||||||
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
|
||||||
@@ -79,10 +108,10 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
|||||||
autoheader)
|
autoheader)
|
||||||
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
|
||||||
@@ -98,7 +127,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
|||||||
automake)
|
automake)
|
||||||
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 |
|
||||||
@@ -159,7 +188,32 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
|||||||
fi
|
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)
|
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 +229,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
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
AC_PREREQ(2.52)
|
AC_PREREQ(2.52)
|
||||||
AC_INIT(bison, 1.28c, [email protected])
|
AC_INIT(bison, 1.28d, [email protected])
|
||||||
AC_CONFIG_AUX_DIR(config)
|
AC_CONFIG_AUX_DIR(config)
|
||||||
AM_INIT_AUTOMAKE(bison, 1.28c)
|
AM_INIT_AUTOMAKE(bison, 1.28d)
|
||||||
AM_CONFIG_HEADER(config.h:config.hin)
|
AM_CONFIG_HEADER(config.h:config.hin)
|
||||||
|
|
||||||
# Initialize the test suite.
|
# Initialize the test suite.
|
||||||
|
|||||||
+17
-2
@@ -12,6 +12,10 @@ bison \- GNU Project parser generator (yacc replacement)
|
|||||||
] [
|
] [
|
||||||
.B \-\-defines
|
.B \-\-defines
|
||||||
] [
|
] [
|
||||||
|
.B \-g
|
||||||
|
] [
|
||||||
|
.B \-\-graph
|
||||||
|
] [
|
||||||
.B \-k
|
.B \-k
|
||||||
] [
|
] [
|
||||||
.B \-\-token-table
|
.B \-\-token-table
|
||||||
@@ -145,6 +149,17 @@ 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 \-g
|
||||||
|
.br
|
||||||
|
.ns
|
||||||
|
.TP
|
||||||
|
.BI \-\-graph
|
||||||
|
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
|
||||||
.B \-k
|
.B \-k
|
||||||
.br
|
.br
|
||||||
.ns
|
.ns
|
||||||
@@ -315,9 +330,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
@@ -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: 50688
|
||||||
bison.info-3: 99751
|
bison.info-3: 100578
|
||||||
bison.info-4: 147940
|
bison.info-4: 150128
|
||||||
bison.info-5: 190640
|
bison.info-5: 197515
|
||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
(Indirect)
|
(Indirect)
|
||||||
Node: Top1292
|
Node: Top1313
|
||||||
Node: Introduction8694
|
Node: Introduction8966
|
||||||
Node: Conditions9969
|
Node: Conditions10241
|
||||||
Node: Copying11433
|
Node: Copying11705
|
||||||
Node: Concepts30636
|
Node: Concepts30908
|
||||||
Node: Language and Grammar31715
|
Node: Language and Grammar31987
|
||||||
Node: Grammar in Bison36731
|
Node: Grammar in Bison37003
|
||||||
Node: Semantic Values38655
|
Node: Semantic Values38927
|
||||||
Node: Semantic Actions40756
|
Node: Semantic Actions41028
|
||||||
Node: Locations Overview41945
|
Node: Locations Overview42217
|
||||||
Node: Bison Parser43392
|
Node: Bison Parser43664
|
||||||
Node: Stages45704
|
Node: Stages45976
|
||||||
Node: Grammar Layout46987
|
Node: Grammar Layout47259
|
||||||
Node: Examples48243
|
Node: Examples48516
|
||||||
Node: RPN Calc49378
|
Node: RPN Calc49714
|
||||||
Node: Rpcalc Decls50351
|
Node: Rpcalc Decls50688
|
||||||
Node: Rpcalc Rules51916
|
Node: Rpcalc Rules52275
|
||||||
Node: Rpcalc Input53716
|
Node: Rpcalc Input54075
|
||||||
Node: Rpcalc Line55177
|
Node: Rpcalc Line55536
|
||||||
Node: Rpcalc Expr56292
|
Node: Rpcalc Expr56651
|
||||||
Node: Rpcalc Lexer58237
|
Node: Rpcalc Lexer58596
|
||||||
Node: Rpcalc Main60809
|
Node: Rpcalc Main61168
|
||||||
Node: Rpcalc Error61207
|
Node: Rpcalc Error61566
|
||||||
Node: Rpcalc Gen62215
|
Node: Rpcalc Gen62574
|
||||||
Node: Rpcalc Compile63345
|
Node: Rpcalc Compile63723
|
||||||
Node: Infix Calc64220
|
Node: Infix Calc64598
|
||||||
Node: Simple Error Recovery66927
|
Node: Simple Error Recovery67305
|
||||||
Node: Multi-function Calc68813
|
Node: Location Tracking Calc69194
|
||||||
Node: Mfcalc Decl70379
|
Node: Ltcalc Decls69924
|
||||||
Node: Mfcalc Rules72402
|
Node: Ltcalc Rules70833
|
||||||
Node: Mfcalc Symtab73782
|
Node: Ltcalc Lexer72894
|
||||||
Node: Exercises80155
|
Node: Multi-function Calc75232
|
||||||
Node: Grammar File80661
|
Node: Mfcalc Decl76799
|
||||||
Node: Grammar Outline81509
|
Node: Mfcalc Rules78822
|
||||||
Node: Prologue82197
|
Node: Mfcalc Symtab80202
|
||||||
Node: Bison Declarations82737
|
Node: Exercises86575
|
||||||
Node: Grammar Rules83143
|
Node: Grammar File87081
|
||||||
Node: Epilogue83605
|
Node: Grammar Outline87929
|
||||||
Node: Symbols84455
|
Node: C Declarations88663
|
||||||
Node: Rules89536
|
Node: Bison Declarations89243
|
||||||
Node: Recursion91175
|
Node: Grammar Rules89655
|
||||||
Node: Semantics92894
|
Node: C Code90115
|
||||||
Node: Value Type93988
|
Node: Symbols91045
|
||||||
Node: Multiple Types94646
|
Node: Rules96126
|
||||||
Node: Actions95663
|
Node: Recursion97765
|
||||||
Node: Action Types98448
|
Node: Semantics99484
|
||||||
Node: Mid-Rule Actions99751
|
Node: Value Type100578
|
||||||
Node: Locations105321
|
Node: Multiple Types101250
|
||||||
Node: Location Type105969
|
Node: Actions102267
|
||||||
Node: Actions and Locations106527
|
Node: Action Types105052
|
||||||
Node: Location Default Action108683
|
Node: Mid-Rule Actions106355
|
||||||
Node: Declarations110146
|
Node: Locations111925
|
||||||
Node: Token Decl111465
|
Node: Location Type112573
|
||||||
Node: Precedence Decl113478
|
Node: Actions and Locations113131
|
||||||
Node: Union Decl115029
|
Node: Location Default Action115287
|
||||||
Node: Type Decl115873
|
Node: Declarations116750
|
||||||
Node: Expect Decl116779
|
Node: Token Decl118069
|
||||||
Node: Start Decl118325
|
Node: Precedence Decl120082
|
||||||
Node: Pure Decl118703
|
Node: Union Decl121633
|
||||||
Node: Decl Summary120380
|
Node: Type Decl122477
|
||||||
Node: Multiple Parsers125763
|
Node: Expect Decl123383
|
||||||
Node: Interface127257
|
Node: Start Decl124929
|
||||||
Node: Parser Function128120
|
Node: Pure Decl125307
|
||||||
Node: Lexical128955
|
Node: Decl Summary126984
|
||||||
Node: Calling Convention130361
|
Node: Multiple Parsers132367
|
||||||
Node: Token Values133132
|
Node: Interface133861
|
||||||
Node: Token Positions134281
|
Node: Parser Function134733
|
||||||
Node: Pure Calling135166
|
Node: Lexical135568
|
||||||
Node: Error Reporting138098
|
Node: Calling Convention136974
|
||||||
Node: Action Features140220
|
Node: Token Values139745
|
||||||
Node: Algorithm143515
|
Node: Token Positions140894
|
||||||
Node: Look-Ahead145808
|
Node: Pure Calling141779
|
||||||
Node: Shift/Reduce147940
|
Node: Error Reporting144711
|
||||||
Node: Precedence150852
|
Node: Action Features146833
|
||||||
Node: Why Precedence151503
|
Node: Algorithm150128
|
||||||
Node: Using Precedence153368
|
Node: Look-Ahead152421
|
||||||
Node: Precedence Examples154336
|
Node: Shift/Reduce154553
|
||||||
Node: How Precedence155037
|
Node: Precedence157465
|
||||||
Node: Contextual Precedence156186
|
Node: Why Precedence158116
|
||||||
Node: Parser States157977
|
Node: Using Precedence159981
|
||||||
Node: Reduce/Reduce159220
|
Node: Precedence Examples160949
|
||||||
Node: Mystery Conflicts162781
|
Node: How Precedence161650
|
||||||
Node: Stack Overflow166167
|
Node: Contextual Precedence162799
|
||||||
Node: Error Recovery167540
|
Node: Parser States164590
|
||||||
Node: Context Dependency172676
|
Node: Reduce/Reduce165833
|
||||||
Node: Semantic Tokens173524
|
Node: Mystery Conflicts169394
|
||||||
Node: Lexical Tie-ins176541
|
Node: Stack Overflow172780
|
||||||
Node: Tie-in Recovery178055
|
Node: Error Recovery174153
|
||||||
Node: Debugging180227
|
Node: Context Dependency179289
|
||||||
Node: Invocation183478
|
Node: Semantic Tokens180137
|
||||||
Node: Bison Options184730
|
Node: Lexical Tie-ins183154
|
||||||
Node: Environment Variables188164
|
Node: Tie-in Recovery184702
|
||||||
Node: Option Cross Key189012
|
Node: Debugging186874
|
||||||
Node: VMS Invocation189856
|
Node: Invocation190175
|
||||||
Node: Table of Symbols190640
|
Node: Bison Options191427
|
||||||
Node: Glossary198241
|
Node: Environment Variables195039
|
||||||
Node: Copying This Manual204545
|
Node: Option Cross Key195887
|
||||||
Node: GNU Free Documentation License204754
|
Node: VMS Invocation196731
|
||||||
Node: Index224619
|
Node: Table of Symbols197515
|
||||||
|
Node: Glossary205154
|
||||||
|
Node: Copying This Manual211458
|
||||||
|
Node: GNU Free Documentation License211667
|
||||||
|
Node: Index231532
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
+30
-19
@@ -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,12 @@ 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.28d of Bison, updated 29 August 2001.
|
||||||
|
|
||||||
* Menu:
|
* Menu:
|
||||||
|
|
||||||
@@ -58,7 +61,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 +83,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 +104,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 +128,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 +237,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.28d 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 +990,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 +998,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 +1015,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 +1043,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 +1065,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
@@ -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
@@ -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.
|
|
||||||
|
|
||||||
|
|||||||
+126
-10
@@ -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'.
|
||||||
@@ -1066,6 +1176,12 @@ 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'
|
||||||
|
`--graph'
|
||||||
|
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'.
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
|||||||
+21
-19
@@ -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.
|
||||||
|
|||||||
+368
-151
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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
@@ -1,3 +1,4 @@
|
|||||||
@set UPDATED 15 August 2001
|
@set UPDATED 29 August 2001
|
||||||
@set EDITION 1.28c
|
@set UPDATED-MONTH August 2001
|
||||||
@set VERSION 1.28c
|
@set EDITION 1.28d
|
||||||
|
@set VERSION 1.28d
|
||||||
|
|||||||
+4
-3
@@ -1,3 +1,4 @@
|
|||||||
@set UPDATED 15 August 2001
|
@set UPDATED 29 August 2001
|
||||||
@set EDITION 1.28c
|
@set UPDATED-MONTH August 2001
|
||||||
@set VERSION 1.28c
|
@set EDITION 1.28d
|
||||||
|
@set VERSION 1.28d
|
||||||
|
|||||||
+1
-2
@@ -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
-19
@@ -104,7 +104,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 +114,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 +129,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 +140,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 +198,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 +234,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 +259,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
@@ -1,293 +0,0 @@
|
|||||||
/* hash.c -- hash table maintenance
|
|
||||||
Copyright (C) 1995 Free Software Foundation, Inc.
|
|
||||||
Written by Greg McGary <[email protected]>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
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
@@ -1,144 +0,0 @@
|
|||||||
/* hash.h -- decls for hash table
|
|
||||||
Copyright (C) 1995 Free Software Foundation, Inc.
|
|
||||||
Written by Greg McGary <[email protected]>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
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_ */
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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-08-29 14:32+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"
|
||||||
@@ -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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -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:1306
|
||||||
#, 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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, 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,7 +493,7 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "»{« hat kein Gegenstück"
|
msgstr "»{« hat kein Gegenstück"
|
||||||
@@ -511,115 +513,115 @@ msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "erneute %union Definition"
|
msgstr "erneute %union Definition"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "erneute %union Definition"
|
msgstr "erneute %union Definition"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "unbekannt: %s"
|
msgstr "unbekannt: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "keine Eingabe-Grammatik"
|
msgstr "keine Eingabe-Grammatik"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "unbekanntes Zeichen: %s"
|
msgstr "unbekanntes Zeichen: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "unbeendeter %%guard Fall"
|
msgstr "unbeendeter %%guard Fall"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
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:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, 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:1600
|
||||||
#, 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:1603
|
||||||
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:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, 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"
|
||||||
@@ -720,50 +722,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 +810,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 +817,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 +826,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 +840,24 @@ 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 "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"
|
||||||
|
|||||||
@@ -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-08-29 14:32+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"
|
||||||
@@ -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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -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:1306
|
||||||
#, 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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, 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,7 +580,7 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "`{' desemparejada"
|
msgstr "`{' desemparejada"
|
||||||
@@ -604,26 +606,26 @@ msgstr "no se reconoce el
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "declaraciones múltiples de %union"
|
msgstr "declaraciones múltiples de %union"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "declaraciones múltiples de %union"
|
msgstr "declaraciones múltiples de %union"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "no reconocido: %s"
|
msgstr "no reconocido: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "no hay gramática de entrada"
|
msgstr "no hay gramática de entrada"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "carácter desconocido: %s"
|
msgstr "carácter desconocido: %s"
|
||||||
@@ -632,93 +634,93 @@ 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:1204
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "cláusula %%guard sin terminar"
|
msgstr "cláusula %%guard sin terminar"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
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:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, 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:1600
|
||||||
#, 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:1603
|
||||||
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:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, 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"
|
||||||
@@ -831,50 +833,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 +945,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 +996,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 +1003,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 +1012,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 +1037,28 @@ 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 "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"
|
||||||
|
|||||||
@@ -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.28c\n"
|
||||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
"POT-Creation-Date: 2001-08-29 14:32+0200\n"
|
||||||
"PO-Revision-Date: 2000-04-11 22:19+02:00\n"
|
"PO-Revision-Date: 2001-08-21 21:53+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"
|
||||||
@@ -20,16 +20,15 @@ msgstr "liiga palju olekuid (maks %d)"
|
|||||||
|
|
||||||
#: lib/error.c:117 src/complain.c:100
|
#: lib/error.c:117 src/complain.c:100
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr ""
|
msgstr "Tundmatu süsteemi viga"
|
||||||
|
|
||||||
#: src/complain.c:154
|
#: src/complain.c:154
|
||||||
msgid "warning: "
|
msgid "warning: "
|
||||||
msgstr ""
|
msgstr "hoiatus: "
|
||||||
|
|
||||||
#: src/complain.c:242 src/complain.c:283
|
#: src/complain.c:242 src/complain.c:283
|
||||||
#, 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,14 +120,8 @@ 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
|
||||||
@@ -138,11 +131,11 @@ msgstr "%s derives"
|
|||||||
#: src/files.c:130
|
#: src/files.c:130
|
||||||
#, 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:149
|
||||||
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,20 +180,24 @@ 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
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
" -v, --verbose also produce an explanation of the automaton\n"
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
" -o, --output-file=FILE leave output to FILE\n"
|
" -o, --output-file=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"
|
||||||
@@ -209,44 +205,48 @@ msgstr ""
|
|||||||
" -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"
|
||||||
|
|
||||||
#: 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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -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:1306
|
||||||
#, 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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, 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,15 +499,15 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "puudub `{'"
|
msgstr "puudub %s"
|
||||||
|
|
||||||
#: src/reader.c:791
|
#: src/reader.c:791
|
||||||
#, 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:838
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -534,140 +519,127 @@ msgstr "tundmatu element %s, eeldasin identifikaatorit"
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "korduvad %union deklaratsioonid"
|
msgstr "korduvad %%header_extension eklaratsioonid"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "korduvad %union deklaratsioonid"
|
msgstr "korduvad %%source_extension deklaratsioonid"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "tundmatu: %s"
|
msgstr "tundmatu: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "sisendgrammatikat pole"
|
msgstr "sisendgrammatikat pole"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "tundmatu sümbol: %s"
|
msgstr "tundmatu sümbol: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "lõpetamata %guard klausel"
|
msgstr "lõpetamata %guard klausel"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
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:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, 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:1600
|
||||||
#, 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:1603
|
||||||
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:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, 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:404
|
||||||
#, fuzzy
|
|
||||||
msgid "Useless nonterminals:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr ""
|
msgstr "Kasutamata mitteterminalid:"
|
||||||
"Kasutamata mitteterminalid:\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:419
|
#: src/reduce.c:419
|
||||||
#, 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:430
|
||||||
#, fuzzy
|
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr ""
|
msgstr "Kasutamata reeglid:"
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"Kasutamata reeglid:\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:459
|
#: src/reduce.c:459
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -740,50 +712,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 +774,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 +793,41 @@ 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 "vcg graph: no such color."
|
||||||
#~ msgid "Memory exhausted"
|
#~ msgstr "vcg graph: sellist värvi pole."
|
||||||
#~ msgstr "%s: mälu on otsas\n"
|
|
||||||
|
|
||||||
#~ msgid "$%s is invalid"
|
#~ msgid "vcg graph: no such text mode"
|
||||||
#~ msgstr "$%s on vigane"
|
#~ msgstr "vcg graph: sellist teksti moodi pole"
|
||||||
|
|
||||||
#~ msgid "unterminated comment at end of file"
|
#~ msgid "vcg graph: no such shape"
|
||||||
#~ msgstr "lõpetamata kommentaar faili lõpus"
|
#~ msgstr "vcg graph: sellist vormi pole"
|
||||||
|
|
||||||
#~ msgid "unmatched close-brace (`}')"
|
#~ msgid "vcg graph: no such decision"
|
||||||
#~ msgstr "puudub sulgev loogeline sulg (`}')"
|
#~ msgstr "vcg graph: sellist otsust pole"
|
||||||
|
|
||||||
#~ msgid "unmatched right brace (`}')"
|
#~ msgid "vcg graph: no such an orientation"
|
||||||
#~ msgstr "puudub sulgev loogeline sulg (`}')"
|
#~ msgstr "vcg graph: sellist orientatsiooni pole"
|
||||||
|
|
||||||
#~ msgid "ill-formed %type declaration"
|
#~ msgid "vcg graph: no such an alignement"
|
||||||
#~ msgstr "vigaselt formeeritud %type deklaratsioon"
|
#~ msgstr "vcg graph: sellist joondamist pole"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "vcg graph: no such an arrow mode"
|
||||||
#~ "\n"
|
#~ msgstr "vcg graph: sellist noole moodi pole"
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "FIRSTS\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "FIRSTS\n"
|
|
||||||
#~ "\n"
|
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "vcg graph: no such crossing_type"
|
||||||
#~ "\n"
|
#~ msgstr "vcg graph: sellist ristumise tüüpi pole"
|
||||||
#~ "\n"
|
|
||||||
#~ "%s firsts\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "%s firsts\n"
|
|
||||||
#~ "\n"
|
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "vcg graph: no such view"
|
||||||
#~ "\n"
|
#~ msgstr "vcg graph: sellist vaadet pole"
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "FDERIVES\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "FDERIVES\n"
|
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "vcg graph: no such linestyle"
|
||||||
#~ "\n"
|
#~ msgstr "vcg graph: sellist joone stiili pole"
|
||||||
#~ "\n"
|
|
||||||
#~ "%s derives\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "\n"
|
|
||||||
#~ "\n"
|
|
||||||
#~ "%s derives\n"
|
|
||||||
#~ "\n"
|
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "vcg graph: no such an arrowstyle"
|
||||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
#~ msgstr "vcg graph: sellist noole stiili pole"
|
||||||
#~ " [--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"
|
|
||||||
|
|||||||
@@ -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.28c\n"
|
||||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
"POT-Creation-Date: 2001-08-29 14:32+0200\n"
|
||||||
"PO-Revision-Date: 2001-08-06 11:28+0200\n"
|
"PO-Revision-Date: 2001-08-28 08: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,15 +17,15 @@ 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:100
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr ""
|
msgstr "Erreur système inconnue"
|
||||||
|
|
||||||
#: src/complain.c:154
|
#: src/complain.c:154
|
||||||
msgid "warning: "
|
msgid "warning: "
|
||||||
msgstr ""
|
msgstr "AVERTISSEMENT: "
|
||||||
|
|
||||||
#: src/complain.c:242 src/complain.c:283
|
#: src/complain.c:242 src/complain.c:283
|
||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
@@ -121,14 +122,8 @@ 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
|
||||||
@@ -138,28 +133,31 @@ msgstr "%s d
|
|||||||
#: src/files.c:130
|
#: src/files.c:130
|
||||||
#, 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:149
|
||||||
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,62 +182,84 @@ 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
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
" -v, --verbose also produce an explanation of the automaton\n"
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
" -o, --output-file=FILE leave output to FILE\n"
|
" -o, --output-file=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"
|
||||||
|
|
||||||
#: 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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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:70
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
@@ -246,7 +270,6 @@ msgid "unterminated comment"
|
|||||||
msgstr "le commentaire ne se termine pas"
|
msgstr "le commentaire ne se termine pas"
|
||||||
|
|
||||||
#: src/lex.c:131
|
#: src/lex.c:131
|
||||||
#, fuzzy
|
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "Fin de fichier inattendue"
|
msgstr "Fin de fichier inattendue"
|
||||||
|
|
||||||
@@ -282,18 +305,18 @@ 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 +357,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 +375,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 +391,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 +422,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 +432,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 +443,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:1306
|
||||||
#, 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 +471,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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, 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,15 +505,15 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, 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:791
|
||||||
#, 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:838
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -517,140 +525,127 @@ msgstr "item %s non reconnu, un identificateur est attendu"
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "multiples déclarations %union"
|
msgstr "multiples déclarations %%header_extension"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "multiples déclarations %union"
|
msgstr "multiples déclarations %%source_extension"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "non reconnu: %s"
|
msgstr "non reconnu: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "aucune grammaire en entrée"
|
msgstr "aucune grammaire en entrée"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "caractère inconnu: %s"
|
msgstr "caractère inconnu: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, 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:1371
|
||||||
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:1378
|
||||||
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:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, 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:1600
|
||||||
#, 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:1603
|
||||||
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:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, 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:404
|
||||||
#, 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:419
|
||||||
#, 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:430
|
||||||
#, 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:459
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -708,7 +703,7 @@ msgstr " et "
|
|||||||
#: src/reduce.c:509
|
#: src/reduce.c:509
|
||||||
#, 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:542
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -723,50 +718,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 +765,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 ambiguë\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 +799,73 @@ 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 "vcg graph: no such color."
|
||||||
#~ msgid "Memory exhausted"
|
#~ msgstr "graphe vcg: pas de telle couleur"
|
||||||
#~ msgstr "%s: mémoire épuisée\n"
|
|
||||||
|
|
||||||
#~ msgid "$%s is invalid"
|
#~ msgid "vcg graph: no such text mode"
|
||||||
#~ msgstr "$%s n'est pas valide"
|
#~ msgstr "graphe vcg: pas de tel mode texte"
|
||||||
|
|
||||||
#~ msgid "unmatched close-brace (`}')"
|
#~ msgid "vcg graph: no such shape"
|
||||||
#~ msgstr "accolade fermante `}' non appariée"
|
#~ msgstr "graphe vcg: pas de telle forme"
|
||||||
|
|
||||||
#~ msgid "unmatched right brace (`}')"
|
#~ msgid "vcg graph: no such decision"
|
||||||
#~ msgstr "accolade fermante `}' non appariée"
|
#~ 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 +890,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 +901,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 +908,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 +917,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 +931,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"
|
||||||
|
|||||||
@@ -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-08-29 14:32+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"
|
||||||
@@ -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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -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:1306
|
||||||
#, 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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "無効な %start が宣言されました"
|
msgstr "無効な %start が宣言されました"
|
||||||
@@ -496,7 +498,7 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "対応のない `{' です"
|
msgstr "対応のない `{' です"
|
||||||
@@ -516,112 +518,112 @@ msgstr "ǧ
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "複数の %union 宣言です"
|
msgstr "複数の %union 宣言です"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "複数の %union 宣言です"
|
msgstr "複数の %union 宣言です"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "認識できない: %s"
|
msgstr "認識できない: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "文法の入力が無い"
|
msgstr "文法の入力が無い"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "未知の文字: %s"
|
msgstr "未知の文字: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "閉じられていない %%guard 節です"
|
msgstr "閉じられていない %%guard 節です"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "文法は縦棒 (|) で始めます"
|
msgstr "文法は縦棒 (|) で始めます"
|
||||||
|
|
||||||
#: src/reader.c:1371
|
#: src/reader.c:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "無効な入力: %s"
|
msgstr "無効な入力: %s"
|
||||||
|
|
||||||
#: src/reader.c:1562
|
#: src/reader.c:1600
|
||||||
#, 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:1603
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "入力した文法に規則が定義されていません"
|
msgstr "入力した文法に規則が定義されていません"
|
||||||
|
|
||||||
#: src/reader.c:1589
|
#: src/reader.c:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "開始シンボル %s はトークンです"
|
msgstr "開始シンボル %s はトークンです"
|
||||||
@@ -722,50 +724,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 +812,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"
|
||||||
@@ -950,6 +901,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 "無効な @-コンストラクトです"
|
||||||
|
|
||||||
|
|||||||
@@ -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-08-29 14:32+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"
|
||||||
@@ -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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -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:1306
|
||||||
#, 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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "onjuiste %start declaratie"
|
msgstr "onjuiste %start declaratie"
|
||||||
@@ -498,7 +500,7 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "niet overeenkomstige `{'"
|
msgstr "niet overeenkomstige `{'"
|
||||||
@@ -518,113 +520,113 @@ msgstr "onbekend item %s, verwacht een identifier"
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "meerdere %union declaraties"
|
msgstr "meerdere %union declaraties"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "meerdere %union declaraties"
|
msgstr "meerdere %union declaraties"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "onbekend: %s"
|
msgstr "onbekend: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "geen invoer grammatica"
|
msgstr "geen invoer grammatica"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "onbekend karakter: %s"
|
msgstr "onbekend karakter: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "niet getermineerde %%guard voorwaarde"
|
msgstr "niet getermineerde %%guard voorwaarde"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
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:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, 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:1600
|
||||||
#, 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:1603
|
||||||
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:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, 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"
|
||||||
@@ -725,50 +727,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 +815,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 +861,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 +868,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 +876,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 +890,24 @@ 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 "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"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.28a\n"
|
"Project-Id-Version: bison 1.28a\n"
|
||||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
"POT-Creation-Date: 2001-08-29 14:32+0200\n"
|
||||||
"PO-Revision-Date: 2000-04-12 13:16+04:00\n"
|
"PO-Revision-Date: 2000-04-12 13:16+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"
|
||||||
@@ -198,12 +198,15 @@ msgstr ""
|
|||||||
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
|
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
|
||||||
|
|
||||||
#: src/getargs.c:116
|
#: src/getargs.c:116
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
" -v, --verbose also produce an explanation of the automaton\n"
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
" -o, --output-file=FILE leave output to FILE\n"
|
" -o, --output-file=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"
|
||||||
@@ -211,44 +214,44 @@ msgstr ""
|
|||||||
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
|
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
|
||||||
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
|
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\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 ""
|
||||||
|
|
||||||
#: 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:210 src/lex.c:636
|
||||||
#, 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:234
|
||||||
#, 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:241
|
||||||
#, 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:245
|
||||||
#, 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"
|
||||||
@@ -472,7 +475,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:1306
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
||||||
@@ -487,7 +490,7 @@ msgstr "`%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:893 src/reader.c:918 src/reader.c:1284
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
|
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
|
||||||
@@ -516,7 +519,7 @@ 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:759 src/reader.c:1110 src/reader.c:1181
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "ÎÅÐÁÒÎÁÑ `{'"
|
msgstr "ÎÅÐÁÒÎÁÑ `{'"
|
||||||
@@ -536,111 +539,111 @@ msgstr "
|
|||||||
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:930
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%header_extension declarations"
|
msgid "multiple %%header_extension declarations"
|
||||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
||||||
|
|
||||||
#: src/reader.c:902
|
#: src/reader.c:940
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "multiple %%source_extension declarations"
|
msgid "multiple %%source_extension declarations"
|
||||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
||||||
|
|
||||||
#: src/reader.c:988
|
#: src/reader.c:1026
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
|
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
|
||||||
|
|
||||||
#: src/reader.c:993
|
#: src/reader.c:1031
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
|
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
|
||||||
|
|
||||||
#: src/reader.c:998
|
#: src/reader.c:1036
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
|
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
|
||||||
|
|
||||||
#: src/reader.c:1166
|
#: src/reader.c:1204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unterminated %guard clause"
|
msgid "unterminated %guard clause"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
||||||
|
|
||||||
#: src/reader.c:1333
|
#: src/reader.c:1371
|
||||||
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:1378
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
||||||
|
|
||||||
#: src/reader.c:1371
|
#: src/reader.c:1409
|
||||||
#, 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:1511
|
||||||
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:1519
|
||||||
#, fuzzy, c-format
|
#, fuzzy, 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:1528
|
||||||
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:1542
|
||||||
#, 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:1548
|
||||||
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:1592
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
||||||
|
|
||||||
#: src/reader.c:1562
|
#: src/reader.c:1600
|
||||||
#, 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:1603
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
||||||
|
|
||||||
#: src/reader.c:1589
|
#: src/reader.c:1627
|
||||||
#, 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:1732
|
||||||
#, 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:1744
|
||||||
#, 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:1795
|
||||||
#, 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:1808
|
||||||
#, 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:1810
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||||
@@ -741,50 +744,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"
|
||||||
|
|||||||
@@ -3,4 +3,3 @@
|
|||||||
Makefile
|
Makefile
|
||||||
bison
|
bison
|
||||||
*.log
|
*.log
|
||||||
*.flc
|
|
||||||
+5
-7
@@ -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
-20
@@ -115,9 +115,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 +124,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 +143,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 +160,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 +241,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 +289,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 +312,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
@@ -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
|
|
||||||
|
|
||||||
|
|||||||
+34
-5
@@ -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", no_argument, 0, 'd'},
|
||||||
|
{"verbose", no_argument, 0, 'v'},
|
||||||
|
{"file-prefix", required_argument, 0, 'b'},
|
||||||
|
{"output-file", required_argument, 0, 'o'},
|
||||||
|
{"graph", no_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)
|
||||||
{
|
{
|
||||||
@@ -206,7 +236,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);
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -510,23 +509,59 @@ 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;
|
||||||
|
int 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
|
||||||
|
{ "header_extension", NULL, tok_hdrext },
|
||||||
|
{ "source_extension", NULL, tok_srcext },
|
||||||
|
{ "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. */
|
||||||
@@ -535,7 +570,7 @@ int
|
|||||||
parse_percent_token (void)
|
parse_percent_token (void)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
const struct option_table_struct *tx;
|
struct percent_table_struct *tx;
|
||||||
|
|
||||||
c = getc (finput);
|
c = getc (finput);
|
||||||
|
|
||||||
@@ -569,8 +604,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 +615,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 +625,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;
|
||||||
@@ -603,5 +637,5 @@ parse_percent_token (void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return tx->ret_val;
|
return tx->retval;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,8 +49,6 @@ typedef enum token_e
|
|||||||
tok_thong,
|
tok_thong,
|
||||||
tok_hdrext,
|
tok_hdrext,
|
||||||
tok_srcext,
|
tok_srcext,
|
||||||
tok_define,
|
|
||||||
tok_skel,
|
|
||||||
tok_noop,
|
tok_noop,
|
||||||
tok_setopt,
|
tok_setopt,
|
||||||
tok_illegal,
|
tok_illegal,
|
||||||
|
|||||||
+1
-3
@@ -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. */
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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
@@ -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);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|
||||||
|
|||||||
+10
-5
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+130
-153
@@ -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;
|
||||||
|
|
||||||
@@ -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,7 +736,7 @@ parse_union_decl (void)
|
|||||||
|
|
||||||
while (c != EOF)
|
while (c != EOF)
|
||||||
{
|
{
|
||||||
obstack_1grow (&union_obstack, c);
|
obstack_1grow (&attrs_obstack, c);
|
||||||
if (defines_flag)
|
if (defines_flag)
|
||||||
obstack_1grow (&defines_obstack, c);
|
obstack_1grow (&defines_obstack, c);
|
||||||
|
|
||||||
@@ -775,7 +747,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 +760,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,87 +874,72 @@ parse_thong_decl (void)
|
|||||||
nsyms--;
|
nsyms--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME. */
|
/*--------------------------------------------------------------.
|
||||||
|
| Parse what comes after %header_extension and %source_etension |
|
||||||
|
`--------------------------------------------------------------*/
|
||||||
|
|
||||||
static void
|
static const char *
|
||||||
parse_muscle_decl (void)
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* %header_extension case. */
|
||||||
/*----------------------------------.
|
|
||||||
| 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
|
static void
|
||||||
parse_header_extension_decl (void)
|
parse_header_extension_decl (void)
|
||||||
{
|
{
|
||||||
char buff[32];
|
|
||||||
|
|
||||||
if (header_extension)
|
if (header_extension)
|
||||||
complain (_("multiple %%header_extension declarations"));
|
complain (_("multiple %%header_extension declarations"));
|
||||||
fscanf (finput, "%s", buff);
|
|
||||||
header_extension = xstrdup (buff);
|
header_extension = parse_dquoted_param ("%header_extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------.
|
/* %source_extension case. */
|
||||||
| Parse what comes after %source_extension. |
|
|
||||||
`------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_source_extension_decl (void)
|
parse_source_extension_decl (void)
|
||||||
{
|
{
|
||||||
char buff[32];
|
|
||||||
|
|
||||||
if (src_extension)
|
if (src_extension)
|
||||||
complain (_("multiple %%source_extension declarations"));
|
complain (_("multiple %%source_extension declarations"));
|
||||||
fscanf (finput, "%s", buff);
|
|
||||||
src_extension = xstrdup (buff);
|
src_extension = parse_dquoted_param ("%source_extension");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------.
|
/*----------------------------------------------------------------.
|
||||||
@@ -1064,14 +1019,6 @@ read_declarations (void)
|
|||||||
parse_source_extension_decl ();
|
parse_source_extension_decl ();
|
||||||
break;
|
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 +1057,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 +1150,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 +1602,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 +1632,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 +1678,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 +1698,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 +1801,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 +1949,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 +1964,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 +1997,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
@@ -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_ */
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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. */
|
||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -13,3 +13,4 @@ calc.[chy]
|
|||||||
calc.tab.*
|
calc.tab.*
|
||||||
calc
|
calc
|
||||||
*.output *.vcg
|
*.output *.vcg
|
||||||
|
autom4te.cache
|
||||||
|
|||||||
+1
-1
@@ -245,7 +245,7 @@ AT_DEFINE([AT_DATA_CALC_Y],
|
|||||||
[_AT_DATA_CALC_Y($[1], $[2], $[3],
|
[_AT_DATA_CALC_Y($[1], $[2], $[3],
|
||||||
[ifelse(regexp([$1], [--yyerror-verbose]),
|
[ifelse(regexp([$1], [--yyerror-verbose]),
|
||||||
[-1], [],
|
[-1], [],
|
||||||
[[#define YYERROR_VERBOSE 1]])])])
|
[[#define YYERROR_VERBOSE]])])])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+37
-2
@@ -29,8 +29,7 @@ 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([-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([-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_FLAGS([-b bar], [bar.output bar.tab.c bar.tab.h])
|
||||||
|
AT_CHECK_BISON_FLAGS([-g -o foo.c], [foo.c foo.h foo.output foo.vcg])
|
||||||
|
|
||||||
|
|
||||||
# AT_CHECK_BISON_PERCENT(GRAMMAR-OPTIONS, EXPECTED-FILES-SORTED)
|
# AT_CHECK_BISON_PERCENT(GRAMMAR-OPTIONS, EXPECTED-FILES-SORTED)
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
@@ -57,5 +56,41 @@ AT_CHECK_BISON_PERCENT([], [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([%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_CHECK_BISON_PERCENT([%file_prefix bar], [bar.output bar.tab.c bar.tab.h])
|
||||||
|
|
||||||
|
# AT_CHECK_BISON_PERCENT_FLAGS(GRAMMAR_OPTIONS, FLAGS, EXPECTED-FILES-SORTED)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
AT_DEFINE([AT_CHECK_BISON_PERCENT_FLAGS],
|
||||||
|
[AT_SETUP([Output files: $1.])
|
||||||
|
AT_DATA([foo.yy],
|
||||||
|
[[$1
|
||||||
|
%defines
|
||||||
|
%verbose
|
||||||
|
%%
|
||||||
|
foo: {}
|
||||||
|
]])
|
||||||
|
rm -rf $3
|
||||||
|
AT_CHECK([bison foo.yy $2], 0, ignore, ignore)
|
||||||
|
AT_CHECK([ls $3 | sort | tr '\n' ' ' | sed 's/.$//g'], 0, [$3])
|
||||||
|
rm -f $3
|
||||||
|
AT_CLEANUP
|
||||||
|
])
|
||||||
|
|
||||||
|
# Check priorities of extension control.
|
||||||
|
AT_CHECK_BISON_PERCENT_FLAGS(
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
[foo.output foo.tab.cc foo.tab.hh])
|
||||||
|
AT_CHECK_BISON_PERCENT_FLAGS(
|
||||||
|
[],
|
||||||
|
[-o foo.c],
|
||||||
|
[foo.c foo.h foo.output])
|
||||||
|
AT_CHECK_BISON_PERCENT_FLAGS(
|
||||||
|
[%source_extension ".cpp"] [%header_extension ".hhh"],
|
||||||
|
[],
|
||||||
|
[foo.output foo.tab.cpp foo.tab.hhh])
|
||||||
|
AT_CHECK_BISON_PERCENT_FLAGS(
|
||||||
|
[%source_extension ".cc"] [%header_extension ".hh"],
|
||||||
|
[-o foo.c],
|
||||||
|
[foo.c foo.h foo.output])
|
||||||
|
|
||||||
AT_INCLUDE([calc.at])
|
AT_INCLUDE([calc.at])
|
||||||
AT_INCLUDE([regression.at])
|
AT_INCLUDE([regression.at])
|
||||||
|
|||||||
Reference in New Issue
Block a user