mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-28 03:55:16 +00:00
Compare commits
71
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c20e2bdcf1 | ||
|
|
1c8c2190b1 | ||
|
|
180d45ba81 | ||
|
|
c51d1a1973 | ||
|
|
577c6c8499 | ||
|
|
6f9344dadf | ||
|
|
652def8074 | ||
|
|
209215672e | ||
|
|
25b222faf6 | ||
|
|
6bc35ae56a | ||
|
|
31b53af2fa | ||
|
|
a474de9b9a | ||
|
|
c0629aa10f | ||
|
|
82b6d266fd | ||
|
|
75f5aaea27 | ||
|
|
f508cb0ac9 | ||
|
|
f3c383d683 | ||
|
|
13105fc158 | ||
|
|
b0c4483ed2 | ||
|
|
714720fcfe | ||
|
|
4766a52862 | ||
|
|
11d82f03b4 | ||
|
|
a0ed1cb86a | ||
|
|
f753cd6292 | ||
|
|
93a37297e6 | ||
|
|
4134cae3c5 | ||
|
|
682d48cd09 | ||
|
|
53cdf751a3 | ||
|
|
087c8fdae3 | ||
|
|
7a999fcb7b | ||
|
|
dda680cb80 | ||
|
|
6b7d911c5d | ||
|
|
9e644e648d | ||
|
|
17da6427fe | ||
|
|
01ed3db59b | ||
|
|
e8cb70b957 | ||
|
|
63c2d5de0f | ||
|
|
675bc4e954 | ||
|
|
d8cb51834b | ||
|
|
6c686258e3 | ||
|
|
c111e171cd | ||
|
|
8f451ef727 | ||
|
|
5086915ebd | ||
|
|
416bd7a9f3 | ||
|
|
997b6fd0c7 | ||
|
|
2ba3b73c58 | ||
|
|
ff48177d25 | ||
|
|
4e5caae2c6 | ||
|
|
b33160bf45 | ||
|
|
535c0e75d1 | ||
|
|
d1a2daf76a | ||
|
|
2b763dfe15 | ||
|
|
f1a87ef6ad | ||
|
|
cbd8990652 | ||
|
|
82e236e2d6 | ||
|
|
b0cfa28a12 | ||
|
|
6fc7423473 | ||
|
|
40a64a7a48 | ||
|
|
944bc6ce43 | ||
|
|
9c76d118cc | ||
|
|
a8289c62db | ||
|
|
b6610515d5 | ||
|
|
26f609ffc3 | ||
|
|
6f43b11362 | ||
|
|
dd3127cf7a | ||
|
|
aa321494cf | ||
|
|
68bd3b6bfa | ||
|
|
bbb5bcc6f8 | ||
|
|
667a550e7b | ||
|
|
713fa62a74 | ||
|
|
83cd972a1a |
+2
-2
@@ -3,10 +3,10 @@ config.cache
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
stamp-h*
|
||||
stamp-h
|
||||
bison-*
|
||||
patches
|
||||
*.patch *.log log patches applied
|
||||
*.prj
|
||||
releases
|
||||
autom4te.cache
|
||||
*.flc
|
||||
@@ -1,364 +1,364 @@
|
||||
2001-09-27 Akim Demaille <akim@epita.fr>
|
||||
2001-09-25 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
Version 1.29b.
|
||||
* src/output.c (output_master_parser): Don't finish action_obstack.
|
||||
(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-25 Akim Demaille <akim@epita.fr>
|
||||
2001-09-23 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
* 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/system.h: Include `xalloc.h'.
|
||||
Remove it from the C files.
|
||||
* src/files.c (output_files): Free the obstacks.
|
||||
* src/lex.c (init_lex): Rename as...
|
||||
(lex_init): this.
|
||||
(lex_free): New.
|
||||
* src/main.c (main): Use it.
|
||||
* src/options.c (symtab.h): Include it, need by lex.h.
|
||||
|
||||
2001-09-20 Pascal Bart <[email protected]>
|
||||
|
||||
2001-09-24 Marc Autret <[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/vcg.c (open_edge, close_edge, open_node, close_node): Change
|
||||
to output informations in fout (FILE*).
|
||||
(open_graph, close_graph): Likewise.
|
||||
(output_graph, output_edge, output_node): Likewise.
|
||||
* src/vcg.h: Update function prototypes.
|
||||
* src/print_graph.c (print_graph): Open output graph file.
|
||||
(print_actions): Adjust.
|
||||
* src/files.h: Remove extern declaration.
|
||||
* src/files.c: Remove graph_obstack declaration.
|
||||
(open_files): Remove graph_obstack initialization.
|
||||
(output_files): Remove graph_obstack saving.
|
||||
* 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-24 Marc Autret <[email protected]>
|
||||
2001-09-20 Marc Autret <[email protected]>
|
||||
|
||||
* src/files.c (compute_output_file_names): Fix.
|
||||
* doc/bison.texinfo: Adjust terminologies about prologue and epilogue
|
||||
sections of Bison.
|
||||
|
||||
2001-09-24 Marc Autret <[email protected]>, Akim Demaille <akim@epita.fr>
|
||||
2001-09-19 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
* src/reader.c (reader): Remove call to free_symtab ().
|
||||
* src/main.c (main): Call it here.
|
||||
Include symtab.h.
|
||||
* src/conflicts.c (initialize_conflicts): Rename as...
|
||||
(solve_conflicts): this.
|
||||
* src/print.c (print_core, print_actions, print_state)
|
||||
(print_grammar): Dump to a file instead a `output_obstack'.
|
||||
(print_results): Dump `output_obstack', and then proceed with the
|
||||
FILE *.
|
||||
* src/files.c (compute_output_file_names, close_files): New.
|
||||
(output_files): Adjust.
|
||||
* src/main.c (main): Adjust.
|
||||
* src/bison.simple: s/%%filename/%%skeleton.
|
||||
* src/muscle_tab.c (getargs.h): Include it.
|
||||
(muscle_init): Insert new muscle skeleton.
|
||||
|
||||
2001-09-23 Marc Autret <autret_m@epita.fr>
|
||||
2001-09-18 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
* src/files.c (compute_header_macro): Computes header macro name
|
||||
from spec_defines_file when given.
|
||||
* src/output.c (output_parser): Delete unused variable actions_dumped.
|
||||
|
||||
2001-09-23 Marc Autret <autret_m@epita.fr>
|
||||
2001-09-07 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
* src/files.c (output_files): Add default extensions.
|
||||
* 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]>
|
||||
|
||||
2001-09-22 Akim Demaille <[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.
|
||||
|
||||
* src/conflicts.c (finalize_conflicts): Rename as...
|
||||
(free_conflicts): this.
|
||||
2001-08-31 Pascal Bart <[email protected]>
|
||||
|
||||
2001-09-22 Akim Demaille <[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.
|
||||
|
||||
* src/gram.c (gram_free): Rename back as...
|
||||
(dummy): this.
|
||||
(output_token_translations): Free `token_translations'.
|
||||
* src/symtab.c (free_symtab): Free the tag field.
|
||||
2001-08-30 Marc Autret <[email protected]>
|
||||
|
||||
2001-09-22 Akim Demaille <[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.
|
||||
|
||||
Remove `translations' as it is always set to true.
|
||||
2001-08-29 Marc Autret <[email protected]>
|
||||
|
||||
* src/gram.h: Adjust.
|
||||
* src/reader.c (packsymbols, parse_token_decl): Adjust
|
||||
* src/print.c (print_grammar): Adjust.
|
||||
* src/output.c (output_token_translations): Adjust.
|
||||
* src/lex.c (lex): Adjust.
|
||||
* src/gram.c: Be sure the set pointers to NULL.
|
||||
(dummy): Rename as...
|
||||
(gram_free): this.
|
||||
* 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-09-22 Akim Demaille <aki[email protected]>
|
||||
2001-08-28 Marc Autret <autret_[email protected]>
|
||||
|
||||
* configure.in: Invoke AM_LIB_DMALLOC.
|
||||
* src/system.h: Use dmalloc.
|
||||
* src/LR0.c: Be sure to have pointers initialized to NULL.
|
||||
(allocate_itemsets): Allocate kernel_items only if needed.
|
||||
* src/output.c (output_actions): Clean up.
|
||||
(output_gram): CPP-out useless code.
|
||||
* src/reader.c (reader): Clean up, CPP-out useless code.
|
||||
|
||||
2001-09-22 Akim Demaille <akim@epita.fr>
|
||||
2001-08-28 Pascal Bart <pascal.bart@epita.fr>
|
||||
|
||||
* configure.in: Bump to 1.29b.
|
||||
* tests/Makefile.am (DISTCLEANFILES): Add package.m4.
|
||||
* tests/calc.at (_AT_DATA_CALC_Y): #undef malloc so that we don't
|
||||
need xmalloc.c in calc.y.
|
||||
From Pascal Bart.
|
||||
|
||||
2001-09-21 Akim Demaille <[email protected]>
|
||||
|
||||
Version 1.29a.
|
||||
* Makefile.maint, config/config.guess, config/config.sub,
|
||||
* config/missing: Update from masters.
|
||||
* tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend
|
||||
upon package.m4.
|
||||
* configure.in (ALL_LINGUAS): Add `tr'.
|
||||
|
||||
2001-09-21 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/Makefile.am (package.m4): Move to...
|
||||
($(srcdir)/$(TESTSUITE)): here.
|
||||
|
||||
2001-09-20 Akim Demaille <[email protected]>
|
||||
|
||||
* src/complain.c: No longer try to be standalone: use system.h.
|
||||
Don't assume __STDC__ is defined to 1. Just test if it is defined.
|
||||
* src/complain.h: Likewise.
|
||||
* src/reduce.c (useless_nonterminals, inaccessable_symbols):
|
||||
Remove the unused variable `n'.
|
||||
From Albert Chin-A-Young.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* doc/bison.1: Update.
|
||||
* doc/bison.texinfo (Bison Options): Update --defines and --graph
|
||||
descriptions.
|
||||
(Option Cross Key): Update.
|
||||
Add --graph.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* tests/regression.at: New test (comment in %union).
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment
|
||||
do that.
|
||||
Reported by Keith Browne.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* tests/output.at: Add tests for --defines and --graph.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* tests/output.at: Removes tests of %{header,src}_extension features.
|
||||
|
||||
2001-09-18 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/Makefile.am (package.m4): New.
|
||||
* tests/calc.at (_AT_CHECK_CALC): Just run `calc input'.
|
||||
(_AT_CHECK_CALC_ERROR): Likewise.
|
||||
Factor the `, ' part of verbose error messages.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
* src/getargs.c (longopts): Declare --defines and --graph as options
|
||||
with optional arguments.
|
||||
* src/files.h: Add extern declarations.
|
||||
* src/files.c (spec_graph_file, spec_defines_file): New.
|
||||
(output_files): Update.
|
||||
Remove CPP-outed code.
|
||||
|
||||
2001-09-18 Marc Autret <[email protected]>
|
||||
|
||||
Turn off %{source,header}_extension feature.
|
||||
|
||||
* src/files.c (compute_exts_from_gf): Update.
|
||||
(compute_exts_from_src): Update.
|
||||
(output_files): CPP-out useless code.
|
||||
* src/files.h: Remove {header,source}_extension extern declarations.
|
||||
* src/reader.c (parse_dquoted_param): CPP-out.
|
||||
(parse_header_extension_decl): Remove.
|
||||
(parse_source_extension_decl): Remove.
|
||||
(read_declarations): Remove cases tok_{hdrext,srcext}.
|
||||
* src/lex.c (percent_table): Remove {header,source}_extension entries.
|
||||
* src/lex.h (token_t): Remove tok_hdrext and tok_srcext.
|
||||
|
||||
2001-09-10 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT):
|
||||
(AT_CHECK_BISON_PERCENT_FLAGS): Merge into...
|
||||
(AT_CHECK_OUTPUT): this.
|
||||
Merely check ls' exit status, its output is useless.
|
||||
|
||||
2001-09-10 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/calc.at: Use m4_match.
|
||||
(_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'.
|
||||
|
||||
2001-09-10 Marc Autret <[email protected]>, Akim Demaille <[email protected]>
|
||||
|
||||
* src/vcg.h (graph_s): color, textcolor, bordercolor are now
|
||||
enum color_e.
|
||||
* src/print_graph.c (print_graph): Initalize graph.layoutalgorithm
|
||||
to `normal'.
|
||||
* src/reader.c (parse_token_decl): Initialize token with tok_eof.
|
||||
* src/lex.h: Adjust prototype.
|
||||
(token_t): Add `tok_undef'.
|
||||
* src/lex.c (struct percent_table_struct): Retval is now a token_t.
|
||||
(parse_percent_token): Now returns token_t.
|
||||
Add default statement in switch.
|
||||
(lex): Separate `c' as an input variable, from the token_t result
|
||||
part.
|
||||
(unlexed): Is a token_t.
|
||||
|
||||
2001-09-10 Akim Demaille <[email protected]>
|
||||
|
||||
* configure.in: Bump to 1.29a.
|
||||
|
||||
2001-09-07 Akim Demaille <[email protected]>
|
||||
|
||||
Version 1.29.
|
||||
|
||||
2001-08-30 Akim Demaille <[email protected]>
|
||||
|
||||
* tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove.
|
||||
* m4/atconfig.m4: Remove.
|
||||
* tests/testsuite.at, tests/atlocal.in, tests/output.at,
|
||||
* tests/bison: New.
|
||||
* tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER,
|
||||
m4_if, m4_patsubst, and m4_regexp.
|
||||
* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an
|
||||
`input' file instead of echo.
|
||||
|
||||
2001-08-29 Akim Demaille <[email protected]>
|
||||
|
||||
Bump to 1.28e.
|
||||
|
||||
2001-08-29 Akim Demaille <[email protected]>
|
||||
|
||||
Version 1.28d.
|
||||
|
||||
2001-08-29 Paul Eggert <[email protected]>
|
||||
|
||||
* src/bison.simple (yyparse): Don't take the address of an
|
||||
item before the start of an array, as that doesn't conform to
|
||||
the C Standard.
|
||||
|
||||
2001-08-29 Robert Anisko <[email protected]>
|
||||
|
||||
* doc/bison.texinfo (Location Tracking Calc): New node.
|
||||
|
||||
2001-08-29 Paul Eggert <[email protected]>
|
||||
|
||||
* src/output.c (output): Do not define const, as this now
|
||||
causes more problems than it cures.
|
||||
|
||||
2001-08-29 Akim Demaille <[email protected]>
|
||||
|
||||
* doc/bison.texinfo: Modernize `@node' and `@top' use: just name
|
||||
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.
|
||||
* 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-28 Marc Autret <[email protected]>
|
||||
2001-08-27 Paul Eggert <[email protected]>
|
||||
|
||||
* doc/bison.1 (mandoc): Adjust.
|
||||
From Juan Manuel Guerrero.
|
||||
* src/bison.simple (yyparse): Don't take the address of an
|
||||
item before the start of an array, as that doesn't conform to
|
||||
the C Standard.
|
||||
|
||||
2001-08-28 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-27 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* src/print_graph.c (print_state): Fix.
|
||||
* src/output.c (output): Remove the initialization of the macro
|
||||
obstack. It was done too late here.
|
||||
|
||||
2001-08-27 Marc Autret <[email protected]>
|
||||
* src/reader.c (parse_macro_decl): Fix. Use of the macro obstack was
|
||||
completely wrong.
|
||||
(reader): Initialize the macro obstack here, since we need it to grow
|
||||
'%define' directives.
|
||||
|
||||
* 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.
|
||||
* src/reader.h: Declare the macro obstack as extern.
|
||||
|
||||
2001-08-27 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-27 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* 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.
|
||||
* src/output.c (output_parser): Fix. Store single '%' characters in
|
||||
the output obstack instead of throwing them away.
|
||||
|
||||
2001-08-27 Akim Demaille <[email protected]>
|
||||
|
||||
* Makefile.am (AUTOMAKE_OPTIONS): 1.5.
|
||||
* Makefile.maint: Sync. with CVS Autoconf.
|
||||
|
||||
2001-08-27 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* 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'.
|
||||
* lib/Makefile.am: Adjust.
|
||||
|
||||
2001-08-27 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* src/reader.c (parse_dquoted_param): Rename variable `index' to `i'.
|
||||
This one shadowed a global parameter.
|
||||
* src/bison.simple: Update and add '%%' directives.
|
||||
|
||||
2001-08-24 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* src/print_graph.c (node_output_size): Declared POSIX `size_t' type,
|
||||
instead of `unsigned'.
|
||||
(print_state): Do not call obstack_object_size () in obstack_grow ()
|
||||
to avoid macro variables shadowing.
|
||||
* src/reader.c (reader): Remove calls to 'output_headers' and
|
||||
'output_trailers'. Remove some C output.
|
||||
(readgram): Disable a piece of code that was writing a default
|
||||
definition for 'YYSTYPE'.
|
||||
(reader_output_yylsp): Remove.
|
||||
(packsymbols): Output token defintions to a macro.
|
||||
(copy_definition): Disable C output.
|
||||
|
||||
2001-08-23 Marc Autret <[email protected]>
|
||||
* src/reader.c (parse_macro_decl): New function used to parse macro
|
||||
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.
|
||||
|
||||
* src/lex.c (percent_table): Typo: s/naem/name/.
|
||||
Add graph option.
|
||||
Normalize new options declarations.
|
||||
2001-08-25 Robert Anisko <[email protected]>
|
||||
|
||||
2001-08-20 Pascal Bart <[email protected]>
|
||||
* src/output.c (prepare): Add prefixed names.
|
||||
(output_parser): Output semantic actions.
|
||||
(output_parser): Fix bug on '%%line' directives.
|
||||
|
||||
* tests/suite.at: Exercise %header_extension and %source_extension.
|
||||
* src/output.c (output_headers): Remove. The C code printed by this
|
||||
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.
|
||||
|
||||
2001-08-16 Marc Autret <[email protected]>
|
||||
* src/output.c: Remove some C dedicated output.
|
||||
Improve the use of macro and output obstacks.
|
||||
(output_defines): Remove.
|
||||
|
||||
* src/reader.c (parse_dquoted_param): New.
|
||||
(parse_header_extension_decl): Use it.
|
||||
(parse_source_extension_decl): Likewise.
|
||||
* src/output.c (output_token_translations): Associate 'translate'
|
||||
table with a macro. No output to the table obstack.
|
||||
(output_gram): Same for 'rhs' and 'prhs'.
|
||||
(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'.
|
||||
|
||||
2001-08-16 Marc Autret <[email protected]>
|
||||
* src/output.c (output_table_data): New function.
|
||||
(output_short_table): Remove.
|
||||
(output_short_or_char_table): Remove.
|
||||
|
||||
* src/vcg.c: Remove includes of `complain.h' and `xalloc.h'.
|
||||
(get_xxxx_str): Use assert () instead of complain ().
|
||||
Remove return invokations in default cases.
|
||||
(get_decision_str): Modify default behaviour. Remove second argument.
|
||||
Echo modifications on calls.
|
||||
(output_graph): Fix.
|
||||
* src/output.c (output_parser): Replace most of the skeleton copy code
|
||||
with something new. Skeletons are now processed character by character
|
||||
rather than line by line, and Bison looks for '%%' macros. This is the
|
||||
first step in making Bison's output process (a lot) more flexible.
|
||||
(output_parser): Use the macro table.
|
||||
|
||||
2001-08-16 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* src/getargs.c (usage): Update with ``-g, --graph''.
|
||||
* src/main.c (main): Initialize the macro table.
|
||||
|
||||
2001-08-16 Marc Autret <autret_m@epita.fr>
|
||||
2001-08-25 Robert Anisko <robert.anisko@epita.fr>
|
||||
|
||||
* doc/bison.texinfo (Bison Options): Add items `-g', `--graph'.
|
||||
(Option Cross Key): Likewise.
|
||||
* doc/bison.1: Update.
|
||||
* src/lex.c (percent_table): Add tok_define.
|
||||
* src/lex.h: Add tok_define.
|
||||
|
||||
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]>
|
||||
|
||||
|
||||
@@ -26,5 +26,3 @@ alpha_url_dir = gnu/bison
|
||||
# Files to update automatically.
|
||||
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
||||
$(srcdir)/config/texinfo.tex
|
||||
|
||||
cvs_files = $(srcdir)/config/missing
|
||||
|
||||
+9
-6
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
@@ -119,8 +123,6 @@ alpha_url_dir = gnu/bison
|
||||
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
||||
$(srcdir)/config/texinfo.tex
|
||||
|
||||
|
||||
cvs_files = $(srcdir)/config/missing
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
@@ -133,8 +135,9 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||
install-exec-recursive installdirs-recursive install-recursive \
|
||||
uninstall-recursive check-recursive installcheck-recursive
|
||||
DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
|
||||
INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS \
|
||||
aclocal.m4 config.hin configure configure.in
|
||||
INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS TODO \
|
||||
aclocal.m4 config.hin configure configure.in missing \
|
||||
mkinstalldirs
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
@@ -153,7 +156,7 @@ $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.in m4/c-bs-a.m4 m4/codeset.m4 m4/dmalloc.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/m4.m4 m4/malloc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4
|
||||
$(ACLOCAL_M4): configure.in m4/atconfig.m4 m4/c-bs-a.m4 m4/codeset.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/m4.m4 m4/malloc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
config.h: stamp-h
|
||||
@if test ! -f $@; then \
|
||||
@@ -292,7 +295,7 @@ distdir: $(DISTFILES)
|
||||
fi
|
||||
-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/intl $(distdir)/po
|
||||
$(mkinstalldirs) $(distdir)/intl $(distdir)/po $(distdir)/tests
|
||||
@for file in $(DISTFILES); do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
|
||||
+50
-101
@@ -22,6 +22,9 @@
|
||||
# Do not save the original name or timestamp in the .tar.gz file.
|
||||
GZIP_ENV = '--no-name --best'
|
||||
|
||||
# Automake 1.4 does not define AMTAR.
|
||||
AMTAR ?= $(TAR)
|
||||
|
||||
CVS = cvs
|
||||
|
||||
prev_version_file ?= .prev-version
|
||||
@@ -43,101 +46,12 @@ 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. ##
|
||||
## --------------- ##
|
||||
|
||||
# Checks that don't require cvs. Run `changelog-check' last as
|
||||
# previous test may reveal problems requiring new ChangeLog entries.
|
||||
local-check: po-check copyright-check writable-files changelog-check
|
||||
# Checks that don't require cvs.
|
||||
local-check: changelog-check po-check writable-files copyright-check
|
||||
|
||||
changelog-check:
|
||||
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
|
||||
@@ -203,16 +117,10 @@ maintainer-distcheck: changelog-check
|
||||
$(MAKE) my-distcheck
|
||||
|
||||
|
||||
|
||||
## -------------- ##
|
||||
## Making dists. ##
|
||||
## -------------- ##
|
||||
|
||||
|
||||
# Tag before making distribution. Also, don't make a distribution if
|
||||
# checks fail. Also, make sure the NEWS file is up-to-date.
|
||||
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
||||
cvs-dist: local-check cvs-check maintainer-distcheck
|
||||
cvs-dist: cvs-check maintainer-distcheck
|
||||
$(CVS) update po
|
||||
$(CVS) tag -c $(this-cvs-tag)
|
||||
$(MAKE) dist
|
||||
@@ -222,7 +130,6 @@ cvs-dist: local-check cvs-check maintainer-distcheck
|
||||
null_AM_MAKEFLAGS = \
|
||||
ACLOCAL=false \
|
||||
AUTOCONF=false \
|
||||
AUTOM4TE=false \
|
||||
AUTOMAKE=false \
|
||||
AUTOHEADER=false \
|
||||
MAKEINFO=false
|
||||
@@ -270,7 +177,7 @@ rel-check:
|
||||
md5_tmp=/tmp/rel-check-md5-$$$$; \
|
||||
set -e; \
|
||||
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; \
|
||||
md5sum -c $$md5_tmp < $$tarz
|
||||
|
||||
@@ -321,6 +228,48 @@ announcement: NEWS ChangeLog $(rel-files)
|
||||
-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
|
||||
echo =====================================
|
||||
echo =====================================
|
||||
@@ -335,7 +284,7 @@ endef
|
||||
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||
xdelta delta -9 $^ $@ || :
|
||||
|
||||
alpha:
|
||||
alpha: local-check
|
||||
$(MAKE) cvs-dist
|
||||
$(MAKE) $(xd-delta)
|
||||
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)
|
||||
|
||||
@@ -1,24 +1,7 @@
|
||||
Bison News
|
||||
----------
|
||||
|
||||
Changes in version 1.29b:
|
||||
|
||||
* `--defines' and `--graph' have now an optionnal argument which is the
|
||||
output file name. `-d' and `-g' do not change, they do not take any
|
||||
argument.
|
||||
|
||||
* `%source_extension' and `%header_extension' are removed, failed
|
||||
experiment.
|
||||
|
||||
* The test suite is more portable.
|
||||
|
||||
* Better portability.
|
||||
|
||||
Changes in version 1.29:
|
||||
|
||||
* Output file does not redefine const; that is now config.h's job.
|
||||
|
||||
* Added `-g' and `--graph'.
|
||||
Changes in version 1.28c:
|
||||
|
||||
* The Bison manual is now distributed under the terms of the GNU FDL.
|
||||
|
||||
|
||||
@@ -2,15 +2,12 @@ Bison was originally written by Robert Corbett. It would not be what
|
||||
it is today without the invaluable help of these people:
|
||||
|
||||
Akim Demaille [email protected]
|
||||
Albert Chin-A-Young [email protected]
|
||||
Daniel Hagerty [email protected]
|
||||
David J. MacKenzie [email protected]
|
||||
Fabrice Bauzac [email protected]
|
||||
Hans Aberg [email protected]
|
||||
Jesse Thilo [email protected]
|
||||
Jim Meyering [email protected]
|
||||
Juan Manuel Guerrero [email protected]
|
||||
Keith Browne [email protected]
|
||||
Laurent Mascherpa [email protected]
|
||||
Marc Autret [email protected]
|
||||
Neil Booth [email protected]
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
-*- outline -*-
|
||||
|
||||
* src/reader.c
|
||||
Complete parse_skel_decl () with parse_dquoted_param (). []
|
||||
Check and cleanup for CPP-out code. []
|
||||
|
||||
* src/output.c
|
||||
Synchronize `#line' directive with user file. [ok]
|
||||
|
||||
Cleanup dirty CPP-out code. []
|
||||
** Output sub-skeleton files. []
|
||||
Useful for %no_parser. []
|
||||
*** New skeleton. []
|
||||
|
||||
* src/getargs.c src/lex.c
|
||||
Synchronize percent and command line options. [ok]
|
||||
|
||||
* src/macrotab.[ch]
|
||||
Removing warnings when compiling. (gcc-warnings). [ok]
|
||||
|
||||
* src/print_graph.c
|
||||
Find the best graph parameters. []
|
||||
|
||||
* doc/bison.texinfo
|
||||
Echo modifications of prologue and epilogue. []
|
||||
Add informations about YYERROR_VERBOSE. []
|
||||
Add explainations about skeleton muscles. []
|
||||
Add explainations about %skeleton. []
|
||||
Vendored
+20
-19
@@ -558,6 +558,26 @@ AC_DEFUN([_AM_DIRNAME],
|
||||
m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl
|
||||
]) # _AM_DIRNAME
|
||||
|
||||
|
||||
# serial 2
|
||||
|
||||
# Single argument says where are built sources to test, relative to the
|
||||
# built test directory. Maybe omitted if the same (flat distribution).
|
||||
|
||||
AC_DEFUN([AT_CONFIG],
|
||||
[AT_TESTPATH=ifelse([$1], [], [.], [$1])
|
||||
AC_SUBST([AT_TESTPATH])
|
||||
# Try to be compatible with both Autoconf 2.13 and 2.50.
|
||||
if test -z "$ECHO_C$ECHO_N$ECHO_T"; then
|
||||
ECHO_C="$ac_c"
|
||||
ECHO_N="$ac_n"
|
||||
ECHO_T="$ac_t"
|
||||
AC_SUBST([ECHO_C])
|
||||
AC_SUBST([ECHO_N])
|
||||
AC_SUBST([ECHO_T])
|
||||
fi
|
||||
])
|
||||
|
||||
#serial 1
|
||||
# This test replaces the one in autoconf.
|
||||
# Currently this macro should have the same name as the autoconf macro
|
||||
@@ -937,25 +957,6 @@ if test $ac_cv_func_strerror_r = yes; then
|
||||
fi
|
||||
])# AC_FUNC_STRERROR_R
|
||||
|
||||
|
||||
# serial 1
|
||||
|
||||
AC_DEFUN([AM_WITH_DMALLOC],
|
||||
[AC_MSG_CHECKING([if malloc debugging is wanted])
|
||||
AC_ARG_WITH(dmalloc,
|
||||
[ --with-dmalloc use dmalloc, as in
|
||||
http://www.dmalloc.com/dmalloc.tar.gz],
|
||||
[if test "$withval" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(WITH_DMALLOC,1,
|
||||
[Define if using the dmalloc debugging malloc package])
|
||||
LIBS="$LIBS -ldmalloc"
|
||||
LDFLAGS="$LDFLAGS -g"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi], [AC_MSG_RESULT(no)])
|
||||
])
|
||||
|
||||
# Macro to add for using GNU gettext.
|
||||
# Ulrich Drepper <[email protected]>, 1995.
|
||||
#
|
||||
|
||||
+1
-4
@@ -1,4 +1,4 @@
|
||||
/* config.hin. Generated from configure.in by autoheader. */
|
||||
/* config.hin. Generated automatically from configure.in by autoheader. */
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
@@ -250,9 +250,6 @@
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define if using the dmalloc debugging malloc package */
|
||||
#undef WITH_DMALLOC
|
||||
|
||||
/* Define to 1 for GNU C library extensions. */
|
||||
#undef _GNU_SOURCE
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
|
||||
Vendored
+56
-54
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2001-09-13'
|
||||
timestamp='2001-08-09'
|
||||
|
||||
# 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
|
||||
@@ -127,7 +127,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:NetBSD:*:*)
|
||||
# NetBSD (nbsd) targets should (where applicable) match one or
|
||||
# Netbsd (nbsd) targets should (where applicable) match one or
|
||||
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
|
||||
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
|
||||
# switched to ELF, *-*-netbsd* would select the old
|
||||
@@ -144,7 +144,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
macppc) machine=powerpc-apple ;;
|
||||
hp3[0-9][05]) machine=m68k-hp ;;
|
||||
ibmrt|romp-ibm) machine=romp-ibm ;;
|
||||
sparc*) machine=`uname -p`-unknown ;;
|
||||
*) machine=${UNAME_MACHINE}-unknown ;;
|
||||
esac
|
||||
# The Operating System including object format, if it has switched
|
||||
@@ -173,45 +172,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
exit 0 ;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
macppc:OpenBSD:*:*)
|
||||
echo powerpc-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme88k:OpenBSD:*:*)
|
||||
echo m88k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvmeppc:OpenBSD:*:*)
|
||||
echo powerpc-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sgi:OpenBSD:*:*)
|
||||
echo mipseb-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
wgrisc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:OpenBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
alpha:OSF1:*:*)
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
@@ -287,9 +247,30 @@ EOF
|
||||
Amiga*:UNIX_System_V:4.0:*)
|
||||
echo m68k-unknown-sysv4
|
||||
exit 0;;
|
||||
amiga:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:[Aa]miga[Oo][Ss]:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-amigaos
|
||||
exit 0 ;;
|
||||
arc64:OpenBSD:*:*)
|
||||
echo mips64el-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
arc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
hkmips:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sgi:OpenBSD:*:*)
|
||||
echo mips-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
wgrisc:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:OS/390:*:*)
|
||||
echo i370-ibm-openedition
|
||||
exit 0 ;;
|
||||
@@ -352,6 +333,9 @@ EOF
|
||||
aushp:SunOS:*:*)
|
||||
echo sparc-auspex-sunos${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
atari*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
# The situation for MiNT is a little confusing. The machine name
|
||||
# can be virtually everything (everything which is not
|
||||
# "atarist" or "atariste" at least should have a processor
|
||||
@@ -378,6 +362,18 @@ EOF
|
||||
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
|
||||
echo m68k-unknown-mint${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
sun3*:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mac68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme68k:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mvme88k:OpenBSD:*:*)
|
||||
echo m88k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
powerpc:machten:*:*)
|
||||
echo powerpc-apple-machten${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
@@ -394,7 +390,6 @@ EOF
|
||||
echo clipper-intergraph-clix${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
mips:*:*:UMIPS | mips:*:*:RISCos)
|
||||
eval $set_cc_for_build
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#ifdef __cplusplus
|
||||
#include <stdio.h> /* for printf() prototype */
|
||||
@@ -416,6 +411,7 @@ EOF
|
||||
exit (-1);
|
||||
}
|
||||
EOF
|
||||
eval $set_cc_for_build
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy \
|
||||
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
|
||||
&& rm -f $dummy.c $dummy && exit 0
|
||||
@@ -485,7 +481,6 @@ EOF
|
||||
exit 0 ;;
|
||||
*:AIX:2:3)
|
||||
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
|
||||
eval $set_cc_for_build
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <sys/systemcfg.h>
|
||||
|
||||
@@ -497,6 +492,7 @@ EOF
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
eval $set_cc_for_build
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo rs6000-ibm-aix3.2.5
|
||||
@@ -564,7 +560,6 @@ EOF
|
||||
fi ;;
|
||||
esac
|
||||
if [ "${HP_ARCH}" = "" ]; then
|
||||
eval $set_cc_for_build
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
|
||||
#define _HPUX_SOURCE
|
||||
@@ -598,9 +593,10 @@ EOF
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
|
||||
if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
|
||||
rm -f $dummy.c $dummy
|
||||
eval $set_cc_for_build
|
||||
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
|
||||
if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
|
||||
rm -f $dummy.c $dummy
|
||||
fi ;;
|
||||
esac
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
@@ -610,7 +606,6 @@ EOF
|
||||
echo ia64-hp-hpux${HPUX_REV}
|
||||
exit 0 ;;
|
||||
3050*:HI-UX:*:*)
|
||||
eval $set_cc_for_build
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#include <unistd.h>
|
||||
int
|
||||
@@ -636,6 +631,7 @@ EOF
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
eval $set_cc_for_build
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
echo unknown-hitachi-hiuxwe2
|
||||
@@ -665,6 +661,9 @@ EOF
|
||||
parisc*:Lites*:*:*)
|
||||
echo hppa1.1-hp-lites
|
||||
exit 0 ;;
|
||||
hppa*:OpenBSD:*:*)
|
||||
echo hppa-unknown-openbsd
|
||||
exit 0 ;;
|
||||
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
@@ -716,6 +715,9 @@ EOF
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit 0 ;;
|
||||
hp300:OpenBSD:*:*)
|
||||
echo m68k-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
@@ -728,6 +730,9 @@ EOF
|
||||
*:FreeBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
exit 0 ;;
|
||||
*:OpenBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
exit 0 ;;
|
||||
i*:CYGWIN*:*)
|
||||
echo ${UNAME_MACHINE}-pc-cygwin
|
||||
exit 0 ;;
|
||||
@@ -843,7 +848,6 @@ EOF
|
||||
exit 0 ;;
|
||||
esac
|
||||
# Determine whether the default compiler is a.out or elf
|
||||
eval $set_cc_for_build
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
#ifdef __cplusplus
|
||||
@@ -868,6 +872,7 @@ EOF
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
eval $set_cc_for_build
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
|
||||
@@ -1106,15 +1111,11 @@ EOF
|
||||
i*86:XTS-300:*:STOP)
|
||||
echo ${UNAME_MACHINE}-unknown-stop
|
||||
exit 0 ;;
|
||||
i*86:atheos:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-atheos
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
|
||||
|
||||
eval $set_cc_for_build
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef _SEQUENT_
|
||||
# include <sys/types.h>
|
||||
@@ -1229,6 +1230,7 @@ main ()
|
||||
}
|
||||
EOF
|
||||
|
||||
eval $set_cc_for_build
|
||||
$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
|
||||
rm -f $dummy.c $dummy
|
||||
|
||||
|
||||
Vendored
+6
-8
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2001-09-14'
|
||||
timestamp='2001-08-13'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -236,8 +236,7 @@ case $basic_machine in
|
||||
| mips16 | mips64 | mips64el | mips64orion | mips64orionel \
|
||||
| mips64vr4100 | mips64vr4100el | mips64vr4300 \
|
||||
| mips64vr4300el | mips64vr5000 | mips64vr5000el \
|
||||
| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
|
||||
| mipsisa32 \
|
||||
| mipsbe | mipsel | mipsle | mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| ns16k | ns32k \
|
||||
| openrisc \
|
||||
@@ -247,7 +246,7 @@ case $basic_machine in
|
||||
| s390 | s390x \
|
||||
| sh | sh[34] | sh[34]eb | shbe | shle \
|
||||
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||
| stormy16 | strongarm \
|
||||
| strongarm \
|
||||
| tahoe | thumb | tic80 | tron \
|
||||
| v850 \
|
||||
| we32k \
|
||||
@@ -280,7 +279,6 @@ case $basic_machine in
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alphapca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armv*-* \
|
||||
| avr-* \
|
||||
| bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c54x-* \
|
||||
| clipper-* | cray2-* | cydra-* \
|
||||
@@ -295,8 +293,8 @@ case $basic_machine in
|
||||
| m88110-* | m88k-* | mcore-* \
|
||||
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
|
||||
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
|
||||
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
|
||||
| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
|
||||
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipsel-* \
|
||||
| mipsle-* | mipstx39-* | mipstx39el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
@@ -306,7 +304,7 @@ case $basic_machine in
|
||||
| s390-* | s390x-* \
|
||||
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
|
||||
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \
|
||||
| sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
|
||||
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
|
||||
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
|
||||
| v850-* | vax-* \
|
||||
| we32k-* \
|
||||
|
||||
+8
-154
@@ -1,7 +1,7 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <[email protected]>, 1996.
|
||||
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
# Franc,ois Pinard <[email protected]>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -18,37 +18,11 @@
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
@@ -61,7 +35,6 @@ error status if there is no known handling for PROGRAM.
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
@@ -70,15 +43,13 @@ Supported PROGRAM values:
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing 0.4 - GNU automake"
|
||||
echo "missing - GNU libit 0.0"
|
||||
;;
|
||||
|
||||
-*)
|
||||
@@ -88,45 +59,30 @@ Supported PROGRAM values:
|
||||
;;
|
||||
|
||||
aclocal)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
you modified \`acinclude.m4' or \`configure.in'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
you modified \`configure.in'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
you modified \`acconfig.h' or \`configure.in'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
@@ -140,14 +96,9 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
||||
;;
|
||||
|
||||
automake)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
@@ -155,34 +106,6 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
@@ -236,37 +159,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
@@ -282,45 +175,6 @@ WARNING: \`$1' is missing on your system. You should only need it if
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar ${1+"$@"} && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar ${1+"$@"} && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.29a
|
||||
1.28c
|
||||
|
||||
+7
-27
@@ -1,31 +1,12 @@
|
||||
# Configure template for GNU Bison. -*-Autoconf-*-
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
# 02111-1307 USA
|
||||
|
||||
# We need a recent Autoconf to run a recent Autotest.
|
||||
AC_PREREQ(2.52e)
|
||||
|
||||
AC_INIT([GNU Bison], [1.29b], [[email protected]])
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
AC_PREREQ(2.52)
|
||||
AC_INIT(bison, 1.28c, [email protected])
|
||||
AC_CONFIG_AUX_DIR(config)
|
||||
|
||||
AM_INIT_AUTOMAKE([bison], [1.29b])
|
||||
AM_INIT_AUTOMAKE(bison, 1.28c)
|
||||
AM_CONFIG_HEADER(config.h:config.hin)
|
||||
|
||||
# Initialize the test suite.
|
||||
AC_CONFIG_TESTDIR(tests)
|
||||
AT_CONFIG(../src)
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
@@ -88,9 +69,8 @@ jm_FUNC_MALLOC
|
||||
jm_FUNC_REALLOC
|
||||
jm_PREREQ_QUOTEARG
|
||||
jm_PREREQ_ERROR
|
||||
AM_WITH_DMALLOC
|
||||
|
||||
ALL_LINGUAS="de es et fr ja nl tr ru"
|
||||
ALL_LINGUAS="de es et fr ja nl ru"
|
||||
AM_GNU_GETTEXT
|
||||
|
||||
# This is necessary so that .o files in LIBOBJS are also built via
|
||||
@@ -103,4 +83,4 @@ AC_OUTPUT([Makefile
|
||||
intl/Makefile po/Makefile.in
|
||||
lib/Makefile src/Makefile doc/Makefile
|
||||
m4/Makefile
|
||||
tests/Makefile])
|
||||
tests/Makefile tests/atconfig])
|
||||
|
||||
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
|
||||
+5
-33
@@ -10,11 +10,7 @@ bison \- GNU Project parser generator (yacc replacement)
|
||||
] [
|
||||
.B \-d
|
||||
] [
|
||||
.BI \-\-defines= defines-file
|
||||
] [
|
||||
.B \-g
|
||||
] [
|
||||
.BI \-\-graph= graph-file
|
||||
.B \-\-defines
|
||||
] [
|
||||
.B \-k
|
||||
] [
|
||||
@@ -127,6 +123,8 @@ chosen as if the input file were named
|
||||
.B \-d
|
||||
.br
|
||||
.ns
|
||||
.TP
|
||||
.B \-\-defines
|
||||
Write an extra output file containing macro definitions for the token
|
||||
type names defined in the grammar and the semantic value type
|
||||
.BR YYSTYPE ,
|
||||
@@ -147,32 +145,6 @@ in a separate source file, because
|
||||
needs to be able to refer to token type codes and the variable
|
||||
.BR yylval .
|
||||
.TP
|
||||
.BI \-\-defines= defines-file
|
||||
The behaviour of
|
||||
.BI \-\-defines
|
||||
is the same than
|
||||
.BI \-d
|
||||
option.
|
||||
The only difference is that it has an optionnal argument which is
|
||||
the name of the output filename.
|
||||
.TP
|
||||
.BI \-g
|
||||
.br
|
||||
.ns
|
||||
Output a VCG definition of the LALR(1) grammar automaton computed by
|
||||
Bison. If the grammar file is
|
||||
.BR foo.y
|
||||
, the VCG output file will be
|
||||
.BR foo.vcg .
|
||||
.TP
|
||||
.BI \-\-graph= graph-file
|
||||
The behaviour of
|
||||
.BI \-\-graph
|
||||
is the same than
|
||||
.BI \-g
|
||||
option. The only difference is that it has an optionnal argument which
|
||||
is the name of the output graph filename.
|
||||
.TP
|
||||
.B \-k
|
||||
.br
|
||||
.ns
|
||||
@@ -343,9 +315,9 @@ bison \-y $*
|
||||
.sp
|
||||
.RE
|
||||
.SH FILES
|
||||
/usr/local/share/bison/bison.simple simple parser
|
||||
/usr/local/lib/bison.simple simple parser
|
||||
.br
|
||||
/usr/local/share/bison/bison.hairy complicated parser
|
||||
/usr/local/lib/bison.hairy complicated parser
|
||||
.SH "ENVIRONMENT VARIABLES"
|
||||
.TP
|
||||
.SM BISON_SIMPLE
|
||||
|
||||
+106
-110
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||
@@ -30,116 +30,112 @@ instead of in the original English.
|
||||
|
||||
|
||||
Indirect:
|
||||
bison.info-1: 1313
|
||||
bison.info-2: 50691
|
||||
bison.info-3: 100581
|
||||
bison.info-4: 150131
|
||||
bison.info-5: 197908
|
||||
bison.info-1: 1292
|
||||
bison.info-2: 50351
|
||||
bison.info-3: 99751
|
||||
bison.info-4: 147940
|
||||
bison.info-5: 190640
|
||||
|
||||
Tag Table:
|
||||
(Indirect)
|
||||
Node: Top1313
|
||||
Node: Introduction8969
|
||||
Node: Conditions10244
|
||||
Node: Copying11708
|
||||
Node: Concepts30911
|
||||
Node: Language and Grammar31990
|
||||
Node: Grammar in Bison37006
|
||||
Node: Semantic Values38930
|
||||
Node: Semantic Actions41031
|
||||
Node: Locations Overview42220
|
||||
Node: Bison Parser43667
|
||||
Node: Stages45979
|
||||
Node: Grammar Layout47262
|
||||
Node: Examples48519
|
||||
Node: RPN Calc49717
|
||||
Node: Rpcalc Decls50691
|
||||
Node: Rpcalc Rules52278
|
||||
Node: Rpcalc Input54078
|
||||
Node: Rpcalc Line55539
|
||||
Node: Rpcalc Expr56654
|
||||
Node: Rpcalc Lexer58599
|
||||
Node: Rpcalc Main61171
|
||||
Node: Rpcalc Error61569
|
||||
Node: Rpcalc Gen62577
|
||||
Node: Rpcalc Compile63726
|
||||
Node: Infix Calc64601
|
||||
Node: Simple Error Recovery67308
|
||||
Node: Location Tracking Calc69197
|
||||
Node: Ltcalc Decls69927
|
||||
Node: Ltcalc Rules70836
|
||||
Node: Ltcalc Lexer72897
|
||||
Node: Multi-function Calc75235
|
||||
Node: Mfcalc Decl76802
|
||||
Node: Mfcalc Rules78825
|
||||
Node: Mfcalc Symtab80205
|
||||
Node: Exercises86578
|
||||
Node: Grammar File87084
|
||||
Node: Grammar Outline87932
|
||||
Node: C Declarations88666
|
||||
Node: Bison Declarations89246
|
||||
Node: Grammar Rules89658
|
||||
Node: C Code90118
|
||||
Node: Symbols91048
|
||||
Node: Rules96129
|
||||
Node: Recursion97768
|
||||
Node: Semantics99487
|
||||
Node: Value Type100581
|
||||
Node: Multiple Types101253
|
||||
Node: Actions102270
|
||||
Node: Action Types105055
|
||||
Node: Mid-Rule Actions106358
|
||||
Node: Locations111928
|
||||
Node: Location Type112576
|
||||
Node: Actions and Locations113134
|
||||
Node: Location Default Action115290
|
||||
Node: Declarations116753
|
||||
Node: Token Decl118072
|
||||
Node: Precedence Decl120085
|
||||
Node: Union Decl121636
|
||||
Node: Type Decl122480
|
||||
Node: Expect Decl123386
|
||||
Node: Start Decl124932
|
||||
Node: Pure Decl125310
|
||||
Node: Decl Summary126987
|
||||
Node: Multiple Parsers132370
|
||||
Node: Interface133864
|
||||
Node: Parser Function134736
|
||||
Node: Lexical135571
|
||||
Node: Calling Convention136977
|
||||
Node: Token Values139748
|
||||
Node: Token Positions140897
|
||||
Node: Pure Calling141782
|
||||
Node: Error Reporting144714
|
||||
Node: Action Features146836
|
||||
Node: Algorithm150131
|
||||
Node: Look-Ahead152424
|
||||
Node: Shift/Reduce154556
|
||||
Node: Precedence157468
|
||||
Node: Why Precedence158119
|
||||
Node: Using Precedence159984
|
||||
Node: Precedence Examples160952
|
||||
Node: How Precedence161653
|
||||
Node: Contextual Precedence162802
|
||||
Node: Parser States164593
|
||||
Node: Reduce/Reduce165836
|
||||
Node: Mystery Conflicts169397
|
||||
Node: Stack Overflow172783
|
||||
Node: Error Recovery174156
|
||||
Node: Context Dependency179292
|
||||
Node: Semantic Tokens180140
|
||||
Node: Lexical Tie-ins183157
|
||||
Node: Tie-in Recovery184705
|
||||
Node: Debugging186877
|
||||
Node: Invocation190178
|
||||
Node: Bison Options191430
|
||||
Node: Environment Variables195398
|
||||
Node: Option Cross Key196246
|
||||
Node: VMS Invocation197124
|
||||
Node: Table of Symbols197908
|
||||
Node: Glossary205547
|
||||
Node: Copying This Manual211851
|
||||
Node: GNU Free Documentation License212060
|
||||
Node: Index231925
|
||||
Node: Top1292
|
||||
Node: Introduction8694
|
||||
Node: Conditions9969
|
||||
Node: Copying11433
|
||||
Node: Concepts30636
|
||||
Node: Language and Grammar31715
|
||||
Node: Grammar in Bison36731
|
||||
Node: Semantic Values38655
|
||||
Node: Semantic Actions40756
|
||||
Node: Locations Overview41945
|
||||
Node: Bison Parser43392
|
||||
Node: Stages45704
|
||||
Node: Grammar Layout46987
|
||||
Node: Examples48243
|
||||
Node: RPN Calc49378
|
||||
Node: Rpcalc Decls50351
|
||||
Node: Rpcalc Rules51916
|
||||
Node: Rpcalc Input53716
|
||||
Node: Rpcalc Line55177
|
||||
Node: Rpcalc Expr56292
|
||||
Node: Rpcalc Lexer58237
|
||||
Node: Rpcalc Main60809
|
||||
Node: Rpcalc Error61207
|
||||
Node: Rpcalc Gen62215
|
||||
Node: Rpcalc Compile63345
|
||||
Node: Infix Calc64220
|
||||
Node: Simple Error Recovery66927
|
||||
Node: Multi-function Calc68813
|
||||
Node: Mfcalc Decl70379
|
||||
Node: Mfcalc Rules72402
|
||||
Node: Mfcalc Symtab73782
|
||||
Node: Exercises80155
|
||||
Node: Grammar File80661
|
||||
Node: Grammar Outline81509
|
||||
Node: Prologue82197
|
||||
Node: Bison Declarations82737
|
||||
Node: Grammar Rules83143
|
||||
Node: Epilogue83605
|
||||
Node: Symbols84455
|
||||
Node: Rules89536
|
||||
Node: Recursion91175
|
||||
Node: Semantics92894
|
||||
Node: Value Type93988
|
||||
Node: Multiple Types94646
|
||||
Node: Actions95663
|
||||
Node: Action Types98448
|
||||
Node: Mid-Rule Actions99751
|
||||
Node: Locations105321
|
||||
Node: Location Type105969
|
||||
Node: Actions and Locations106527
|
||||
Node: Location Default Action108683
|
||||
Node: Declarations110146
|
||||
Node: Token Decl111465
|
||||
Node: Precedence Decl113478
|
||||
Node: Union Decl115029
|
||||
Node: Type Decl115873
|
||||
Node: Expect Decl116779
|
||||
Node: Start Decl118325
|
||||
Node: Pure Decl118703
|
||||
Node: Decl Summary120380
|
||||
Node: Multiple Parsers125763
|
||||
Node: Interface127257
|
||||
Node: Parser Function128120
|
||||
Node: Lexical128955
|
||||
Node: Calling Convention130361
|
||||
Node: Token Values133132
|
||||
Node: Token Positions134281
|
||||
Node: Pure Calling135166
|
||||
Node: Error Reporting138098
|
||||
Node: Action Features140220
|
||||
Node: Algorithm143515
|
||||
Node: Look-Ahead145808
|
||||
Node: Shift/Reduce147940
|
||||
Node: Precedence150852
|
||||
Node: Why Precedence151503
|
||||
Node: Using Precedence153368
|
||||
Node: Precedence Examples154336
|
||||
Node: How Precedence155037
|
||||
Node: Contextual Precedence156186
|
||||
Node: Parser States157977
|
||||
Node: Reduce/Reduce159220
|
||||
Node: Mystery Conflicts162781
|
||||
Node: Stack Overflow166167
|
||||
Node: Error Recovery167540
|
||||
Node: Context Dependency172676
|
||||
Node: Semantic Tokens173524
|
||||
Node: Lexical Tie-ins176541
|
||||
Node: Tie-in Recovery178055
|
||||
Node: Debugging180227
|
||||
Node: Invocation183478
|
||||
Node: Bison Options184730
|
||||
Node: Environment Variables188164
|
||||
Node: Option Cross Key189012
|
||||
Node: VMS Invocation189856
|
||||
Node: Table of Symbols190640
|
||||
Node: Glossary198241
|
||||
Node: Copying This Manual204545
|
||||
Node: GNU Free Documentation License204754
|
||||
Node: Index224619
|
||||
|
||||
End Tag Table
|
||||
|
||||
+19
-31
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||
@@ -29,13 +29,9 @@ included in translations approved by the Free Software Foundation
|
||||
instead of in the original English.
|
||||
|
||||
|
||||
File: bison.info, Node: Top, Next: Introduction, Up: (dir)
|
||||
File: bison.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
|
||||
|
||||
Bison
|
||||
*****
|
||||
|
||||
This manual documents version 1.29b of Bison, updated 20 September
|
||||
2001.
|
||||
This manual documents version 1.28c of Bison.
|
||||
|
||||
* Menu:
|
||||
|
||||
@@ -62,6 +58,7 @@ Reference sections:
|
||||
* Copying This Manual:: License for copying this manual.
|
||||
* Index:: Cross-references to the text.
|
||||
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
The Concepts of Bison
|
||||
|
||||
@@ -84,14 +81,13 @@ Examples
|
||||
* Infix Calc:: Infix (algebraic) notation calculator.
|
||||
Operator precedence is introduced.
|
||||
* 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.
|
||||
It uses multiple data-types for semantic values.
|
||||
* Exercises:: Ideas for improving the multi-function calculator.
|
||||
|
||||
Reverse Polish Notation Calculator
|
||||
|
||||
* Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
|
||||
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc.
|
||||
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
||||
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
||||
* Main: Rpcalc Main. The controlling function.
|
||||
@@ -105,12 +101,6 @@ Grammar Rules for `rpcalc'
|
||||
* Rpcalc Line::
|
||||
* 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'
|
||||
|
||||
* Decl: Mfcalc Decl. Bison declarations for multi-function calculator.
|
||||
@@ -129,10 +119,10 @@ Bison Grammar Files
|
||||
|
||||
Outline of a Bison Grammar
|
||||
|
||||
* C Declarations:: Syntax and usage of the C declarations section.
|
||||
* Prologue:: Syntax and usage of the prologue (declarations section).
|
||||
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
||||
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
||||
* C Code:: Syntax and usage of the additional C code section.
|
||||
* Epilogue:: Syntax and usage of the epilogue (additional code section).
|
||||
|
||||
Defining Language Semantics
|
||||
|
||||
@@ -238,7 +228,7 @@ Bison in detail.
|
||||
it Yacc-compatible. Wilfred Hansen of Carnegie Mellon University added
|
||||
multi-character string literals and other features.
|
||||
|
||||
This edition corresponds to version 1.29b of Bison.
|
||||
This edition corresponds to version 1.28c of Bison.
|
||||
|
||||
|
||||
File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top
|
||||
@@ -991,7 +981,7 @@ The Overall Layout of a Bison Grammar
|
||||
general form of a Bison grammar file is as follows:
|
||||
|
||||
%{
|
||||
C DECLARATIONS
|
||||
PROLOGUE (DECLARATIONS)
|
||||
%}
|
||||
|
||||
BISON DECLARATIONS
|
||||
@@ -999,15 +989,14 @@ general form of a Bison grammar file is as follows:
|
||||
%%
|
||||
GRAMMAR RULES
|
||||
%%
|
||||
ADDITIONAL C CODE
|
||||
EPILOGUE (ADDITIONAL CODE)
|
||||
|
||||
The `%%', `%{' and `%}' are punctuation that appears in every Bison
|
||||
grammar file to separate the sections.
|
||||
|
||||
The C declarations may define types and variables used in the
|
||||
actions. You can also use preprocessor commands to define macros used
|
||||
there, and use `#include' to include header files that do any of these
|
||||
things.
|
||||
The prologue may define types and variables used in the actions. You
|
||||
can also use preprocessor commands to define macros used there, and use
|
||||
`#include' to include header files that do any of these things.
|
||||
|
||||
The Bison declarations declare the names of the terminal and
|
||||
nonterminal symbols, and may also describe operator precedence and the
|
||||
@@ -1016,10 +1005,10 @@ data types of semantic values of various symbols.
|
||||
The grammar rules define how to construct each nonterminal symbol
|
||||
from its parts.
|
||||
|
||||
The additional C code can contain any C code you want to use. Often
|
||||
the definition of the lexical analyzer `yylex' goes here, plus
|
||||
subroutines called by the actions in the grammar rules. In a simple
|
||||
program, all the rest of the program can go here.
|
||||
The epilogue can contain any code you want to use. Often the
|
||||
definition of the lexical analyzer `yylex' goes here, plus subroutines
|
||||
called by the actions in the grammar rules. In a simple program, all
|
||||
the rest of the program can go here.
|
||||
|
||||
|
||||
File: bison.info, Node: Examples, Next: Grammar File, Prev: Concepts, Up: Top
|
||||
@@ -1044,7 +1033,6 @@ the Info file and into a source file to try them.
|
||||
* Infix Calc:: Infix (algebraic) notation calculator.
|
||||
Operator precedence is introduced.
|
||||
* 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.
|
||||
It uses multiple data-types for semantic values.
|
||||
* Exercises:: Ideas for improving the multi-function calculator.
|
||||
@@ -1066,7 +1054,7 @@ extension is a convention used for Bison input files.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
|
||||
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc.
|
||||
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
||||
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
||||
* Main: Rpcalc Main. The controlling function.
|
||||
|
||||
+178
-219
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* 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 */
|
||||
|
||||
The C declarations section (*note The C Declarations Section: C
|
||||
Declarations.) contains two preprocessor directives.
|
||||
The declarations section (*note The prologue: Prologue.) contains two
|
||||
preprocessor directives.
|
||||
|
||||
The `#define' directive defines the macro `YYSTYPE', thus specifying
|
||||
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
|
||||
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
|
||||
"additional C code" section of the file (*note The Overall Layout of a
|
||||
Bison Grammar: Grammar Layout.).
|
||||
epilogue of the file (*note The Overall Layout of a Bison Grammar:
|
||||
Grammar Layout.).
|
||||
|
||||
For a large project, you would probably have several source files,
|
||||
and use `make' to arrange to recompile them.
|
||||
@@ -494,7 +494,7 @@ Precedence.
|
||||
9
|
||||
|
||||
|
||||
File: bison.info, Node: Simple Error Recovery, Next: Location Tracking Calc, Prev: Infix Calc, Up: Examples
|
||||
File: bison.info, Node: Simple Error Recovery, Next: Multi-function Calc, Prev: Infix Calc, Up: Examples
|
||||
|
||||
Simple Error Recovery
|
||||
=====================
|
||||
@@ -533,192 +533,7 @@ the current line of input. We won't discuss this issue further because
|
||||
it is not specific to Bison programs.
|
||||
|
||||
|
||||
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
|
||||
File: bison.info, Node: Multi-function Calc, Next: Exercises, Prev: Simple Error Recovery, Up: Examples
|
||||
|
||||
Multi-Function Calculator: `mfcalc'
|
||||
===================================
|
||||
@@ -1111,7 +926,7 @@ Outline of a Bison Grammar
|
||||
appropriate delimiters:
|
||||
|
||||
%{
|
||||
C DECLARATIONS
|
||||
PROLOGUE
|
||||
%}
|
||||
|
||||
BISON DECLARATIONS
|
||||
@@ -1120,33 +935,33 @@ appropriate delimiters:
|
||||
GRAMMAR RULES
|
||||
%%
|
||||
|
||||
ADDITIONAL C CODE
|
||||
EPILOGUE
|
||||
|
||||
Comments enclosed in `/* ... */' may appear in any of the sections.
|
||||
|
||||
* Menu:
|
||||
|
||||
* C Declarations:: Syntax and usage of the C declarations section.
|
||||
* Prologue:: Syntax and usage of the prologue.
|
||||
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
||||
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
||||
* C Code:: Syntax and usage of the additional C code section.
|
||||
* Epilogue:: Syntax and usage of the epilogue.
|
||||
|
||||
|
||||
File: bison.info, Node: C Declarations, Next: Bison Declarations, Up: Grammar Outline
|
||||
File: bison.info, Node: Prologue, Next: Bison Declarations, Up: Grammar Outline
|
||||
|
||||
The C Declarations Section
|
||||
--------------------------
|
||||
The prologue
|
||||
------------
|
||||
|
||||
The C DECLARATIONS section contains macro definitions and
|
||||
declarations of functions and variables that are used in the actions in
|
||||
the grammar rules. These are copied to the beginning of the parser
|
||||
file so that they precede the definition of `yyparse'. You can use
|
||||
`#include' to get the declarations from a header file. If you don't
|
||||
need any C declarations, you may omit the `%{' and `%}' delimiters that
|
||||
bracket this section.
|
||||
The PROLOGUE section contains macro definitions and declarations of
|
||||
functions and variables that are used in the actions in the grammar
|
||||
rules. These are copied to the beginning of the parser file so that
|
||||
they precede the definition of `yyparse'. You can use `#include' to
|
||||
get the declarations from a header file. If you don't need any C
|
||||
declarations, you may omit the `%{' and `%}' delimiters that bracket
|
||||
this section.
|
||||
|
||||
|
||||
File: bison.info, Node: Bison Declarations, Next: Grammar Rules, Prev: C Declarations, Up: Grammar Outline
|
||||
File: bison.info, Node: Bison Declarations, Next: Grammar Rules, Prev: Prologue, Up: Grammar Outline
|
||||
|
||||
The Bison Declarations Section
|
||||
------------------------------
|
||||
@@ -1157,7 +972,7 @@ some simple grammars you may not need any declarations. *Note Bison
|
||||
Declarations: Declarations.
|
||||
|
||||
|
||||
File: bison.info, Node: Grammar Rules, Next: C Code, Prev: Bison Declarations, Up: Grammar Outline
|
||||
File: bison.info, Node: Grammar Rules, Next: Epilogue, Prev: Bison Declarations, Up: Grammar Outline
|
||||
|
||||
The Grammar Rules Section
|
||||
-------------------------
|
||||
@@ -1170,17 +985,17 @@ rules, and nothing else. *Note Syntax of Grammar Rules: Rules.
|
||||
the first thing in the file.
|
||||
|
||||
|
||||
File: bison.info, Node: C Code, Prev: Grammar Rules, Up: Grammar Outline
|
||||
File: bison.info, Node: Epilogue, Prev: Grammar Rules, Up: Grammar Outline
|
||||
|
||||
The Additional C Code Section
|
||||
-----------------------------
|
||||
The epilogue
|
||||
------------
|
||||
|
||||
The ADDITIONAL C CODE section is copied verbatim to the end of the
|
||||
parser file, just as the C DECLARATIONS section is copied to the
|
||||
beginning. This is the most convenient place to put anything that you
|
||||
want to have in the parser file but which need not come before the
|
||||
definition of `yyparse'. For example, the definitions of `yylex' and
|
||||
`yyerror' often go here. *Note Parser C-Language Interface: Interface.
|
||||
The EPILOGUE is copied verbatim to the end of the parser file, just
|
||||
as the PROLOGUE is copied to the beginning. This is the most convenient
|
||||
place to put anything that you want to have in the parser file but
|
||||
which need not come before the definition of `yyparse'. For example,
|
||||
the definitions of `yylex' and `yyerror' often go here. *Note Parser
|
||||
C-Language Interface: Interface.
|
||||
|
||||
If the last section is empty, you may omit the `%%' that separates it
|
||||
from the grammar rules.
|
||||
@@ -1188,7 +1003,7 @@ from the grammar rules.
|
||||
The Bison parser itself contains many static variables whose names
|
||||
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
|
||||
manual) in the additional C code section of the grammar file.
|
||||
manual) in the epilogue of the grammar file.
|
||||
|
||||
|
||||
File: bison.info, Node: Symbols, Next: Rules, Prev: Grammar Outline, Up: Grammar File
|
||||
@@ -1425,3 +1240,147 @@ associated with X and Y.
|
||||
This says when, why and how to use the exceptional
|
||||
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.
|
||||
|
||||
|
||||
+111
-148
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||
@@ -28,150 +28,6 @@ License", "Conditions for Using Bison" and this permission notice may be
|
||||
included in translations approved by the Free Software Foundation
|
||||
instead of in the original English.
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -890,8 +746,8 @@ that it needs to use.
|
||||
|
||||
Keep in mind that the parser uses many C identifiers starting with
|
||||
`yy' and `YY' for internal purposes. If you use such an identifier
|
||||
(aside from those in this manual) in an action or in additional C code
|
||||
in the grammar file, you are likely to run into trouble.
|
||||
(aside from those in this manual) in an action or in epilogue in the
|
||||
grammar file, you are likely to run into trouble.
|
||||
|
||||
* Menu:
|
||||
|
||||
@@ -1315,3 +1171,110 @@ useful in actions.
|
||||
textual position of the Nth component of the current rule. *Note
|
||||
Tracking Locations: Locations.
|
||||
|
||||
|
||||
File: bison.info, Node: Algorithm, Next: Error Recovery, Prev: Interface, Up: Top
|
||||
|
||||
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.
|
||||
|
||||
|
||||
+12
-137
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||
@@ -28,113 +28,6 @@ License", "Conditions for Using Bison" and this permission notice may be
|
||||
included in translations approved by the Free Software Foundation
|
||||
instead of in the original English.
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -894,10 +787,9 @@ Here we assume that `yylex' looks at the value of `hexflag'; when it is
|
||||
nonzero, all integers are parsed in hexadecimal, and tokens starting
|
||||
with letters are parsed as integers if possible.
|
||||
|
||||
The declaration of `hexflag' shown in the C declarations section of
|
||||
the parser file is needed to make it accessible to the actions (*note
|
||||
The C Declarations Section: C Declarations.). You must also write the
|
||||
code in `yylex' to obey the flag.
|
||||
The declaration of `hexflag' shown in the prologue of the parser file
|
||||
is needed to make it accessible to the actions (*note The Prologue:
|
||||
Prologue.). 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
|
||||
@@ -966,15 +858,13 @@ out why.
|
||||
|
||||
To enable compilation of trace facilities, you must define the macro
|
||||
`YYDEBUG' when you compile the parser. You could use `-DYYDEBUG=1' as
|
||||
a compiler option or you could put `#define YYDEBUG 1' in the C
|
||||
declarations section of the grammar file (*note The C Declarations
|
||||
Section: C Declarations.). Alternatively, use the `-t' option when you
|
||||
run Bison (*note Invoking Bison: Invocation.). We always define
|
||||
`YYDEBUG' so that debugging is always possible.
|
||||
a compiler option or you could put `#define YYDEBUG 1' in the prologue
|
||||
of the grammar file (*note The Prologue: Prologue.). Alternatively, use
|
||||
the `-t' option when you 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
|
||||
`#include <stdio.h>' to the C declarations section unless it is already
|
||||
there.
|
||||
`#include <stdio.h>' to the prologue unless it is already there.
|
||||
|
||||
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'.
|
||||
@@ -1152,16 +1042,12 @@ Tuning the parser:
|
||||
Adjust the output:
|
||||
|
||||
`-d'
|
||||
`--defines'
|
||||
Pretend that `%verbose' was specified, i.e., write an extra output
|
||||
file containing macro definitions for the token type names defined
|
||||
in the grammar and the semantic value type `YYSTYPE', as well as a
|
||||
few `extern' variable declarations. *Note Decl Summary::.
|
||||
|
||||
`--defines=DEFINES-FILE'
|
||||
The behaviour of -DEFINES is the same than `-d'. The only
|
||||
difference is that it has an optionnal argument which is the name
|
||||
of the output filename.
|
||||
|
||||
`-b FILE-PREFIX'
|
||||
`--file-prefix=PREFIX'
|
||||
Specify a prefix to use for all Bison output file names. The
|
||||
@@ -1180,16 +1066,6 @@ Adjust the output:
|
||||
The other output files' names are constructed from OUTFILE as
|
||||
described under the `-v' and `-d' options.
|
||||
|
||||
`-g'
|
||||
Output a VCG definition of the LALR(1) grammar automaton computed
|
||||
by Bison. If the grammar file is `foo.y', the VCG output file will
|
||||
be `foo.vcg'.
|
||||
|
||||
`--graph=GRAPH-FILE'
|
||||
The behaviour of -GRAPH is the same than `-g'. The only difference
|
||||
is that it has an optionnal argument which is the name of the
|
||||
output graph filename.
|
||||
|
||||
|
||||
File: bison.info, Node: Environment Variables, Next: Option Cross Key, Prev: Bison Options, Up: Invocation
|
||||
|
||||
@@ -1222,10 +1098,9 @@ Option Cross Key
|
||||
find the corresponding short option.
|
||||
|
||||
--debug -t
|
||||
--defines=DEFINES-FILE -d
|
||||
--defines -d
|
||||
--file-prefix=PREFIX -b FILE-PREFIX
|
||||
--fixed-output-files --yacc -y
|
||||
--graph=GRAPH-FILE -d
|
||||
--help -h
|
||||
--name-prefix=PREFIX -p NAME-PREFIX
|
||||
--no-lines -l
|
||||
|
||||
+19
-21
@@ -1,5 +1,5 @@
|
||||
Ceci est le fichier Info bison.info, produit par Makeinfo version 4.0b
|
||||
à partir bison.texinfo.
|
||||
This is bison.info, produced by makeinfo version 4.0b from
|
||||
bison.texinfo.
|
||||
|
||||
START-INFO-DIR-ENTRY
|
||||
* bison: (bison). GNU Project parser generator (yacc replacement).
|
||||
@@ -220,14 +220,13 @@ Bison Symbols
|
||||
|
||||
`%%'
|
||||
Delimiter used to separate the grammar rule section from the Bison
|
||||
declarations section or the additional C code section. *Note The
|
||||
Overall Layout of a Bison Grammar: Grammar Layout.
|
||||
declarations section or the epilogue. *Note The Overall Layout of
|
||||
a Bison Grammar: Grammar Layout.
|
||||
|
||||
`%{ %}'
|
||||
All code listed between `%{' and `%}' is copied directly to the
|
||||
output file uninterpreted. Such code forms the "C declarations"
|
||||
section of the input file. *Note Outline of a Bison Grammar:
|
||||
Grammar Outline.
|
||||
output file uninterpreted. Such code forms the prologue of the
|
||||
input file. *Note Outline of a Bison Grammar: Grammar Outline.
|
||||
|
||||
`/*...*/'
|
||||
Comment delimiters, as in C.
|
||||
@@ -824,17 +823,17 @@ Index
|
||||
* %token: Token Decl.
|
||||
* %type: Type Decl.
|
||||
* %union: Union Decl.
|
||||
* @$ <1>: Action Features.
|
||||
* @$: Actions and Locations.
|
||||
* @N <1>: Action Features.
|
||||
* @N: Actions and Locations.
|
||||
* @$ <1>: Actions and Locations.
|
||||
* @$: Action Features.
|
||||
* @N <1>: Actions and Locations.
|
||||
* @N: Action Features.
|
||||
* action: Actions.
|
||||
* action data types: Action Types.
|
||||
* action features summary: Action Features.
|
||||
* actions in mid-rule: Mid-Rule Actions.
|
||||
* actions, location: Actions and Locations.
|
||||
* actions, semantic: Semantic Actions.
|
||||
* additional C code section: C Code.
|
||||
* additional C code section: Epilogue.
|
||||
* algorithm of parser: Algorithm.
|
||||
* associativity: Why Precedence.
|
||||
* Backus-Naur form: Language and Grammar.
|
||||
@@ -850,12 +849,10 @@ Index
|
||||
* BISON_HAIRY: Environment Variables.
|
||||
* BISON_SIMPLE: Environment Variables.
|
||||
* BNF: Language and Grammar.
|
||||
* C code, section for additional: C Code.
|
||||
* C declarations section: C Declarations.
|
||||
* C code, section for additional: Epilogue.
|
||||
* C-language interface: Interface.
|
||||
* calc: Infix Calc.
|
||||
* calculator, infix notation: Infix Calc.
|
||||
* calculator, location tracking: Location Tracking Calc.
|
||||
* calculator, multi-function: Multi-function Calc.
|
||||
* calculator, simple: RPN Calc.
|
||||
* character token: Symbols.
|
||||
@@ -872,9 +869,10 @@ Index
|
||||
* data types of semantic values: Value Type.
|
||||
* debugging: Debugging.
|
||||
* declaration summary: Decl Summary.
|
||||
* declarations: Prologue.
|
||||
* declarations section: Prologue.
|
||||
* declarations, Bison: Declarations.
|
||||
* declarations, Bison (introduction): Bison Declarations.
|
||||
* declarations, C: C Declarations.
|
||||
* declaring literal string tokens: Token Decl.
|
||||
* declaring operator precedence: Precedence Decl.
|
||||
* declaring the start symbol: Start Decl.
|
||||
@@ -889,6 +887,7 @@ Index
|
||||
* defining language semantics: Semantics.
|
||||
* else, dangling: Shift/Reduce.
|
||||
* environment variables: Environment Variables.
|
||||
* epilogue: Epilogue.
|
||||
* error: Error Recovery.
|
||||
* error recovery: Error Recovery.
|
||||
* error recovery, simple: Simple Error Recovery.
|
||||
@@ -926,10 +925,8 @@ Index
|
||||
* location <1>: Locations.
|
||||
* location: Locations Overview.
|
||||
* location actions: Actions and Locations.
|
||||
* location tracking calculator: Location Tracking Calc.
|
||||
* look-ahead token: Look-Ahead.
|
||||
* LR(1): Mystery Conflicts.
|
||||
* ltcalc: Location Tracking Calc.
|
||||
* main function in simple example: Rpcalc Main.
|
||||
* mfcalc: Multi-function Calc.
|
||||
* mid-rule actions: Mid-Rule Actions.
|
||||
@@ -947,13 +944,14 @@ Index
|
||||
* parser stack overflow: Stack Overflow.
|
||||
* parser state: Parser States.
|
||||
* polish notation calculator: RPN Calc.
|
||||
* position, textual <1>: Locations.
|
||||
* position, textual: Locations Overview.
|
||||
* position, textual <1>: Locations Overview.
|
||||
* position, textual: Locations.
|
||||
* precedence declarations: Precedence Decl.
|
||||
* precedence of operators: Precedence.
|
||||
* precedence, context-dependent: Contextual Precedence.
|
||||
* precedence, unary operator: Contextual Precedence.
|
||||
* preventing warnings about conflicts: Expect Decl.
|
||||
* Prologue: Prologue.
|
||||
* pure parser: Pure Decl.
|
||||
* recovery from errors: Error Recovery.
|
||||
* recursive rule: Recursion.
|
||||
@@ -1011,8 +1009,8 @@ Index
|
||||
* YYBACKUP: Action Features.
|
||||
* yychar: Look-Ahead.
|
||||
* yyclearin: Error Recovery.
|
||||
* yydebug: Debugging.
|
||||
* YYDEBUG: Debugging.
|
||||
* yydebug: Debugging.
|
||||
* YYEMPTY: Action Features.
|
||||
* yyerrok: Error Recovery.
|
||||
* YYERROR: Action Features.
|
||||
|
||||
+153
-379
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,4 @@
|
||||
|
||||
@node GNU Free Documentation License
|
||||
@appendixsec GNU Free Documentation License
|
||||
|
||||
@@ -399,3 +400,4 @@ to permit their use in free software.
|
||||
@c Local Variables:
|
||||
@c ispell-local-pdict: "ispell-dict"
|
||||
@c End:
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
@node Copying
|
||||
@node Copying, Concepts, Conditions, Top
|
||||
@unnumbered GNU GENERAL PUBLIC LICENSE
|
||||
@center Version 2, June 1991
|
||||
|
||||
|
||||
+3
-4
@@ -1,4 +1,3 @@
|
||||
@set UPDATED 20 September 2001
|
||||
@set UPDATED-MONTH September 2001
|
||||
@set EDITION 1.29b
|
||||
@set VERSION 1.29b
|
||||
@set UPDATED 15 August 2001
|
||||
@set EDITION 1.28c
|
||||
@set VERSION 1.28c
|
||||
|
||||
+3
-4
@@ -1,4 +1,3 @@
|
||||
@set UPDATED 20 September 2001
|
||||
@set UPDATED-MONTH September 2001
|
||||
@set EDITION 1.29b
|
||||
@set VERSION 1.29b
|
||||
@set UPDATED 15 August 2001
|
||||
@set EDITION 1.28c
|
||||
@set VERSION 1.28c
|
||||
|
||||
+2
-1
@@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = ansi2knr
|
||||
|
||||
noinst_LIBRARIES = libbison.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
||||
INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl
|
||||
|
||||
# Heck, we are still using an old version of Automake which does not
|
||||
# understand LIBOBJ additions using $objext...
|
||||
@@ -14,6 +14,7 @@ EXTRA_DIST = malloc.c realloc.c
|
||||
libbison_a_SOURCES = \
|
||||
error.c error.h \
|
||||
getopt.h getopt.c getopt1.c \
|
||||
hash.h hash.c \
|
||||
obstack.h obstack.c \
|
||||
quote.h quote.c quotearg.h quotearg.c \
|
||||
xalloc.h xmalloc.c xstrdup.c
|
||||
|
||||
+23
-14
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
@@ -100,7 +104,7 @@ AUTOMAKE_OPTIONS = ansi2knr
|
||||
|
||||
noinst_LIBRARIES = libbison.a
|
||||
|
||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
||||
INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/src -I../intl
|
||||
|
||||
|
||||
# Heck, we are still using an old version of Automake which does not
|
||||
@@ -110,6 +114,7 @@ EXTRA_DIST = malloc.c realloc.c
|
||||
libbison_a_SOURCES = \
|
||||
error.c error.h \
|
||||
getopt.h getopt.c getopt1.c \
|
||||
hash.h hash.c \
|
||||
obstack.h obstack.c \
|
||||
quote.h quote.c quotearg.h quotearg.c \
|
||||
xalloc.h xmalloc.c xstrdup.c
|
||||
@@ -125,8 +130,9 @@ LIBRARIES = $(noinst_LIBRARIES)
|
||||
|
||||
libbison_a_AR = $(AR) cru
|
||||
am_libbison_a_OBJECTS = error$U.$(OBJEXT) getopt$U.$(OBJEXT) \
|
||||
getopt1$U.$(OBJEXT) obstack$U.$(OBJEXT) quote$U.$(OBJEXT) \
|
||||
quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) xstrdup$U.$(OBJEXT)
|
||||
getopt1$U.$(OBJEXT) hash$U.$(OBJEXT) obstack$U.$(OBJEXT) \
|
||||
quote$U.$(OBJEXT) quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) \
|
||||
xstrdup$U.$(OBJEXT)
|
||||
libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
|
||||
|
||||
DEFS = @DEFS@
|
||||
@@ -136,13 +142,13 @@ LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/error$U.Po $(DEPDIR)/getopt$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getopt1$U.Po $(DEPDIR)/malloc.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/memchr.Po $(DEPDIR)/obstack$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/quote$U.Po $(DEPDIR)/quotearg$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/stpcpy.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strndup.Po $(DEPDIR)/strnlen.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strspn.Po $(DEPDIR)/xmalloc$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/xstrdup$U.Po
|
||||
@AMDEP_TRUE@ $(DEPDIR)/getopt1$U.Po $(DEPDIR)/hash$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/obstack$U.Po $(DEPDIR)/quote$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/quotearg$U.Po $(DEPDIR)/realloc.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/stpcpy.Po $(DEPDIR)/strndup.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/strnlen.Po $(DEPDIR)/strspn.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/xmalloc$U.Po $(DEPDIR)/xstrdup$U.Po
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
@@ -194,6 +200,7 @@ mostlyclean-kr:
|
||||
@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)/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)/memchr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack$U.Po@am__quote@
|
||||
@@ -230,6 +237,8 @@ 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
|
||||
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
|
||||
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)
|
||||
$(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)
|
||||
@@ -255,10 +264,10 @@ xmalloc_.c: xmalloc.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
|
||||
alloca_.$(OBJEXT) error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) \
|
||||
malloc_.$(OBJEXT) memchr_.$(OBJEXT) obstack_.$(OBJEXT) quote_.$(OBJEXT) \
|
||||
quotearg_.$(OBJEXT) realloc_.$(OBJEXT) stpcpy_.$(OBJEXT) \
|
||||
strndup_.$(OBJEXT) strnlen_.$(OBJEXT) strspn_.$(OBJEXT) \
|
||||
xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) : $(ANSI2KNR)
|
||||
hash_.$(OBJEXT) malloc_.$(OBJEXT) memchr_.$(OBJEXT) obstack_.$(OBJEXT) \
|
||||
quote_.$(OBJEXT) quotearg_.$(OBJEXT) realloc_.$(OBJEXT) \
|
||||
stpcpy_.$(OBJEXT) strndup_.$(OBJEXT) strnlen_.$(OBJEXT) \
|
||||
strspn_.$(OBJEXT) xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) : $(ANSI2KNR)
|
||||
uninstall-info-am:
|
||||
|
||||
tags: TAGS
|
||||
|
||||
+293
@@ -0,0 +1,293 @@
|
||||
/* 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
@@ -0,0 +1,144 @@
|
||||
/* 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_ */
|
||||
+1
-1
@@ -1,8 +1,8 @@
|
||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||
EXTRA_DIST = \
|
||||
atconfig.m4 \
|
||||
c-bs-a.m4 \
|
||||
codeset.m4 \
|
||||
dmalloc.m4 \
|
||||
error.m4 \
|
||||
gettext.m4 \
|
||||
glibc21.m4 \
|
||||
|
||||
+5
-1
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
@@ -97,9 +101,9 @@ am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
|
||||
EXTRA_DIST = \
|
||||
atconfig.m4 \
|
||||
c-bs-a.m4 \
|
||||
codeset.m4 \
|
||||
dmalloc.m4 \
|
||||
error.m4 \
|
||||
gettext.m4 \
|
||||
glibc21.m4 \
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
## ----------------------##
|
||||
## Prepare for testing. ##
|
||||
## ----------------------##
|
||||
|
||||
# serial 2
|
||||
|
||||
# Single argument says where are built sources to test, relative to the
|
||||
# built test directory. Maybe omitted if the same (flat distribution).
|
||||
|
||||
AC_DEFUN([AT_CONFIG],
|
||||
[AT_TESTPATH=ifelse([$1], [], [.], [$1])
|
||||
AC_SUBST([AT_TESTPATH])
|
||||
# Try to be compatible with both Autoconf 2.13 and 2.50.
|
||||
if test -z "$ECHO_C$ECHO_N$ECHO_T"; then
|
||||
ECHO_C="$ac_c"
|
||||
ECHO_N="$ac_n"
|
||||
ECHO_T="$ac_t"
|
||||
AC_SUBST([ECHO_C])
|
||||
AC_SUBST([ECHO_N])
|
||||
AC_SUBST([ECHO_T])
|
||||
fi
|
||||
])
|
||||
@@ -1,22 +0,0 @@
|
||||
## ----------------------------------- ##
|
||||
## Check if --with-dmalloc was given. ##
|
||||
## From Franc,ois Pinard ##
|
||||
## ----------------------------------- ##
|
||||
|
||||
# serial 1
|
||||
|
||||
AC_DEFUN([AM_WITH_DMALLOC],
|
||||
[AC_MSG_CHECKING([if malloc debugging is wanted])
|
||||
AC_ARG_WITH(dmalloc,
|
||||
[ --with-dmalloc use dmalloc, as in
|
||||
http://www.dmalloc.com/dmalloc.tar.gz],
|
||||
[if test "$withval" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(WITH_DMALLOC,1,
|
||||
[Define if using the dmalloc debugging malloc package])
|
||||
LIBS="$LIBS -ldmalloc"
|
||||
LDFLAGS="$LDFLAGS -g"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi], [AC_MSG_RESULT(no)])
|
||||
])
|
||||
@@ -0,0 +1,283 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <[email protected]>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing 0.3 - GNU automake"
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aclocal)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
||||
# We have makeinfo, but it failed.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is missing on your system. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
||||
fi
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar ${1+"$@"} && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar ${1+"$@"} && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" ${1+"$@"} && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
||||
system. You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequirements for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
# Author: Noah Friedman <[email protected]>
|
||||
# Created: 1993-05-16
|
||||
# Public domain
|
||||
|
||||
# $Id$
|
||||
|
||||
errstatus=0
|
||||
|
||||
for file
|
||||
do
|
||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||
shift
|
||||
|
||||
pathcomp=
|
||||
for d
|
||||
do
|
||||
pathcomp="$pathcomp$d"
|
||||
case "$pathcomp" in
|
||||
-* ) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# mkinstalldirs ends here
|
||||
@@ -4,4 +4,3 @@ Makefile.in
|
||||
POTFILES
|
||||
bison.pot
|
||||
stamp-cat-id
|
||||
*.gmo
|
||||
|
||||
@@ -13,6 +13,7 @@ src/print.c
|
||||
src/print_graph.c
|
||||
src/reader.c
|
||||
src/reduce.c
|
||||
src/vcg.c
|
||||
|
||||
lib/error.c
|
||||
lib/getopt.c
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
||||
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
|
||||
"Last-Translator: Ulrich Drepper <[email protected]>\n"
|
||||
"Language-Team: German <[email protected]>\n"
|
||||
@@ -18,90 +18,90 @@ msgstr ""
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
#: lib/error.c:117 src/complain.c:100
|
||||
msgid "Unknown system error"
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:150
|
||||
#: src/complain.c:154
|
||||
msgid "warning: "
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
#: src/complain.c:242 src/complain.c:283
|
||||
#, fuzzy
|
||||
msgid "fatal error: "
|
||||
msgstr "fataler Fehler: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:49
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:115 src/conflicts.c:138
|
||||
msgid "reduce"
|
||||
msgstr "durch Reduzierung gelöst"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:121 src/conflicts.c:134
|
||||
msgid "shift"
|
||||
msgstr "durch Schieben gelöst"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:142
|
||||
msgid "an error"
|
||||
msgstr "als Fehler betrachtet"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
#: src/conflicts.c:422
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 Schiebe/Reduziere Konflikt"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#: src/conflicts.c:427
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d Schiebe/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
#: src/conflicts.c:433
|
||||
msgid " and"
|
||||
msgstr " und"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
#: src/conflicts.c:439
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 Reduziere/Reduziere Konflikt"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#: src/conflicts.c:444
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d Reduziere/Reduziere Konflikte"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#: src/conflicts.c:481
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "Zustand %d enthält"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:493
|
||||
msgid "conflicts: "
|
||||
msgstr "Konflikte: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:495
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d Schiebe/Reduziere"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:499
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d Reduziere/Reduziere"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:504
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s enthält"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:590 src/conflicts.c:711
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:602 src/print.c:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,31 +110,31 @@ msgstr ""
|
||||
" $default\treduziere mit Regel %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:691 src/conflicts.c:705
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:732
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#: src/derives.c:44
|
||||
msgid "DERIVES"
|
||||
msgstr ""
|
||||
|
||||
#: src/derives.c:48
|
||||
#: src/derives.c:49
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s leitet ab"
|
||||
|
||||
#: src/files.c:136
|
||||
#: src/files.c:130
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/files.c:155
|
||||
#: src/files.c:149
|
||||
msgid "cannot close file"
|
||||
msgstr ""
|
||||
|
||||
@@ -182,155 +182,153 @@ msgid ""
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:126
|
||||
#: src/getargs.c:124
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#: src/getargs.c:138
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:145
|
||||
#: src/getargs.c:143
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:149
|
||||
#: src/getargs.c:147
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#: src/getargs.c:208 src/lex.c:635
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:238
|
||||
#: src/getargs.c:232
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:245
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: keine Grammatik-Datei angegeben\n"
|
||||
|
||||
#: src/getargs.c:249
|
||||
#: src/getargs.c:243
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:312
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:78
|
||||
#: src/lex.c:70
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
#: src/lex.c:99 src/reader.c:270
|
||||
msgid "unterminated comment"
|
||||
msgstr "unbeendeter Kommentar"
|
||||
|
||||
#: src/lex.c:139
|
||||
#: src/lex.c:131
|
||||
#, fuzzy
|
||||
msgid "unexpected end of file"
|
||||
msgstr "Datei endet unerwartet"
|
||||
|
||||
# Oder soll man den Begriff "Escapezeichen" verwenden?
|
||||
#: src/lex.c:168
|
||||
#: src/lex.c:160
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "nicht maskiertes Zeilenendezeichen in Konstante"
|
||||
|
||||
#: src/lex.c:210
|
||||
#: src/lex.c:202
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«"
|
||||
|
||||
#: src/lex.c:235
|
||||
#: src/lex.c:227
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«"
|
||||
|
||||
#: src/lex.c:247
|
||||
#: src/lex.c:239
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«"
|
||||
|
||||
#: src/lex.c:343
|
||||
#: src/lex.c:335
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "unerwarteter Typname am Ende der Datei"
|
||||
|
||||
#: src/lex.c:346
|
||||
#: src/lex.c:338
|
||||
msgid "unterminated type name"
|
||||
msgstr "unerwarteter Typname"
|
||||
|
||||
#: src/lex.c:437
|
||||
#: src/lex.c:430
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
|
||||
|
||||
#: src/main.c:124
|
||||
#: src/main.c:108
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "interner Fehler, %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
#: src/nullable.c:52
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "Führe »set_nullable« aus"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:993
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "maximale Tabellengröße (%s) überschritten"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " Typ %d ist %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:86
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (Regel %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:112
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\takzeptiere\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:114
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " KEINE AKTIONEN\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:133
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tgehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:136
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:160
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tFehler (nicht assoziativ)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:190
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tgehe zu Zustand %d über\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:202
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -339,25 +337,23 @@ msgstr ""
|
||||
"Zustand %d\n"
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:233
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Grammatik\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:240
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "Regel %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
#: src/print.c:246
|
||||
msgid "\t\t/* empty */"
|
||||
msgstr "\t\t/* leer */"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:253
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -365,7 +361,7 @@ msgstr ""
|
||||
"Terminale und die Regeln un denen sie verwendet werden\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:302
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -373,11 +369,11 @@ msgstr ""
|
||||
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:329
|
||||
msgid " on left:"
|
||||
msgstr " auf der linken Seite:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:344
|
||||
msgid " on right:"
|
||||
msgstr " auf der rechten Seite:"
|
||||
|
||||
@@ -391,116 +387,116 @@ msgstr " %-4s\tFehler (nicht assoziativ)\n"
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||
|
||||
#: src/reader.c:78
|
||||
#: src/reader.c:79
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " Überspringe Zeichen bis zum nächsten \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#: src/reader.c:81
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " Überspringe Zeichen bis zum nächten %c"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
#: src/reader.c:132 src/reader.c:144
|
||||
msgid "invalid $ value"
|
||||
msgstr "unzulässiger $ Wert"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
#: src/reader.c:170 src/reader.c:185
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "unbeendete Zeichenkette am Ende der Datei"
|
||||
|
||||
#: src/reader.c:172
|
||||
#: src/reader.c:173
|
||||
msgid "unterminated string"
|
||||
msgstr "unbeendete Zeichenkette"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#: src/reader.c:326 src/reader.c:390
|
||||
#, fuzzy, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "@%s ist unzulässig"
|
||||
|
||||
#: src/reader.c:365
|
||||
#: src/reader.c:366
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "$$ von »%s« hat keine deklarierten Wert"
|
||||
|
||||
#: src/reader.c:382
|
||||
#: src/reader.c:383
|
||||
#, fuzzy, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "»%s« von »%s« hat keine deklarierten Wert"
|
||||
|
||||
#: src/reader.c:436
|
||||
#: src/reader.c:437
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "unbeendete »%{« Definition"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:498
|
||||
#: src/reader.c:499
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:501
|
||||
#: src/reader.c:502
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#: src/reader.c:524 src/reader.c:667
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "Symbol %s noch einmal definiert"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "erneute Deklaration des Typs für %s"
|
||||
|
||||
#: src/reader.c:541
|
||||
#: src/reader.c:544
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "»%s« ist in %s nicht erlaubt"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#: src/reader.c:561 src/reader.c:721
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "mehr als eine %start Deklaration"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#: src/reader.c:563 src/reader.c:1246
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "ungültige %start Deklaration"
|
||||
|
||||
#: src/reader.c:580
|
||||
#: src/reader.c:583
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "%type Deklaration hat keinen <Typ-Namen>"
|
||||
|
||||
#: src/reader.c:615
|
||||
#: src/reader.c:618
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "ungültige %%type Deklaration wegen »%s«"
|
||||
|
||||
#: src/reader.c:660
|
||||
#: src/reader.c:663
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "Stellenwertigkeit von %s wird erneut definiert"
|
||||
|
||||
#: src/reader.c:683
|
||||
#: src/reader.c:687
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen"
|
||||
|
||||
#: src/reader.c:693
|
||||
#: src/reader.c:697
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "unerwartetes Symbol: %s"
|
||||
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
|
||||
#, fuzzy, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "»{« hat kein Gegenstück"
|
||||
|
||||
#: src/reader.c:792
|
||||
#: src/reader.c:791
|
||||
#, fuzzy, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "Argument von %expect ist keine ganze Zahl"
|
||||
@@ -515,117 +511,127 @@ msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#: src/reader.c:887
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%header_extension declarations"
|
||||
msgstr "erneute %union Definition"
|
||||
|
||||
#: src/reader.c:902
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%source_extension declarations"
|
||||
msgstr "erneute %union Definition"
|
||||
|
||||
#: src/reader.c:988
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "unbekannt: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
#: src/reader.c:993
|
||||
msgid "no input grammar"
|
||||
msgstr "keine Eingabe-Grammatik"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#: src/reader.c:998
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "unbekanntes Zeichen: %s"
|
||||
|
||||
#: src/reader.c:1183
|
||||
#: src/reader.c:1166
|
||||
#, fuzzy, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "unbeendeter %%guard Fall"
|
||||
|
||||
#: src/reader.c:1350
|
||||
#: src/reader.c:1333
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr ""
|
||||
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
|
||||
"gefolgt"
|
||||
|
||||
#: src/reader.c:1357
|
||||
#: src/reader.c:1340
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#: src/reader.c:1371
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "Regel für %s vorhanden, welches aber ein Token ist"
|
||||
|
||||
#: src/reader.c:1490
|
||||
#: src/reader.c:1473
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "zwei @prec Anweisungen nacheinander"
|
||||
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
#: src/reader.c:1481
|
||||
#, fuzzy, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr ""
|
||||
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1490
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "Zwei Aktionen am Ende einer Regel"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#: src/reader.c:1504
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
|
||||
|
||||
#: src/reader.c:1527
|
||||
#: src/reader.c:1510
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#: src/reader.c:1554
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ungültige Eingabe: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#: src/reader.c:1562
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
|
||||
|
||||
#: src/reader.c:1582
|
||||
#: src/reader.c:1565
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "Eingabegrammatik enthält keine Regeln"
|
||||
|
||||
#: src/reader.c:1606
|
||||
#: src/reader.c:1589
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
|
||||
"Regel"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#: src/reader.c:1694
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#: src/reader.c:1706
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "assoc Werte für %s nd %s widersprechen sich"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#: src/reader.c:1757
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "Token %s und %s haben die selbe nummer %s"
|
||||
|
||||
#: src/reader.c:1782
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "das Startsymbol %s ist undefiniert"
|
||||
|
||||
#: src/reader.c:1784
|
||||
#: src/reader.c:1772
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "das Startsymbol %s ist ein Token"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:404
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"Nutzlose Nicht-Terminale:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:419
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -634,7 +640,7 @@ msgstr ""
|
||||
"Nicht genutzte Terminale:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:430
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -643,7 +649,7 @@ msgstr ""
|
||||
"Ungenutzte Regeln:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:459
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -653,11 +659,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:461
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Wert Sprec Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:466
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -667,7 +673,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:477
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -677,36 +683,36 @@ msgstr ""
|
||||
"----------------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#: src/reduce.c:494
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d wurde niemals reduziert\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#: src/reduce.c:496
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s enthält "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#: src/reduce.c:500
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d ungenutzte Nicht-Terminal"
|
||||
|
||||
#: src/reduce.c:502
|
||||
#: src/reduce.c:505
|
||||
msgid " and "
|
||||
msgstr " und "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#: src/reduce.c:509
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d ungenutzte Regel"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:542
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#: src/reduce.c:555
|
||||
#, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
@@ -714,6 +720,50 @@ msgstr ""
|
||||
"Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
|
||||
"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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -802,6 +852,29 @@ msgstr ""
|
||||
msgid "'"
|
||||
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 ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -809,6 +882,8 @@ msgstr ""
|
||||
#~ " [--no-parser] [--token-table]\n"
|
||||
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||
#~ " [--output=outfile] grammar-file\n"
|
||||
#~ "\n"
|
||||
#~ "Report bugs to [email protected]\n"
|
||||
#~ msgstr ""
|
||||
#~ "Benutzung: %s [-dhklntvyV] [-b Datei-Präfix] [-o Ausgabe-Datei]\n"
|
||||
#~ " [-p Namen-Präfix] [--debug] [--defines] [--fixed-output-"
|
||||
@@ -818,8 +893,15 @@ msgstr ""
|
||||
#~ " [--file-prefix=Präfix] [--name-prefix=Präfix]\n"
|
||||
#~ " [--output=Ausgabe-Datei] Grammatik-Datei\n"
|
||||
|
||||
#~ msgid "gotos"
|
||||
#~ msgstr "»goto« Anweisungen"
|
||||
#, fuzzy
|
||||
#~ msgid "%s:%d: fatal error: "
|
||||
#~ 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"
|
||||
#~ msgstr "»%s«, Zeile %d: %s\n"
|
||||
@@ -832,30 +914,3 @@ msgstr ""
|
||||
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "Grenze von %d erreicht, zu viele %s"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* leer */"
|
||||
|
||||
#~ msgid "unterminated comment in `%{' definition"
|
||||
#~ msgstr "unbeendeter Kommentar in »%{« Definition"
|
||||
|
||||
#~ msgid "multiple %union declarations"
|
||||
#~ msgstr "erneute %union Definition"
|
||||
|
||||
#~ msgid "unterminated comment at end of file"
|
||||
#~ msgstr "unbeendeter Kommentar am Dateiende"
|
||||
|
||||
#~ msgid "unmatched close-brace (`}')"
|
||||
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
|
||||
|
||||
#~ msgid "unmatched right brace (`}')"
|
||||
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
|
||||
|
||||
#~ msgid "$%s is invalid"
|
||||
#~ msgstr "$%s ist unzulässig"
|
||||
|
||||
#~ msgid "invalid @-construct"
|
||||
#~ msgstr "unzulässig @-Konstruktion"
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ msgstr "falsch geformte %type Deklaration"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
||||
"PO-Revision-Date: 1998-09-21 10:19+0200\n"
|
||||
"Last-Translator: Nicolás García-Pedrajas <[email protected]>\n"
|
||||
"Language-Team: Spanish <[email protected]>\n"
|
||||
@@ -43,11 +43,11 @@ msgstr ""
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
#: lib/error.c:117 src/complain.c:100
|
||||
msgid "Unknown system error"
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:150
|
||||
#: src/complain.c:154
|
||||
msgid "warning: "
|
||||
msgstr ""
|
||||
|
||||
@@ -58,60 +58,60 @@ msgstr ""
|
||||
# La verdad es que a mi lo de error fatal me suena fatal
|
||||
# ngp
|
||||
#
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
#: src/complain.c:242 src/complain.c:283
|
||||
#, fuzzy
|
||||
msgid "fatal error: "
|
||||
msgstr "error grave: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:49
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
|
||||
"como %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:115 src/conflicts.c:138
|
||||
msgid "reduce"
|
||||
msgstr "reduce"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:121 src/conflicts.c:134
|
||||
msgid "shift"
|
||||
msgstr "desplaza"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:142
|
||||
msgid "an error"
|
||||
msgstr "un error"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
#: src/conflicts.c:422
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 conflicto desplazamiento/reducción"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#: src/conflicts.c:427
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d conflictos desplazamiento/reducción"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
#: src/conflicts.c:433
|
||||
msgid " and"
|
||||
msgstr " y"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
#: src/conflicts.c:439
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 conflicto reducción/reducción"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#: src/conflicts.c:444
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d conflictos reducción/reducción"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#: src/conflicts.c:481
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "El estado %d contiene"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:493
|
||||
msgid "conflicts: "
|
||||
msgstr "conflictos: "
|
||||
|
||||
@@ -127,7 +127,7 @@ msgstr "conflictos: "
|
||||
# ok
|
||||
# ngp
|
||||
#
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:495
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d desplazamiento(s)/reducción(ones)"
|
||||
@@ -144,22 +144,22 @@ msgstr " %d desplazamiento(s)/reducci
|
||||
#
|
||||
# ok
|
||||
# ngp
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:499
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d reducción(ones)/reducción(ones)"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:504
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s contiene"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:590 src/conflicts.c:711
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduce usando la regla %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:602 src/print.c:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -168,17 +168,17 @@ msgstr ""
|
||||
" $default\treduce usando la regla %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:691 src/conflicts.c:705
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\treduce usando la regla %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:732
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\treduce usando la regla %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#: src/derives.c:44
|
||||
#, fuzzy
|
||||
msgid "DERIVES"
|
||||
msgstr ""
|
||||
@@ -187,17 +187,17 @@ msgstr ""
|
||||
"\n"
|
||||
"DERIVACIONES\n"
|
||||
|
||||
#: src/derives.c:48
|
||||
#: src/derives.c:49
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s deriva"
|
||||
|
||||
#: src/files.c:136
|
||||
#: src/files.c:130
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/files.c:155
|
||||
#: src/files.c:149
|
||||
msgid "cannot close file"
|
||||
msgstr ""
|
||||
|
||||
@@ -245,113 +245,111 @@ msgid ""
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:126
|
||||
#: src/getargs.c:124
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#: src/getargs.c:138
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:145
|
||||
#: src/getargs.c:143
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:149
|
||||
#: src/getargs.c:147
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#: src/getargs.c:208 src/lex.c:635
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:238
|
||||
#: src/getargs.c:232
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr ""
|
||||
|
||||
# Me parece menos "computadora" decir "ningún fichero de gramática" - cll
|
||||
#
|
||||
#: src/getargs.c:245
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\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
|
||||
#: src/getargs.c:249
|
||||
#: src/getargs.c:243
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:312
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
|
||||
# to ignore no es ignorar. Pon otra cosa, please. sv
|
||||
#: src/lex.c:78
|
||||
#: src/lex.c:70
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
#: src/lex.c:99 src/reader.c:270
|
||||
msgid "unterminated comment"
|
||||
msgstr "comentario sin terminar"
|
||||
|
||||
#: src/lex.c:139
|
||||
#: src/lex.c:131
|
||||
#, fuzzy
|
||||
msgid "unexpected end of file"
|
||||
msgstr "Fin de fichero inesperado"
|
||||
|
||||
# ¿unescaped?
|
||||
#: src/lex.c:168
|
||||
#: src/lex.c:160
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "salto de línea en constante sin secuencia de escape"
|
||||
|
||||
#: src/lex.c:210
|
||||
#: src/lex.c:202
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "valor octal fuera del rango 0...255: `\\%o'"
|
||||
|
||||
#: src/lex.c:235
|
||||
#: src/lex.c:227
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "valor hexadecimal mayor que 255: `\\x%x'"
|
||||
|
||||
#: src/lex.c:247
|
||||
#: src/lex.c:239
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "secuencia de escape desconocida: `\\' seguido de `%s'"
|
||||
|
||||
#: src/lex.c:343
|
||||
#: src/lex.c:335
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "nombre de tipo sin terminar al final del fichero"
|
||||
|
||||
#: src/lex.c:346
|
||||
#: src/lex.c:338
|
||||
msgid "unterminated type name"
|
||||
msgstr "nombre de tipo sin terminar"
|
||||
|
||||
# ¿multicarácter o multicaracteres? sv
|
||||
#: src/lex.c:437
|
||||
#: src/lex.c:430
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "use \"...\" para terminales literales multicarácter"
|
||||
|
||||
#: src/main.c:124
|
||||
#: src/main.c:108
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "error interno, %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
#: src/nullable.c:52
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "Entrando set_nullable"
|
||||
|
||||
@@ -360,50 +358,50 @@ msgstr "Entrando set_nullable"
|
||||
# en inglés era así, pero quizás en español sea mejor como dices
|
||||
# ngp
|
||||
#
|
||||
#: src/output.c:986
|
||||
#: src/output.c:993
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "excedido el tamaño máximo de la tabla (%s)"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " el tipo %d es %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:86
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (regla %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:112
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\taceptar\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:114
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " SIN ACCIONES\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:133
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tir al estado %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:136
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tdesplazar e ir al estado %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:160
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\terror (no asociativo)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:190
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tir al estado %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:202
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -412,25 +410,28 @@ msgstr ""
|
||||
"estado %d\n"
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:233
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gramática\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:240
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "regla %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
# Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por
|
||||
# el contrario, pudiera cualquiera de los casos, debieras traducirlo
|
||||
# como `vacía/o' - cll
|
||||
# según el código indica reglas vacías por eso lo puse así
|
||||
# ngp
|
||||
#: src/print.c:246
|
||||
msgid "\t\t/* empty */"
|
||||
msgstr "\t\t/* vacía */"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:253
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -438,18 +439,18 @@ msgstr ""
|
||||
"Terminales con las reglas donde aparecen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:302
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"No terminales con las reglas donde aparecen\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:329
|
||||
msgid " on left:"
|
||||
msgstr " en la izquierda:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:344
|
||||
msgid " on right:"
|
||||
msgstr " en la derecha:"
|
||||
|
||||
@@ -463,96 +464,96 @@ msgstr " %-4s\terror (no asociativo)\n"
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\treduce usando la regla %d (%s)\n"
|
||||
|
||||
#: src/reader.c:78
|
||||
#: src/reader.c:79
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " Saltando al siguiente \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#: src/reader.c:81
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " Saltando al siguiente %c"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
#: src/reader.c:132 src/reader.c:144
|
||||
msgid "invalid $ value"
|
||||
msgstr "valor $ no válido"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
#: src/reader.c:170 src/reader.c:185
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "cadena sin terminar al final del fichero"
|
||||
|
||||
#: src/reader.c:172
|
||||
#: src/reader.c:173
|
||||
msgid "unterminated string"
|
||||
msgstr "cadena sin terminar"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#: src/reader.c:326 src/reader.c:390
|
||||
#, fuzzy, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "@%s no es válido"
|
||||
|
||||
#: src/reader.c:365
|
||||
#: src/reader.c:366
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "$$ de `%s' no tiene tipo declarado"
|
||||
|
||||
#: src/reader.c:382
|
||||
#: src/reader.c:383
|
||||
#, fuzzy, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "$%s de `%s' no tiene tipo declarado"
|
||||
|
||||
#: src/reader.c:436
|
||||
#: src/reader.c:437
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "definición `%{' sin terminar"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:498
|
||||
#: src/reader.c:499
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:501
|
||||
#: src/reader.c:502
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#: src/reader.c:524 src/reader.c:667
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "redefinido el símbolo %s"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "redeclaración del tipo de %s"
|
||||
|
||||
#: src/reader.c:541
|
||||
#: src/reader.c:544
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "`%s' no es válido en %s"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#: src/reader.c:561 src/reader.c:721
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "múltiples declaraciones de %start"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#: src/reader.c:563 src/reader.c:1246
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "declaración de %start no válida"
|
||||
|
||||
#: src/reader.c:580
|
||||
#: src/reader.c:583
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "la declaración %type no tiene <nombre-tipo>"
|
||||
|
||||
#: src/reader.c:615
|
||||
#: src/reader.c:618
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "declaración de %%type no válida debido al ítem: `%s'"
|
||||
|
||||
#: src/reader.c:660
|
||||
#: src/reader.c:663
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "redefinición de la precedencia de %s"
|
||||
@@ -561,7 +562,7 @@ msgstr "redefinici
|
||||
# de "to must" y aquí se emplea en su forma condicional. Por eso, he
|
||||
# cambiado `debe' por `debería' - cll
|
||||
# ahí me has pillado en un olvido del inglés - ngp
|
||||
#: src/reader.c:683
|
||||
#: src/reader.c:687
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr ""
|
||||
@@ -571,18 +572,18 @@ msgstr ""
|
||||
# otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en
|
||||
# este caso, la segunda me parece más apropiada - cll
|
||||
# ok - ngp
|
||||
#: src/reader.c:693
|
||||
#: src/reader.c:697
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "ítem inesperado: %s"
|
||||
|
||||
# Cambio el orden y el sexo. Ahora está "en español". sv
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
|
||||
#, fuzzy, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "`{' desemparejada"
|
||||
|
||||
#: src/reader.c:792
|
||||
#: src/reader.c:791
|
||||
#, fuzzy, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "el argumento de %expect no es un entero"
|
||||
@@ -603,16 +604,26 @@ msgstr "no se reconoce el
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "se esperaba una cadena constante en lugar de %s"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#: src/reader.c:887
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%header_extension declarations"
|
||||
msgstr "declaraciones múltiples de %union"
|
||||
|
||||
#: src/reader.c:902
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%source_extension declarations"
|
||||
msgstr "declaraciones múltiples de %union"
|
||||
|
||||
#: src/reader.c:988
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "no reconocido: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
#: src/reader.c:993
|
||||
msgid "no input grammar"
|
||||
msgstr "no hay gramática de entrada"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#: src/reader.c:998
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "carácter desconocido: %s"
|
||||
@@ -621,105 +632,105 @@ msgstr "car
|
||||
# mejor que `sin terminar' que me parece más "computerizado" - cll
|
||||
# quizás un poco cacofónico lo de claúsula inconclusa - ngp
|
||||
#
|
||||
#: src/reader.c:1183
|
||||
#: src/reader.c:1166
|
||||
#, fuzzy, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "cláusula %%guard sin terminar"
|
||||
|
||||
#: src/reader.c:1350
|
||||
#: src/reader.c:1333
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "regla mal formada: el símbolo inicial no está seguido por :"
|
||||
|
||||
#: src/reader.c:1357
|
||||
#: src/reader.c:1340
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "la gramática comienza con una barra vertical"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#: src/reader.c:1371
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "se ha dado una regla para %s, que es un terminal"
|
||||
|
||||
#: src/reader.c:1490
|
||||
#: src/reader.c:1473
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "dos @prec en una línea"
|
||||
|
||||
# Insisto, el empleo de participios a secas me parece como hablar en
|
||||
# indio. Por favor, permíteme que añada un "está" :) - cll
|
||||
# ok - ngp
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
#: src/reader.c:1481
|
||||
#, fuzzy, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard presente pero %%semantic_parser está sin especificar"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1490
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "dos acciones al final de una regla"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#: src/reader.c:1504
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
|
||||
|
||||
#: src/reader.c:1527
|
||||
#: src/reader.c:1510
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#: src/reader.c:1554
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "entrada no válida: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#: src/reader.c:1562
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
|
||||
|
||||
#: src/reader.c:1582
|
||||
#: src/reader.c:1565
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "no hay reglas en la gramática de entrada"
|
||||
|
||||
# `token' se debe traducir como `literal' - cll
|
||||
# en terminología de compiladores token es más un terminal - ngp
|
||||
#
|
||||
#: src/reader.c:1606
|
||||
#: src/reader.c:1589
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#: src/reader.c:1694
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "precedencias en conflicto entre %s y %s"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#: src/reader.c:1706
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "conflicto de valores assoc para %s y %s"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#: src/reader.c:1757
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "los terminales %s y %s tienen asignados ambos el número %s"
|
||||
|
||||
#: src/reader.c:1782
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "el símbolo de inicio (axioma) %s no está definido"
|
||||
|
||||
#: src/reader.c:1784
|
||||
#: src/reader.c:1772
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "el símbolo de inicio (axioma) %s es un terminal"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:404
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"No terminales sin uso:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:419
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -728,7 +739,7 @@ msgstr ""
|
||||
"Terminales que no se usan:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:430
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -737,7 +748,7 @@ msgstr ""
|
||||
"Reglas sin uso:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:459
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -747,11 +758,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:461
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Valor Sprec Sasoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:466
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -761,7 +772,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:477
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -771,31 +782,31 @@ msgstr ""
|
||||
"--------------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#: src/reduce.c:494
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d reglas que nunca se han reducido\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#: src/reduce.c:496
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s contiene "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#: src/reduce.c:500
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d no terminales %s sin uso"
|
||||
|
||||
#: src/reduce.c:502
|
||||
#: src/reduce.c:505
|
||||
msgid " and "
|
||||
msgstr " y "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#: src/reduce.c:509
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d regla%s sin uso"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:542
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
|
||||
@@ -812,7 +823,7 @@ msgstr "El s
|
||||
# Te recomiendo `la reducción de %s' en vez de seguir el estilo inglés y
|
||||
# usar participios - cll
|
||||
# un error lo tiene cualquiera - ngp
|
||||
#: src/reduce.c:552
|
||||
#: src/reduce.c:555
|
||||
#, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
@@ -820,6 +831,50 @@ msgstr ""
|
||||
"la reducción de %s define %d terminal%s, %d no terminal%s, y %d produccion%"
|
||||
"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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -932,6 +987,37 @@ msgstr ""
|
||||
msgid "'"
|
||||
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
|
||||
# haces luego con "FDERIVES" que traduces como "FDERIVACIONES", ... -
|
||||
# cll
|
||||
@@ -983,6 +1069,7 @@ msgstr ""
|
||||
#~ "\n"
|
||||
#~ "%s deriva\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -990,6 +1077,8 @@ msgstr ""
|
||||
#~ " [--no-parser] [--token-table]\n"
|
||||
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||
#~ " [--output=outfile] grammar-file\n"
|
||||
#~ "\n"
|
||||
#~ "Report bugs to [email protected]\n"
|
||||
#~ msgstr ""
|
||||
#~ "Uso: %s [-dhklntvyV] [-b prefijo-ficheros] [-o fichero-salida] [-p "
|
||||
#~ "prefijo-nombres]\n"
|
||||
@@ -999,17 +1088,26 @@ msgstr ""
|
||||
#~ " [--file-prefix=prefijo] [--name-prefix=prefijo]\n"
|
||||
#~ " [--output=fichero-salida ] fichero-de-gramática\n"
|
||||
|
||||
# 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
|
||||
# Duda: desconozco cuál será el convenio en la lista de correo a
|
||||
# propósito de "fatal". Por favor, comprueba que "error grave" es
|
||||
# preferido por todos los miembros a "error fatal" - cll
|
||||
# veremos que dice la mayoría, como hay otros 2 revisores
|
||||
# La verdad es que a mi lo de error fatal me suena fatal
|
||||
# ngp
|
||||
#
|
||||
#~ msgid "gotos"
|
||||
#~ msgstr "saltos (gotos)"
|
||||
#, fuzzy
|
||||
#~ msgid "%s:%d: fatal error: "
|
||||
#~ 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"
|
||||
#~ msgstr "\"%s\", línea %d: %s\n"
|
||||
@@ -1024,39 +1122,3 @@ msgstr ""
|
||||
# de gettext dice cómo ha de hacerse, no de cualquier manera. sv
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "excedido el límite de %d, demasiados %s"
|
||||
|
||||
# Duda: ¿Estás seguro de que no será `vacío'? Si no lo estás o, si por
|
||||
# el contrario, pudiera cualquiera de los casos, debieras traducirlo
|
||||
# como `vacía/o' - cll
|
||||
# según el código indica reglas vacías por eso lo puse así
|
||||
# ngp
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* vacía */"
|
||||
|
||||
#~ msgid "unterminated comment in `%{' definition"
|
||||
#~ msgstr "comentario sin terminar en la definición `%{'"
|
||||
|
||||
#~ msgid "multiple %union declarations"
|
||||
#~ msgstr "declaraciones múltiples de %union"
|
||||
|
||||
#~ msgid "unterminated comment at end of file"
|
||||
#~ msgstr "comentario sin terminar al final del fichero"
|
||||
|
||||
#~ msgid "unmatched close-brace (`}')"
|
||||
#~ msgstr "llave de cierre (`}') desemparejada"
|
||||
|
||||
#~ msgid "unmatched right brace (`}')"
|
||||
#~ msgstr "llave derecha (`}') desemparejada"
|
||||
|
||||
#~ msgid "$%s is invalid"
|
||||
#~ msgstr "$%s no es válida"
|
||||
|
||||
# Duda: ¿`construct' no se refiere a `construcción'? Si es así, el
|
||||
# mensaje debiera ser "@-construcción no válida" - cll
|
||||
# O incluso "construcción @" sv
|
||||
# en ese caso supongo que sería @-construction ngp
|
||||
#~ msgid "invalid @-construct"
|
||||
#~ msgstr "@-constructo no válido"
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ msgstr "declaración %type incorrectamente formada"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GNU bison 1.28\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
||||
"PO-Revision-Date: 1999-09-28 21:10+0900\n"
|
||||
"Last-Translator: Daisuke Yamashita <[email protected]>\n"
|
||||
"Language-Team: Japanese <[email protected]>\n"
|
||||
@@ -18,90 +18,90 @@ msgstr ""
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "%s の数が多すぎます (最大 %d)"
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
#: lib/error.c:117 src/complain.c:100
|
||||
msgid "Unknown system error"
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:150
|
||||
#: src/complain.c:154
|
||||
msgid "warning: "
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
#: src/complain.c:242 src/complain.c:283
|
||||
#, fuzzy
|
||||
msgid "fatal error: "
|
||||
msgstr "%s: 致命的エラー: "
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:49
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:115 src/conflicts.c:138
|
||||
msgid "reduce"
|
||||
msgstr "還元"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:121 src/conflicts.c:134
|
||||
msgid "shift"
|
||||
msgstr "シフト"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:142
|
||||
msgid "an error"
|
||||
msgstr "エラー"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
#: src/conflicts.c:422
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 シフト/還元衝突"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#: src/conflicts.c:427
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d シフト/還元衝突"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
#: src/conflicts.c:433
|
||||
msgid " and"
|
||||
msgstr " および"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
#: src/conflicts.c:439
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 還元/還元衝突"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#: src/conflicts.c:444
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d 還元/還元衝突"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#: src/conflicts.c:481
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "状態 %d が含むのは"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:493
|
||||
msgid "conflicts: "
|
||||
msgstr "衝突: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:495
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d シフト/還元"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:499
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d 還元/還元"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:504
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s には、"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:590 src/conflicts.c:711
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:602 src/print.c:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,17 +110,17 @@ msgstr ""
|
||||
" $default\t規則 %d を利用して還元 (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:691 src/conflicts.c:705
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:732
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#: src/derives.c:44
|
||||
#, fuzzy
|
||||
msgid "DERIVES"
|
||||
msgstr ""
|
||||
@@ -130,17 +130,17 @@ msgstr ""
|
||||
"DERIVES\n"
|
||||
"\n"
|
||||
|
||||
#: src/derives.c:48
|
||||
#: src/derives.c:49
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s は以下から派生"
|
||||
|
||||
#: src/files.c:136
|
||||
#: src/files.c:130
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/files.c:155
|
||||
#: src/files.c:149
|
||||
msgid "cannot close file"
|
||||
msgstr ""
|
||||
|
||||
@@ -188,154 +188,152 @@ msgid ""
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:126
|
||||
#: src/getargs.c:124
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#: src/getargs.c:138
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:145
|
||||
#: src/getargs.c:143
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:149
|
||||
#: src/getargs.c:147
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#: src/getargs.c:208 src/lex.c:635
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:238
|
||||
#: src/getargs.c:232
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:245
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: 文法ファイルが指定されていません\n"
|
||||
|
||||
#: src/getargs.c:249
|
||||
#: src/getargs.c:243
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:312
|
||||
#, fuzzy, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "%s の数が多すぎます (最大 %d)"
|
||||
|
||||
#: src/lex.c:78
|
||||
#: src/lex.c:70
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "予期しない `/' が見つかり、無視されました"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
#: src/lex.c:99 src/reader.c:270
|
||||
msgid "unterminated comment"
|
||||
msgstr "閉じていないコメントです"
|
||||
|
||||
#: src/lex.c:139
|
||||
#: src/lex.c:131
|
||||
#, fuzzy
|
||||
msgid "unexpected end of file"
|
||||
msgstr "予期しないファイルの終端です"
|
||||
|
||||
#: src/lex.c:168
|
||||
#: src/lex.c:160
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "定数の中にエスケープされていない改行があります"
|
||||
|
||||
#: src/lex.c:210
|
||||
#: src/lex.c:202
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "8 進数の値が 0...255 の範囲外です: `\\%o'"
|
||||
|
||||
#: src/lex.c:235
|
||||
#: src/lex.c:227
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "16 進数の値が 255 を越えています: `\\x%x'"
|
||||
|
||||
#: src/lex.c:247
|
||||
#: src/lex.c:239
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "未知のエスケープシーケンス: `\\' の後に `%s'"
|
||||
|
||||
#: src/lex.c:343
|
||||
#: src/lex.c:335
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "閉じられていないタイプ名が、ファイル末尾にあります"
|
||||
|
||||
#: src/lex.c:346
|
||||
#: src/lex.c:338
|
||||
msgid "unterminated type name"
|
||||
msgstr "閉じられていないタイプ名があります"
|
||||
|
||||
#: src/lex.c:437
|
||||
#: src/lex.c:430
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
|
||||
|
||||
#: src/main.c:124
|
||||
#: src/main.c:108
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: 内部エラー: %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
#: src/nullable.c:52
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "set_nullable に入ります"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:993
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "最大テーブルサイズ (%s) を超えました"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " タイプ %d は %s です\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:86
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (規則 %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:112
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\taccept\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:114
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " 動作無し\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:133
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \t状態 %d へ\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:136
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tシフト、および状態 %d へ\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:160
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tエラー (非結合)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:190
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\t状態 %d へ\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:202
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -344,25 +342,23 @@ msgstr ""
|
||||
"状態 %d\n"
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:233
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"文法\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:240
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "規則 %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
#: src/print.c:246
|
||||
msgid "\t\t/* empty */"
|
||||
msgstr "\t\t/* 空 */"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:253
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -370,7 +366,7 @@ msgstr ""
|
||||
"終端トークン、およびそこに現れた規則\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:302
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -378,11 +374,11 @@ msgstr ""
|
||||
"非終端トークン、およびそこに現れた規則\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:329
|
||||
msgid " on left:"
|
||||
msgstr " 左辺:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:344
|
||||
msgid " on right:"
|
||||
msgstr " 右辺:"
|
||||
|
||||
@@ -396,116 +392,116 @@ msgstr " %-4s\t
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||
|
||||
#: src/reader.c:78
|
||||
#: src/reader.c:79
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " 次の \\n にスキップ"
|
||||
|
||||
#: src/reader.c:80
|
||||
#: src/reader.c:81
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " 次の %c にスキップ"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
#: src/reader.c:132 src/reader.c:144
|
||||
msgid "invalid $ value"
|
||||
msgstr "無効な $ の値"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
#: src/reader.c:170 src/reader.c:185
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "閉じられていない文字列がファイル末尾にあります"
|
||||
|
||||
#: src/reader.c:172
|
||||
#: src/reader.c:173
|
||||
msgid "unterminated string"
|
||||
msgstr "閉じられていない文字列"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#: src/reader.c:326 src/reader.c:390
|
||||
#, fuzzy, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "@%s は無効です"
|
||||
|
||||
#: src/reader.c:365
|
||||
#: src/reader.c:366
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "`%s' の $$ に宣言のない型があります"
|
||||
|
||||
#: src/reader.c:382
|
||||
#: src/reader.c:383
|
||||
#, fuzzy, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "`%s' の $%s に宣言のない型があります"
|
||||
|
||||
#: src/reader.c:436
|
||||
#: src/reader.c:437
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "`%{' 定義 が閉じられていません"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:498
|
||||
#: src/reader.c:499
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:501
|
||||
#: src/reader.c:502
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#: src/reader.c:524 src/reader.c:667
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "シンボル %s が再定義されました"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "%s の型が再定義されました"
|
||||
|
||||
#: src/reader.c:541
|
||||
#: src/reader.c:544
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "%2$s 内の `%1$s' は無効です"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#: src/reader.c:561 src/reader.c:721
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "複数の %start が宣言されました"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#: src/reader.c:563 src/reader.c:1246
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "無効な %start が宣言されました"
|
||||
|
||||
#: src/reader.c:580
|
||||
#: src/reader.c:583
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "%type 宣言に <タイプ名> がありません"
|
||||
|
||||
#: src/reader.c:615
|
||||
#: src/reader.c:618
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "アイテムに与えられるべき %%type 宣言が無効です: `%s'"
|
||||
|
||||
#: src/reader.c:660
|
||||
#: src/reader.c:663
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "%s に先行した再定義です"
|
||||
|
||||
#: src/reader.c:683
|
||||
#: src/reader.c:687
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "無効なテキスト (%s) - 数値は識別子の後ろにあるべきです"
|
||||
|
||||
#: src/reader.c:693
|
||||
#: src/reader.c:697
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "予期せぬアイテム: %s"
|
||||
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
|
||||
#, fuzzy, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "対応のない `{' です"
|
||||
|
||||
#: src/reader.c:792
|
||||
#: src/reader.c:791
|
||||
#, fuzzy, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "%expect の引数が整数値ではありません"
|
||||
@@ -520,114 +516,124 @@ msgstr "ǧ
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "ここでは %s ではなく文字列定数が期待されます"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#: src/reader.c:887
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%header_extension declarations"
|
||||
msgstr "複数の %union 宣言です"
|
||||
|
||||
#: src/reader.c:902
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%source_extension declarations"
|
||||
msgstr "複数の %union 宣言です"
|
||||
|
||||
#: src/reader.c:988
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "認識できない: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
#: src/reader.c:993
|
||||
msgid "no input grammar"
|
||||
msgstr "文法の入力が無い"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#: src/reader.c:998
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "未知の文字: %s"
|
||||
|
||||
#: src/reader.c:1183
|
||||
#: src/reader.c:1166
|
||||
#, fuzzy, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "閉じられていない %%guard 節です"
|
||||
|
||||
#: src/reader.c:1350
|
||||
#: src/reader.c:1333
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
|
||||
|
||||
#: src/reader.c:1357
|
||||
#: src/reader.c:1340
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "文法は縦棒 (|) で始めます"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#: src/reader.c:1371
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "%s に規則が与えられ、それはトークンとなります"
|
||||
|
||||
#: src/reader.c:1490
|
||||
#: src/reader.c:1473
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "@prec のもの二つが同列になっています"
|
||||
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
#: src/reader.c:1481
|
||||
#, fuzzy, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard がありますが %%semantic_parser が指定されていません"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1490
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "一つの規則の終りに二つの動作を指定しています"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#: src/reader.c:1504
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
|
||||
|
||||
#: src/reader.c:1527
|
||||
#: src/reader.c:1510
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#: src/reader.c:1554
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "無効な入力: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#: src/reader.c:1562
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
|
||||
|
||||
#: src/reader.c:1582
|
||||
#: src/reader.c:1565
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "入力した文法に規則が定義されていません"
|
||||
|
||||
#: src/reader.c:1606
|
||||
#: src/reader.c:1589
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
|
||||
"せん"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#: src/reader.c:1694
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "先行している %s と %s で競合が生じています"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#: src/reader.c:1706
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "非結合値 %s と %s で競合が生じています"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#: src/reader.c:1757
|
||||
#, fuzzy, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
|
||||
|
||||
#: src/reader.c:1782
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "開始シンボル %s は定義されていません"
|
||||
|
||||
#: src/reader.c:1784
|
||||
#: src/reader.c:1772
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "開始シンボル %s はトークンです"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:404
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"不使用非終端子:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:419
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -636,7 +642,7 @@ msgstr ""
|
||||
"利用されない終端子:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:430
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -645,7 +651,7 @@ msgstr ""
|
||||
"不使用規則:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:459
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -655,11 +661,11 @@ msgstr ""
|
||||
"---------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:461
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "値 前置 結合 タグ\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:466
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -669,7 +675,7 @@ msgstr ""
|
||||
"-----\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:477
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -679,36 +685,36 @@ msgstr ""
|
||||
"-----------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#: src/reduce.c:494
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d 個の規則は決して還元されません\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#: src/reduce.c:496
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s には"
|
||||
|
||||
#: src/reduce.c:497
|
||||
#: src/reduce.c:500
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d 個の不使用非終端子%.0s"
|
||||
|
||||
#: src/reduce.c:502
|
||||
#: src/reduce.c:505
|
||||
msgid " and "
|
||||
msgstr "および"
|
||||
|
||||
#: src/reduce.c:506
|
||||
#: src/reduce.c:509
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d 個の不使用規則%.0s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:542
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "開始シンボル %s はどの文にも由来しません"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#: src/reduce.c:555
|
||||
#, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
@@ -716,6 +722,50 @@ msgstr ""
|
||||
"還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0sが"
|
||||
"定義されました\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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -804,6 +854,13 @@ msgstr ""
|
||||
msgid "'"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Memory exhausted"
|
||||
#~ msgstr "%s: メモリを使い果たしました\n"
|
||||
|
||||
#~ msgid "$%s is invalid"
|
||||
#~ msgstr "$%s は無効です"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
@@ -881,15 +938,9 @@ msgstr ""
|
||||
#~ msgid "%s:%d: "
|
||||
#~ msgstr "%s:%d: "
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* 空 */"
|
||||
|
||||
#~ msgid "unterminated comment in `%{' definition"
|
||||
#~ msgstr "`%{' 定義 に閉じられていないコメントがあります"
|
||||
|
||||
#~ msgid "multiple %union declarations"
|
||||
#~ msgstr "複数の %union 宣言です"
|
||||
|
||||
#~ msgid "unterminated comment at end of file"
|
||||
#~ msgstr "ファイル末尾に閉じられていないコメントがあります"
|
||||
|
||||
@@ -899,9 +950,6 @@ msgstr ""
|
||||
#~ msgid "unmatched right brace (`}')"
|
||||
#~ msgstr "対応のない右ブレース (`}') です"
|
||||
|
||||
#~ msgid "$%s is invalid"
|
||||
#~ msgstr "$%s は無効です"
|
||||
|
||||
#~ msgid "invalid @-construct"
|
||||
#~ msgstr "無効な @-コンストラクトです"
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.25\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
||||
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
|
||||
"Last-Translator: Erick Branderhorst <[email protected]>\n"
|
||||
"Language-Team: Dutch <[email protected]>\n"
|
||||
@@ -18,90 +18,90 @@ msgstr ""
|
||||
msgid "too many states (max %d)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
#: lib/error.c:117 src/complain.c:100
|
||||
msgid "Unknown system error"
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:150
|
||||
#: src/complain.c:154
|
||||
msgid "warning: "
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
#: src/complain.c:242 src/complain.c:283
|
||||
#, fuzzy
|
||||
msgid "fatal error: "
|
||||
msgstr "fatale fout: %s\n"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:49
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:115 src/conflicts.c:138
|
||||
msgid "reduce"
|
||||
msgstr "reduceer"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:121 src/conflicts.c:134
|
||||
msgid "shift"
|
||||
msgstr "verschuif"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:142
|
||||
msgid "an error"
|
||||
msgstr "een fout"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
#: src/conflicts.c:422
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 verschuif/reduceer conflict"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#: src/conflicts.c:427
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d verschuif/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
#: src/conflicts.c:433
|
||||
msgid " and"
|
||||
msgstr " en"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
#: src/conflicts.c:439
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 reduceer/reduceer conflict"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#: src/conflicts.c:444
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d reduceer/reduceer conflicten"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#: src/conflicts.c:481
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "Stadium %d bevat"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:493
|
||||
msgid "conflicts: "
|
||||
msgstr "conflictueerd: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:495
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d vershuif/reduceer"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:499
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d reduceer/reduceer"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:504
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s bevat"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:590 src/conflicts.c:711
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:602 src/print.c:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,17 +110,17 @@ msgstr ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:691 src/conflicts.c:705
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:732
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/derives.c:43
|
||||
#: src/derives.c:44
|
||||
#, fuzzy
|
||||
msgid "DERIVES"
|
||||
msgstr ""
|
||||
@@ -130,17 +130,17 @@ msgstr ""
|
||||
"AFGELEIDEN\n"
|
||||
"\n"
|
||||
|
||||
#: src/derives.c:48
|
||||
#: src/derives.c:49
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s afgeleiden"
|
||||
|
||||
#: src/files.c:136
|
||||
#: src/files.c:130
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/files.c:155
|
||||
#: src/files.c:149
|
||||
msgid "cannot close file"
|
||||
msgstr ""
|
||||
|
||||
@@ -188,154 +188,152 @@ msgid ""
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:126
|
||||
#: src/getargs.c:124
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#: src/getargs.c:138
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:145
|
||||
#: src/getargs.c:143
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:149
|
||||
#: src/getargs.c:147
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#: src/getargs.c:208 src/lex.c:635
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:238
|
||||
#: src/getargs.c:232
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:245
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: geen grammatica bestand gegeven\n"
|
||||
|
||||
#: src/getargs.c:249
|
||||
#: src/getargs.c:243
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: extra argumenten genegeerd na '%s'\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:312
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr ""
|
||||
|
||||
#: src/lex.c:78
|
||||
#: src/lex.c:70
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "onverwachte `/' gevonden en genegeerd"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
#: src/lex.c:99 src/reader.c:270
|
||||
msgid "unterminated comment"
|
||||
msgstr "ongetermineerd commentaar"
|
||||
|
||||
#: src/lex.c:139
|
||||
#: src/lex.c:131
|
||||
#, fuzzy
|
||||
msgid "unexpected end of file"
|
||||
msgstr "Onverwacht bestandseinde"
|
||||
|
||||
#: src/lex.c:168
|
||||
#: src/lex.c:160
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "niet geescapete nieuwe regel in constante"
|
||||
|
||||
#: src/lex.c:210
|
||||
#: src/lex.c:202
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "octale waarde buiten domein 0...255: `\\%o'"
|
||||
|
||||
#: src/lex.c:235
|
||||
#: src/lex.c:227
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "hexadecimale waarde boven 255: `\\x%x'"
|
||||
|
||||
#: src/lex.c:247
|
||||
#: src/lex.c:239
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "onbekende escape reeks: `\\' gevolgd door `%s'"
|
||||
|
||||
#: src/lex.c:343
|
||||
#: src/lex.c:335
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "niet getermineerd type naam aan het einde van bestand"
|
||||
|
||||
#: src/lex.c:346
|
||||
#: src/lex.c:338
|
||||
msgid "unterminated type name"
|
||||
msgstr "niet getermineerd type naam"
|
||||
|
||||
#: src/lex.c:437
|
||||
#: src/lex.c:430
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
|
||||
|
||||
#: src/main.c:124
|
||||
#: src/main.c:108
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "interne fout, %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
#: src/nullable.c:52
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "Inkomende set nullable"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:993
|
||||
#, fuzzy, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "maximale tabel grootte (%s) overschreden"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:86
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (regel %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:112
|
||||
msgid " $default\taccept\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:114
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " GEEN AKTIES\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:133
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:136
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:160
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:190
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/print.c:199
|
||||
#: src/print.c:202
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr ""
|
||||
@@ -344,25 +342,23 @@ msgstr ""
|
||||
"stadium %d\n"
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:233
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Grammatica\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:240
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "regel %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
#: src/print.c:246
|
||||
msgid "\t\t/* empty */"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:253
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -370,7 +366,7 @@ msgstr ""
|
||||
"Terminals, met regels waar ze voorkomen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:302
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr ""
|
||||
@@ -378,11 +374,11 @@ msgstr ""
|
||||
"Geen terminals, met regels waar ze voorkomen\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:329
|
||||
msgid " on left:"
|
||||
msgstr " links:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:344
|
||||
msgid " on right:"
|
||||
msgstr " rechts:"
|
||||
|
||||
@@ -398,116 +394,116 @@ msgstr ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/reader.c:78
|
||||
#: src/reader.c:79
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " Verder naar volgende \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#: src/reader.c:81
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " Verder naar volgende %c"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
#: src/reader.c:132 src/reader.c:144
|
||||
msgid "invalid $ value"
|
||||
msgstr "onjuiste $ waarde"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
#: src/reader.c:170 src/reader.c:185
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "niet getermineerde string aan einde van bestand"
|
||||
|
||||
#: src/reader.c:172
|
||||
#: src/reader.c:173
|
||||
msgid "unterminated string"
|
||||
msgstr "niet getermineerde string"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#: src/reader.c:326 src/reader.c:390
|
||||
#, fuzzy, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "@%s is onjuist"
|
||||
|
||||
#: src/reader.c:365
|
||||
#: src/reader.c:366
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "$$ van `%s' heeft geen gedeclareerd type"
|
||||
|
||||
#: src/reader.c:382
|
||||
#: src/reader.c:383
|
||||
#, fuzzy, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "$%s van `%s' heeft geen gedeclareerd type"
|
||||
|
||||
#: src/reader.c:436
|
||||
#: src/reader.c:437
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "niet getermineerde `%{' definitie"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:498
|
||||
#: src/reader.c:499
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:501
|
||||
#: src/reader.c:502
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#: src/reader.c:524 src/reader.c:667
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "symbool %s opnieuw gedefinieerd"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "type herdeclaratie voor %s"
|
||||
|
||||
#: src/reader.c:541
|
||||
#: src/reader.c:544
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "`%s' is onjuist in %s"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#: src/reader.c:561 src/reader.c:721
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "meerdere %start declaraties"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#: src/reader.c:563 src/reader.c:1246
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "onjuiste %start declaratie"
|
||||
|
||||
#: src/reader.c:580
|
||||
#: src/reader.c:583
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "%type declaratie heeft geen <typenaam>"
|
||||
|
||||
#: src/reader.c:615
|
||||
#: src/reader.c:618
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "onjuist %%type declaratie door item: `%s'"
|
||||
|
||||
#: src/reader.c:660
|
||||
#: src/reader.c:663
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "herdefinieren voorganger van %s"
|
||||
|
||||
#: src/reader.c:683
|
||||
#: src/reader.c:687
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
|
||||
|
||||
#: src/reader.c:693
|
||||
#: src/reader.c:697
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "onbekend item: %s"
|
||||
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
|
||||
#, fuzzy, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "niet overeenkomstige `{'"
|
||||
|
||||
#: src/reader.c:792
|
||||
#: src/reader.c:791
|
||||
#, fuzzy, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "argument van %expect is niet een integer"
|
||||
@@ -522,115 +518,125 @@ msgstr "onbekend item %s, verwacht een identifier"
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "verwacht string constante in plaats van %s"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#: src/reader.c:887
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%header_extension declarations"
|
||||
msgstr "meerdere %union declaraties"
|
||||
|
||||
#: src/reader.c:902
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%source_extension declarations"
|
||||
msgstr "meerdere %union declaraties"
|
||||
|
||||
#: src/reader.c:988
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "onbekend: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
#: src/reader.c:993
|
||||
msgid "no input grammar"
|
||||
msgstr "geen invoer grammatica"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#: src/reader.c:998
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "onbekend karakter: %s"
|
||||
|
||||
#: src/reader.c:1183
|
||||
#: src/reader.c:1166
|
||||
#, fuzzy, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "niet getermineerde %%guard voorwaarde"
|
||||
|
||||
#: src/reader.c:1350
|
||||
#: src/reader.c:1333
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr ""
|
||||
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
|
||||
|
||||
#: src/reader.c:1357
|
||||
#: src/reader.c:1340
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "grammatica start met een verticale bar"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#: src/reader.c:1371
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "regel geven voor %s, welke een teken is"
|
||||
|
||||
#: src/reader.c:1490
|
||||
#: src/reader.c:1473
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "twee @prec's in een regel"
|
||||
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
#: src/reader.c:1481
|
||||
#, fuzzy, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1490
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "twee akties aan het einde van een regel"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#: src/reader.c:1504
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "type clash (`%s' `%s') bij standaard aktie"
|
||||
|
||||
#: src/reader.c:1527
|
||||
#: src/reader.c:1510
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "lege regel voor getypte niet terminal, en geen aktie"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#: src/reader.c:1554
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ongeldige invoer: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#: src/reader.c:1562
|
||||
#, fuzzy, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
|
||||
|
||||
#: src/reader.c:1582
|
||||
#: src/reader.c:1565
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "geen regels voor invoer grammatica"
|
||||
|
||||
#: src/reader.c:1606
|
||||
#: src/reader.c:1589
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
|
||||
"heeft geen regels"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#: src/reader.c:1694
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "conflictuerende precedentein voor %s en %s"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#: src/reader.c:1706
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "conflictuerende associatieve waarden voor %s en %s"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#: src/reader.c:1757
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:1782
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:1784
|
||||
#: src/reader.c:1772
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "het start symbool %s is een token"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:404
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr ""
|
||||
"Onbruikbare niet terminals:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:419
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr ""
|
||||
@@ -639,7 +645,7 @@ msgstr ""
|
||||
"Terminals welke niet worden gebruikt:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:430
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr ""
|
||||
@@ -648,7 +654,7 @@ msgstr ""
|
||||
"Onbruikbare regels:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:459
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -658,11 +664,11 @@ msgstr ""
|
||||
"----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:461
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Waarde Sprec Sassoc Tag\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:466
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -672,7 +678,7 @@ msgstr ""
|
||||
"------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:477
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -682,36 +688,36 @@ msgstr ""
|
||||
"-----------------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#: src/reduce.c:494
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d regels nooit gereduceerd\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#: src/reduce.c:496
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s bevat"
|
||||
|
||||
#: src/reduce.c:497
|
||||
#: src/reduce.c:500
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d onbruikbare niet terminal%s"
|
||||
|
||||
#: src/reduce.c:502
|
||||
#: src/reduce.c:505
|
||||
msgid " and "
|
||||
msgstr " en "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#: src/reduce.c:509
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d onbruikbare regels%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:542
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Start symbool %s is niet afkomstig uit een zin"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#: src/reduce.c:555
|
||||
#, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
@@ -719,6 +725,50 @@ msgstr ""
|
||||
"gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d productie"
|
||||
"%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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -807,6 +857,28 @@ msgstr ""
|
||||
msgid "'"
|
||||
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 ""
|
||||
#~ "\n"
|
||||
#~ "\n"
|
||||
@@ -853,6 +925,7 @@ msgstr ""
|
||||
#~ "%s afgeleiden\n"
|
||||
#~ "\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -860,6 +933,8 @@ msgstr ""
|
||||
#~ " [--no-parser] [--token-table]\n"
|
||||
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||
#~ " [--output=outfile] grammar-file\n"
|
||||
#~ "\n"
|
||||
#~ "Report bugs to [email protected]\n"
|
||||
#~ msgstr ""
|
||||
#~ "Gebruik: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||
@@ -868,8 +943,15 @@ msgstr ""
|
||||
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||
#~ " [--output=outfile] grammar-bestand\n"
|
||||
|
||||
#~ msgid "gotos"
|
||||
#~ msgstr "ganaar"
|
||||
#, fuzzy
|
||||
#~ msgid "%s:%d: fatal error: "
|
||||
#~ 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"
|
||||
#~ msgstr "\"%s\", regel %d: %s\n"
|
||||
@@ -882,27 +964,3 @@ msgstr ""
|
||||
|
||||
#~ msgid "limit of %d exceeded, too many %s"
|
||||
#~ msgstr "limiet van %d overschreden, te veel %s"
|
||||
|
||||
#~ msgid "unterminated comment in `%{' definition"
|
||||
#~ msgstr "niet getermineerd commentaar in `%{' definitie"
|
||||
|
||||
#~ msgid "multiple %union declarations"
|
||||
#~ msgstr "meerdere %union declaraties"
|
||||
|
||||
#~ msgid "unterminated comment at end of file"
|
||||
#~ msgstr "niet getermineerd commentaar aan einde van bestand"
|
||||
|
||||
#~ msgid "unmatched close-brace (`}')"
|
||||
#~ msgstr "niet overeenkomstige afsluit-haakje (`}')"
|
||||
|
||||
#~ msgid "unmatched right brace (`}')"
|
||||
#~ msgstr "niet overeenkomstig rechter haakje (`}')"
|
||||
|
||||
#~ msgid "$%s is invalid"
|
||||
#~ msgstr "$%s is onjuist"
|
||||
|
||||
#~ msgid "invalid @-construct"
|
||||
#~ msgstr "ongeldige @-constructie"
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ msgstr "slecht geformuleerde %type declaratie"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison.
|
||||
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
# Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001.
|
||||
# Dmitry S. Sivachenko <[email protected]>, 1999,2000.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.29\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"PO-Revision-Date: 2001-09-09 13:49+04:00\n"
|
||||
"Project-Id-Version: bison 1.28a\n"
|
||||
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
|
||||
"PO-Revision-Date: 2000-04-12 13:16+04:00\n"
|
||||
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
|
||||
"Language-Team: Russian <[email protected]>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,90 +18,91 @@ msgstr ""
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
#: lib/error.c:117 src/complain.c:100
|
||||
msgid "Unknown system error"
|
||||
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:150
|
||||
#: src/complain.c:154
|
||||
msgid "warning: "
|
||||
msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
|
||||
msgstr ""
|
||||
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
#: src/complain.c:242 src/complain.c:283
|
||||
#, fuzzy
|
||||
msgid "fatal error: "
|
||||
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
|
||||
msgstr "ÏÛÉÂËÁ"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#: src/conflicts.c:49
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
#: src/conflicts.c:115 src/conflicts.c:138
|
||||
msgid "reduce"
|
||||
msgstr "×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
#: src/conflicts.c:121 src/conflicts.c:134
|
||||
msgid "shift"
|
||||
msgstr "ÓÄ×ÉÇ"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
#: src/conflicts.c:142
|
||||
msgid "an error"
|
||||
msgstr "ÏÛÉÂËÁ"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
#: src/conflicts.c:422
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#: src/conflicts.c:427
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
#: src/conflicts.c:433
|
||||
msgid " and"
|
||||
msgstr " É"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
#: src/conflicts.c:439
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#: src/conflicts.c:444
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#: src/conflicts.c:481
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
#: src/conflicts.c:493
|
||||
msgid "conflicts: "
|
||||
msgstr "ËÏÎÆÌÉËÔÙ: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#: src/conflicts.c:495
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#: src/conflicts.c:499
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#: src/conflicts.c:504
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s ÓÏÄÅÒÖÉÔ"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#: src/conflicts.c:590 src/conflicts.c:711
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#: src/conflicts.c:602 src/print.c:173
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
@@ -110,33 +111,39 @@ msgstr ""
|
||||
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#: src/conflicts.c:691 src/conflicts.c:705
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#: src/conflicts.c:732
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
#: src/derives.c:44
|
||||
#, fuzzy
|
||||
msgid "DERIVES"
|
||||
msgstr "DERIVES"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"DERIVES\n"
|
||||
"\n"
|
||||
|
||||
#: src/derives.c:48
|
||||
#: src/derives.c:49
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s ×Ù×ÏÄÉÔ"
|
||||
|
||||
#: src/files.c:136
|
||||
#: src/files.c:130
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
|
||||
msgstr ""
|
||||
|
||||
#: src/files.c:155
|
||||
#: src/files.c:149
|
||||
msgid "cannot close file"
|
||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
|
||||
msgstr ""
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
@@ -171,6 +178,7 @@ msgstr ""
|
||||
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
|
||||
|
||||
#: src/getargs.c:104
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Parser:\n"
|
||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||
@@ -182,12 +190,11 @@ msgid ""
|
||||
" -k, --token-table include a table of token names\n"
|
||||
msgstr ""
|
||||
"áÎÁÌÉÚÁÔÏÒ:\n"
|
||||
" -S, --skeleton=æáêì ÕËÁÚÁÔØ ÆÁÊÌ ÛÁÂÌÏÎÁ\n"
|
||||
" -t, --debug ÎÁÓÔÒÏÉÔØ ÁÎÁÌÉÚÁÔÏÒ ÄÌÑ ÏÔÌÁÄËÉ\n"
|
||||
" --locations ×ËÌÀÞÉÔØ ×ÙÞÉÓÌÅÎÉÅ ÍÅÓÔÏÐÏÌÏÖÅÎÉÊ\n"
|
||||
" -p, --name-prefix=ðòåæéëó ÐÏÄÓÔÁ×ÉÔØ ðòåæéëó ÄÌÑ ×ÎÅÛÎÉÈ ÓÉÍ×ÏÌÏ×\n"
|
||||
" -l, --no-lines ÎÅ ÇÅÎÅÒÉÒÏ×ÁÔØ ÄÉÒÅËÔÉ×Ù `#line'\n"
|
||||
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
|
||||
" -r, --raw ÎÕÍÅÒÏ×ÁÔØ ÌÅËÓÅÍÙ, ÎÁÞÉÎÁÑ Ó 3\n"
|
||||
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
|
||||
|
||||
#: src/getargs.c:116
|
||||
@@ -197,324 +204,327 @@ msgid ""
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
"÷Ù×ÏÄ:\n"
|
||||
" -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n"
|
||||
" -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n"
|
||||
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
|
||||
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
|
||||
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
|
||||
"VCG-ÇÒÁÆÁ\n"
|
||||
|
||||
#: src/getargs.c:126
|
||||
#: src/getargs.c:124
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <[email protected]>.\n"
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#: src/getargs.c:138
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr "bison (GNU Bison) %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:145
|
||||
#: src/getargs.c:143
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
|
||||
#: src/getargs.c:149
|
||||
#: src/getargs.c:147
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÕÓÌÏ×ÉÑ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ × ÉÓÈÏÄÎÙÈ "
|
||||
"ÔÅËÓÔÁÈ.\n"
|
||||
"îéëáëéè ÇÁÒÁÎÔÉÊ ÎÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ, ÄÁÖÅ ÇÁÒÁÎÔÉÉ ðïìåúîïóôé ÉÌÉ "
|
||||
"ðòéçïäîïóôé\n"
|
||||
"äìñ ïðòåäåìåîîïê ãåìé.\n"
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#: src/getargs.c:208 src/lex.c:635
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:238
|
||||
#: src/getargs.c:232
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/getargs.c:245
|
||||
#: src/getargs.c:239
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
|
||||
|
||||
#: src/getargs.c:249
|
||||
#: src/getargs.c:243
|
||||
#, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#: src/lalr.c:312
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||
|
||||
#: src/lex.c:78
|
||||
#: src/lex.c:70
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
#: src/lex.c:99 src/reader.c:270
|
||||
msgid "unterminated comment"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
|
||||
|
||||
#: src/lex.c:139
|
||||
#: src/lex.c:131
|
||||
msgid "unexpected end of file"
|
||||
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ"
|
||||
|
||||
#: src/lex.c:168
|
||||
#: src/lex.c:160
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
|
||||
|
||||
#: src/lex.c:210
|
||||
#: src/lex.c:202
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
|
||||
|
||||
#: src/lex.c:235
|
||||
#: src/lex.c:227
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
|
||||
|
||||
#: src/lex.c:247
|
||||
#: src/lex.c:239
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
|
||||
|
||||
#: src/lex.c:343
|
||||
#: src/lex.c:335
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
||||
|
||||
#: src/lex.c:346
|
||||
#: src/lex.c:338
|
||||
msgid "unterminated type name"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
|
||||
|
||||
#: src/lex.c:437
|
||||
#: src/lex.c:430
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
|
||||
|
||||
#: src/main.c:124
|
||||
#: src/main.c:108
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
#: src/nullable.c:52
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "÷ÈÏÄ × set_nullable"
|
||||
|
||||
#: src/output.c:986
|
||||
#: src/output.c:993
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
|
||||
|
||||
#: src/print.c:37
|
||||
#: src/print.c:38
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#: src/print.c:86
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (ÐÒÁ×ÉÌÏ %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
#: src/print.c:112
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
|
||||
|
||||
#: src/print.c:113
|
||||
#: src/print.c:114
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " îåô äåêóô÷éê\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#: src/print.c:133
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#: src/print.c:136
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#: src/print.c:160
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#: src/print.c:190
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#, c-format
|
||||
#: src/print.c:202
|
||||
#, fuzzy, c-format
|
||||
msgid "state %d"
|
||||
msgstr "ÓÏÓÔÏÑÎÉÅ %d"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||
"\n"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
#: src/print.c:233
|
||||
#, fuzzy
|
||||
msgid "Grammar"
|
||||
msgstr "çÒÁÍÍÁÔÉËÁ"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"çÒÁÍÍÁÔÉËÁ\n"
|
||||
|
||||
#: src/print.c:234
|
||||
#: src/print.c:240
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
#: src/print.c:246
|
||||
msgid "\t\t/* empty */"
|
||||
msgstr "\t\t/* ÐÕÓÔÏ */"
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
#: src/print.c:253
|
||||
#, fuzzy
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:268
|
||||
#: src/print.c:302
|
||||
#, fuzzy
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
|
||||
"\n"
|
||||
|
||||
#: src/print.c:294
|
||||
#: src/print.c:329
|
||||
msgid " on left:"
|
||||
msgstr " ÎÁÌÅ×Ï:"
|
||||
|
||||
#: src/print.c:309
|
||||
#: src/print.c:344
|
||||
msgid " on right:"
|
||||
msgstr " ÎÁÐÒÁ×Ï:"
|
||||
|
||||
#: src/print_graph.c:174
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
|
||||
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
|
||||
|
||||
#: src/print_graph.c:187
|
||||
#, c-format
|
||||
#, fuzzy, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
|
||||
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
||||
|
||||
#: src/reader.c:78
|
||||
#: src/reader.c:79
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#: src/reader.c:81
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
#: src/reader.c:132 src/reader.c:144
|
||||
msgid "invalid $ value"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
#: src/reader.c:170 src/reader.c:185
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
||||
|
||||
#: src/reader.c:172
|
||||
#: src/reader.c:173
|
||||
msgid "unterminated string"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#, c-format
|
||||
#: src/reader.c:326 src/reader.c:390
|
||||
#, fuzzy, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
|
||||
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË $%s"
|
||||
|
||||
#: src/reader.c:365
|
||||
#: src/reader.c:366
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
||||
|
||||
#: src/reader.c:382
|
||||
#: src/reader.c:383
|
||||
#, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
||||
|
||||
#: src/reader.c:436
|
||||
#: src/reader.c:437
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#: src/reader.c:482 src/reader.c:598 src/reader.c:648
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s"
|
||||
|
||||
#: src/reader.c:498
|
||||
#: src/reader.c:499
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:501
|
||||
#: src/reader.c:502
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr ""
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#: src/reader.c:524 src/reader.c:667
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
||||
|
||||
#: src/reader.c:541
|
||||
#: src/reader.c:544
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#, c-format
|
||||
#: src/reader.c:561 src/reader.c:721
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#, c-format
|
||||
#: src/reader.c:563 src/reader.c:1246
|
||||
#, fuzzy, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
|
||||
|
||||
#: src/reader.c:580
|
||||
#: src/reader.c:583
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
|
||||
|
||||
#: src/reader.c:615
|
||||
#: src/reader.c:618
|
||||
#, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: %s"
|
||||
|
||||
#: src/reader.c:660
|
||||
#: src/reader.c:663
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
|
||||
|
||||
#: src/reader.c:683
|
||||
#: src/reader.c:687
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
|
||||
|
||||
#: src/reader.c:693
|
||||
#: src/reader.c:697
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
|
||||
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#, c-format
|
||||
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
|
||||
#, fuzzy, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "ÎÅÐÁÒÎÁÑ %s"
|
||||
msgstr "ÎÅÐÁÒÎÁÑ `{'"
|
||||
|
||||
#: src/reader.c:792
|
||||
#, c-format
|
||||
#: src/reader.c:791
|
||||
#, fuzzy, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
|
||||
msgstr "ÁÒÇÕÍÅÎÔ %expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
|
||||
|
||||
#: src/reader.c:838
|
||||
#, c-format
|
||||
@@ -526,118 +536,141 @@ msgstr "
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#: src/reader.c:887
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%header_extension declarations"
|
||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
||||
|
||||
#: src/reader.c:902
|
||||
#, fuzzy, c-format
|
||||
msgid "multiple %%source_extension declarations"
|
||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
|
||||
|
||||
#: src/reader.c:988
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
#: src/reader.c:993
|
||||
msgid "no input grammar"
|
||||
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#: src/reader.c:998
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
|
||||
|
||||
#: src/reader.c:1183
|
||||
#: src/reader.c:1166
|
||||
#, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
||||
|
||||
#: src/reader.c:1350
|
||||
#: src/reader.c:1333
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
|
||||
|
||||
#: src/reader.c:1357
|
||||
#: src/reader.c:1340
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#: src/reader.c:1371
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||
|
||||
#: src/reader.c:1490
|
||||
#: src/reader.c:1473
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
|
||||
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
#: src/reader.c:1481
|
||||
#, fuzzy, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
|
||||
msgstr "%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %semantic_parser ÎÅ ÚÁÄÁÎ"
|
||||
|
||||
#: src/reader.c:1507
|
||||
#: src/reader.c:1490
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#: src/reader.c:1504
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
|
||||
|
||||
#: src/reader.c:1527
|
||||
#: src/reader.c:1510
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr ""
|
||||
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#: src/reader.c:1554
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#: src/reader.c:1562
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
|
||||
|
||||
#: src/reader.c:1582
|
||||
#: src/reader.c:1565
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
||||
|
||||
#: src/reader.c:1606
|
||||
#: src/reader.c:1589
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#: src/reader.c:1694
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#: src/reader.c:1706
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#: src/reader.c:1757
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
|
||||
|
||||
#: src/reader.c:1782
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
|
||||
|
||||
#: src/reader.c:1784
|
||||
#: src/reader.c:1772
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||
|
||||
#: src/reduce.c:401
|
||||
#: src/reduce.c:404
|
||||
#, fuzzy
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
|
||||
msgstr ""
|
||||
"âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:416
|
||||
#: src/reduce.c:419
|
||||
#, fuzzy
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:427
|
||||
#: src/reduce.c:430
|
||||
#, fuzzy
|
||||
msgid "Useless rules:"
|
||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:456
|
||||
#: src/reduce.c:459
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
@@ -647,11 +680,11 @@ msgstr ""
|
||||
"----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
#: src/reduce.c:461
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "úÎÁÞ ðÒÉÏÒ áÓÓÏÃ ôÅÇ\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
#: src/reduce.c:466
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
@@ -661,7 +694,7 @@ msgstr ""
|
||||
"-------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
#: src/reduce.c:477
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
@@ -671,36 +704,36 @@ msgstr ""
|
||||
"--------------------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#: src/reduce.c:494
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#: src/reduce.c:496
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s ÓÏÄÅÒÖÉÔ "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#: src/reduce.c:500
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s"
|
||||
|
||||
#: src/reduce.c:502
|
||||
#: src/reduce.c:505
|
||||
msgid " and "
|
||||
msgstr " É "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#: src/reduce.c:509
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#: src/reduce.c:542
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#: src/reduce.c:555
|
||||
#, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
@@ -708,6 +741,50 @@ msgstr ""
|
||||
"×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
|
||||
"×Ù×ÏÄÁ%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
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
@@ -770,8 +847,9 @@ msgstr "%s:
|
||||
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||
#. before exiting when memory is exhausted. Goes through gettext.
|
||||
#: lib/obstack.c:477 lib/xmalloc.c:66
|
||||
#, fuzzy
|
||||
msgid "memory exhausted"
|
||||
msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
|
||||
msgstr "%s: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
|
||||
|
||||
#. Get translations for open and closing quotation marks.
|
||||
#.
|
||||
@@ -789,20 +867,23 @@ msgstr "
|
||||
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||
#: lib/quotearg.c:259
|
||||
msgid "`"
|
||||
msgstr "`"
|
||||
msgstr ""
|
||||
|
||||
#: lib/quotearg.c:260
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* ÐÕÓÔÏ */"
|
||||
#~ msgid "unterminated comment at end of file"
|
||||
#~ msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
|
||||
|
||||
#~ msgid "multiple %%header_extension declarations"
|
||||
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%header_extension"
|
||||
|
||||
#~ msgid "multiple %%source_extension declarations"
|
||||
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
|
||||
#~ msgid "unmatched close-brace (`}')"
|
||||
#~ msgstr "ÎÅÐÁÒÎÁÑ ÚÁËÒÙ×ÁÀÝÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
|
||||
|
||||
#~ msgid "@%s is invalid"
|
||||
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
|
||||
|
||||
#~ msgid "unmatched right brace (`}')"
|
||||
#~ msgstr "ÎÅÐÁÒÎÁÑ ÐÒÁ×ÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
|
||||
|
||||
#~ msgid "ill-formed %type declaration"
|
||||
#~ msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %type"
|
||||
|
||||
@@ -1,840 +0,0 @@
|
||||
# Turkish translations for GNU Bison messages.
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
# Altug Bayram <[email protected]>, 2001.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: bison 1.28c\n"
|
||||
"POT-Creation-Date: 2001-09-27 10:55+0200\n"
|
||||
"PO-Revision-Date: 2001-09-10 10:54GMT\n"
|
||||
"Last-Translator: Altug Bayram <[email protected]>\n"
|
||||
"Language-Team: Turkish <[email protected]>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-9\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 0.9.5\n"
|
||||
|
||||
#: src/LR0.c:207
|
||||
#, c-format
|
||||
msgid "too many states (max %d)"
|
||||
msgstr "çok fazla durum (en fazla %d)"
|
||||
|
||||
#: lib/error.c:117 src/complain.c:96
|
||||
msgid "Unknown system error"
|
||||
msgstr "Bilinmeyen sistem hatasý"
|
||||
|
||||
#: src/complain.c:150
|
||||
msgid "warning: "
|
||||
msgstr "uyarý: "
|
||||
|
||||
#: src/complain.c:238 src/complain.c:279
|
||||
msgid "fatal error: "
|
||||
msgstr "ölümcül hata:"
|
||||
|
||||
#: src/conflicts.c:48
|
||||
#, c-format
|
||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||
msgstr ""
|
||||
"%d durumu içinde %d kuralý ve %s andaçý arasýndaki çeliþki %s "
|
||||
"olarakçözümlendi.\n"
|
||||
|
||||
#: src/conflicts.c:114 src/conflicts.c:137
|
||||
msgid "reduce"
|
||||
msgstr "indirgeme"
|
||||
|
||||
#: src/conflicts.c:120 src/conflicts.c:133
|
||||
msgid "shift"
|
||||
msgstr "öteleme"
|
||||
|
||||
#: src/conflicts.c:141
|
||||
msgid "an error"
|
||||
msgstr "bir hata"
|
||||
|
||||
#: src/conflicts.c:421
|
||||
msgid " 1 shift/reduce conflict"
|
||||
msgstr " 1 öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:426
|
||||
#, c-format
|
||||
msgid " %d shift/reduce conflicts"
|
||||
msgstr " %d öteleme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:432
|
||||
msgid " and"
|
||||
msgstr " ve"
|
||||
|
||||
#: src/conflicts.c:438
|
||||
msgid " 1 reduce/reduce conflict"
|
||||
msgstr " 1 indirgeme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:443
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce conflicts"
|
||||
msgstr " %d indirgeme/indirgeme çeliþkisi"
|
||||
|
||||
#: src/conflicts.c:480
|
||||
#, c-format
|
||||
msgid "State %d contains"
|
||||
msgstr "%d durumu içerir"
|
||||
|
||||
#. If invoked with `--yacc', use the output format specified by
|
||||
#. POSIX.
|
||||
#: src/conflicts.c:491
|
||||
msgid "conflicts: "
|
||||
msgstr "çeliþkiler: "
|
||||
|
||||
#: src/conflicts.c:493
|
||||
#, c-format
|
||||
msgid " %d shift/reduce"
|
||||
msgstr " %d öteleme/indirgeme"
|
||||
|
||||
#: src/conflicts.c:497
|
||||
#, c-format
|
||||
msgid " %d reduce/reduce"
|
||||
msgstr " %d indirgeme/indirgeme"
|
||||
|
||||
#: src/conflicts.c:502
|
||||
#, c-format
|
||||
msgid "%s contains"
|
||||
msgstr "%s içerir"
|
||||
|
||||
#: src/conflicts.c:588 src/conflicts.c:709
|
||||
#, c-format
|
||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||
msgstr " %-4s\t[indirgeme kural %d (%s)'i kullanýyor]\n"
|
||||
|
||||
#: src/conflicts.c:600 src/print.c:171
|
||||
#, c-format
|
||||
msgid ""
|
||||
" $default\treduce using rule %d (%s)\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
" $default\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
"\n"
|
||||
|
||||
#: src/conflicts.c:689 src/conflicts.c:703
|
||||
#, c-format
|
||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||
msgstr " %-4s\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
|
||||
#: src/conflicts.c:730
|
||||
#, c-format
|
||||
msgid " $default\treduce using rule %d (%s)\n"
|
||||
msgstr " $default\tindirgeme kural %d (%s)'i kullanýyor\n"
|
||||
|
||||
#: src/derives.c:43
|
||||
msgid "DERIVES"
|
||||
msgstr "TÜRETÝLENLER"
|
||||
|
||||
#: src/derives.c:48
|
||||
#, c-format
|
||||
msgid "%s derives"
|
||||
msgstr "%s türetildi"
|
||||
|
||||
#: src/files.c:136
|
||||
#, c-format
|
||||
msgid "cannot open file `%s'"
|
||||
msgstr "`%s' dosyasý açýlamadý"
|
||||
|
||||
#: src/files.c:155
|
||||
msgid "cannot close file"
|
||||
msgstr "dosya kapatýlamýyor"
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:83
|
||||
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||
msgstr "GNU bison LALR(1) gramerler için ayrýþtýrýcýlar üretir.\n"
|
||||
|
||||
#: src/getargs.c:87
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTION]... FILE\n"
|
||||
msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n"
|
||||
|
||||
#: src/getargs.c:91
|
||||
msgid ""
|
||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||
msgstr ""
|
||||
"Eðer bir uzun seçenek bir argümaný gerektirirse, bu gereklilik, denk olan\n"
|
||||
"kýsa seçenek için de geçerlidir. Bu durum, seçimli argümanlar için de\n"
|
||||
"geçerlidir.\n"
|
||||
|
||||
#: src/getargs.c:97
|
||||
msgid ""
|
||||
"Operation modes:\n"
|
||||
" -h, --help display this help and exit\n"
|
||||
" -V, --version output version information and exit\n"
|
||||
" -y, --yacc emulate POSIX yacc\n"
|
||||
msgstr ""
|
||||
"Çalýþma kipleri:\n"
|
||||
" -h, --help bu yardýmý göster ve çýk\n"
|
||||
" -V, --version sürüm bilgisini ver ve çýk\n"
|
||||
" -y, --yacc POSIX yacc öykünmesi\n"
|
||||
|
||||
#: src/getargs.c:104
|
||||
msgid ""
|
||||
"Parser:\n"
|
||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||
" -t, --debug instrument the parser for debugging\n"
|
||||
" --locations enable locations computation\n"
|
||||
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||
" -l, --no-lines don't generate `#line' directives\n"
|
||||
" -n, --no-parser generate the tables only\n"
|
||||
" -k, --token-table include a table of token names\n"
|
||||
msgstr ""
|
||||
"Ayrýþtýrýcý:\n"
|
||||
" -S, --skeleton=DOSYA kullanýlacak iskeleti belirler\n"
|
||||
" -t, --debug ayrýþtýrýcý için hata ayýklayýcý aracý\n"
|
||||
" --locations konum hesaplamalarýný etkinleþtirir\n"
|
||||
" -p, --name-prefix=ÖNEK dýþ simgelere eklenen ÖNEK\n"
|
||||
" -l, --no-lines `#line' bildirimlerini üretmez\n"
|
||||
" -n, --no-parser sadece tablolarý üretir\n"
|
||||
" -k, --token-table andaç isimlerinin bir tablosunu içerir\n"
|
||||
|
||||
#: src/getargs.c:116
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Output:\n"
|
||||
" -d, --defines also produce a header file\n"
|
||||
" -v, --verbose also produce an explanation of the automaton\n"
|
||||
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||
" -o, --output-file=FILE leave output to FILE\n"
|
||||
" -g, --graph also produce a VCG graph description of the "
|
||||
"automaton\n"
|
||||
msgstr ""
|
||||
"Çýktý:\n"
|
||||
" -d, --defines bir baþlýk dosyasý da üretir\n"
|
||||
" -v, --verbose otomatýn bir açýklamasýný da üretir\n"
|
||||
" -b, --file-prefix=ÖNEK çýktý dosyalarý için bir ÖNEK belirtir\n"
|
||||
" -o, --output-file=DOSYA çýktýyý DOSYAYA býrakýr\n"
|
||||
|
||||
#: src/getargs.c:126
|
||||
msgid "Report bugs to <[email protected]>.\n"
|
||||
msgstr ""
|
||||
"Hatalarý <[email protected]>'a,\n"
|
||||
"çeviri hatalarýný <[email protected]>'e bildir.\n"
|
||||
|
||||
#. Some efforts were made to ease the translators' task, please
|
||||
#. continue.
|
||||
#: src/getargs.c:140
|
||||
#, c-format
|
||||
msgid "bison (GNU Bison) %s"
|
||||
msgstr "bison (GNU Bison) %s"
|
||||
|
||||
#: src/getargs.c:145
|
||||
msgid ""
|
||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||
msgstr ""
|
||||
"Telifhakký 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
|
||||
"Inc.\n"
|
||||
|
||||
#: src/getargs.c:149
|
||||
msgid ""
|
||||
"This is free software; see the source for copying conditions. There is NO\n"
|
||||
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||
msgstr ""
|
||||
"Bu bir serbest yazýlýmdýr; kopyalama koþullarý için kaynak koduna bakýnýz.\n"
|
||||
"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya HERHANGÝ BÝR AMACA\n"
|
||||
"UYGUNLUÐU için bile garanti verilmez.\n"
|
||||
|
||||
#: src/getargs.c:214 src/lex.c:639
|
||||
#, c-format
|
||||
msgid "`%s' is no longer supported"
|
||||
msgstr "`%s' artýk desteklenmiyor"
|
||||
|
||||
#: src/getargs.c:238
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
|
||||
|
||||
#: src/getargs.c:245
|
||||
#, c-format
|
||||
msgid "%s: no grammar file given\n"
|
||||
msgstr "%s: gramer dosyasý verilmemiþ\n"
|
||||
|
||||
#: src/getargs.c:249
|
||||
#, c-format
|
||||
msgid "%s: extra arguments ignored after `%s'\n"
|
||||
msgstr "%s: '%s' den sonraki argümanlar yoksayýldý\n"
|
||||
|
||||
#: src/lalr.c:311
|
||||
#, c-format
|
||||
msgid "too many gotos (max %d)"
|
||||
msgstr "gotos çok fazla (en fazla %d)"
|
||||
|
||||
#: src/lex.c:78
|
||||
msgid "unexpected `/' found and ignored"
|
||||
msgstr "beklenmeyen `/' bulundu ve yoksayýldý"
|
||||
|
||||
#: src/lex.c:107 src/reader.c:269
|
||||
msgid "unterminated comment"
|
||||
msgstr "sonlandýrýlmamýþ açýklama"
|
||||
|
||||
#: src/lex.c:139
|
||||
msgid "unexpected end of file"
|
||||
msgstr "beklenmeyen dosya sonu"
|
||||
|
||||
#: src/lex.c:168
|
||||
msgid "unescaped newline in constant"
|
||||
msgstr "sabit içinde kaçýþsýz yeni satýr"
|
||||
|
||||
#: src/lex.c:210
|
||||
#, c-format
|
||||
msgid "octal value outside range 0...255: `\\%o'"
|
||||
msgstr "sekizli deðer 0...255'in dýþýnda: `\\%o'"
|
||||
|
||||
#: src/lex.c:235
|
||||
#, c-format
|
||||
msgid "hexadecimal value above 255: `\\x%x'"
|
||||
msgstr "onaltýlýk deðer 255'in üstünde: `\\x%x'"
|
||||
|
||||
#: src/lex.c:247
|
||||
#, c-format
|
||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||
msgstr "bilinmeyen kaçýþ sýrasý: `\\' `%s' tarafýndan takip edildi"
|
||||
|
||||
#: src/lex.c:343
|
||||
msgid "unterminated type name at end of file"
|
||||
msgstr "dosya sonunda sonlandýrýlmamýþ tip adý"
|
||||
|
||||
#: src/lex.c:346
|
||||
msgid "unterminated type name"
|
||||
msgstr "sonlandýrýlmamýþ tip ismi"
|
||||
|
||||
#: src/lex.c:437
|
||||
msgid "use \"...\" for multi-character literal tokens"
|
||||
msgstr "çok-karakterli yazýn andaçlarý için \"...\" kullan"
|
||||
|
||||
#: src/main.c:124
|
||||
#, c-format
|
||||
msgid "%s: internal error: %s\n"
|
||||
msgstr "%s: iç hata: %s\n"
|
||||
|
||||
#: src/nullable.c:51
|
||||
msgid "Entering set_nullable"
|
||||
msgstr "set_nullable'a girildi"
|
||||
|
||||
#: src/output.c:986
|
||||
#, c-format
|
||||
msgid "maximum table size (%d) exceeded"
|
||||
msgstr "en büyük tablo uzunluðu (%d) aþýldý"
|
||||
|
||||
#: src/print.c:37
|
||||
#, c-format
|
||||
msgid " type %d is %s\n"
|
||||
msgstr " tip %d %s'dir\n"
|
||||
|
||||
#: src/print.c:85
|
||||
#, c-format
|
||||
msgid " (rule %d)"
|
||||
msgstr " (kural %d)"
|
||||
|
||||
#: src/print.c:111
|
||||
msgid " $default\taccept\n"
|
||||
msgstr " $default\tonayla\n"
|
||||
|
||||
#: src/print.c:113
|
||||
msgid " NO ACTIONS\n"
|
||||
msgstr " EYLEM YOK\n"
|
||||
|
||||
#: src/print.c:132
|
||||
#, c-format
|
||||
msgid " $ \tgo to state %d\n"
|
||||
msgstr " $ \tdurum %d'ye git\n"
|
||||
|
||||
#: src/print.c:135
|
||||
#, c-format
|
||||
msgid " %-4s\tshift, and go to state %d\n"
|
||||
msgstr " %-4s\tötele, ve durum %d'ye git\n"
|
||||
|
||||
#: src/print.c:159
|
||||
#, c-format
|
||||
msgid " %-4s\terror (nonassociative)\n"
|
||||
msgstr " %-4s\thata (birleþmeli deðil)\n"
|
||||
|
||||
#: src/print.c:187
|
||||
#, c-format
|
||||
msgid " %-4s\tgo to state %d\n"
|
||||
msgstr " %-4s\tdurum %d'ye git\n"
|
||||
|
||||
#: src/print.c:199
|
||||
#, c-format
|
||||
msgid "state %d"
|
||||
msgstr "durum %d"
|
||||
|
||||
#. rule # : LHS -> RHS
|
||||
#: src/print.c:229
|
||||
msgid "Grammar"
|
||||
msgstr "Gramer"
|
||||
|
||||
#: src/print.c:234
|
||||
#, c-format
|
||||
msgid "rule %-4d %s ->"
|
||||
msgstr "kural %-4d %s ->"
|
||||
|
||||
#: src/print.c:240
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||
#: src/print.c:244
|
||||
msgid "Terminals, with rules where they appear"
|
||||
msgstr "Sabit simgeler, kurallarýnýn bulunduklarý yerde"
|
||||
|
||||
#: src/print.c:268
|
||||
msgid "Nonterminals, with rules where they appear"
|
||||
msgstr "Deðiþken simgeler, kurallarýnýn bulunduklarý yerde"
|
||||
|
||||
#: src/print.c:294
|
||||
msgid " on left:"
|
||||
msgstr " solda:"
|
||||
|
||||
#: src/print.c:309
|
||||
msgid " on right:"
|
||||
msgstr " saðda:"
|
||||
|
||||
#: src/print_graph.c:174
|
||||
#, c-format
|
||||
msgid "%-4s\terror (nonassociative)"
|
||||
msgstr "%-4s\thata (birleþmeli deðil)"
|
||||
|
||||
#: src/print_graph.c:187
|
||||
#, c-format
|
||||
msgid "$default\treduce using rule %d (%s)"
|
||||
msgstr "$default\tindirgeme kural %d (%s)'i kullanýyor"
|
||||
|
||||
#: src/reader.c:78
|
||||
msgid " Skipping to next \\n"
|
||||
msgstr " Sonrakine atlanýyor \\n"
|
||||
|
||||
#: src/reader.c:80
|
||||
#, c-format
|
||||
msgid " Skipping to next %c"
|
||||
msgstr " Sonraki %c'ye atlanýyor"
|
||||
|
||||
#: src/reader.c:131 src/reader.c:143
|
||||
msgid "invalid $ value"
|
||||
msgstr "geçersiz $ deðeri"
|
||||
|
||||
#: src/reader.c:169 src/reader.c:184
|
||||
msgid "unterminated string at end of file"
|
||||
msgstr "dosyanýn sonunda sonlandýrýlmamýþ dizge"
|
||||
|
||||
#: src/reader.c:172
|
||||
msgid "unterminated string"
|
||||
msgstr "sonlandýrýlmamýþ dizge"
|
||||
|
||||
#: src/reader.c:325 src/reader.c:389
|
||||
#, c-format
|
||||
msgid "%s is invalid"
|
||||
msgstr "%s geçersizdir"
|
||||
|
||||
#: src/reader.c:365
|
||||
#, c-format
|
||||
msgid "$$ of `%s' has no declared type"
|
||||
msgstr "`%s''in $$'ý bildirilmiþ tip deðil"
|
||||
|
||||
#: src/reader.c:382
|
||||
#, c-format
|
||||
msgid "$%d of `%s' has no declared type"
|
||||
msgstr "`%d''in $%s'i bildirilmiþ tip deðil"
|
||||
|
||||
#: src/reader.c:436
|
||||
msgid "unterminated `%{' definition"
|
||||
msgstr "`%{' tanýmlamasý sonlandýrýlmamýþ"
|
||||
|
||||
#: src/reader.c:481 src/reader.c:595 src/reader.c:645
|
||||
#, c-format
|
||||
msgid "Premature EOF after %s"
|
||||
msgstr "%s'den sonra erken EOF"
|
||||
|
||||
#: src/reader.c:498
|
||||
#, c-format
|
||||
msgid "symbol `%s' used more than once as a literal string"
|
||||
msgstr "simge `%s' birden fazla defa sabit dizge olarak kullanýldý"
|
||||
|
||||
#: src/reader.c:501
|
||||
#, c-format
|
||||
msgid "symbol `%s' given more than one literal string"
|
||||
msgstr "`%s' simgesine birden fazla sabit dizge verilmiþ"
|
||||
|
||||
#: src/reader.c:522 src/reader.c:664
|
||||
#, c-format
|
||||
msgid "symbol %s redefined"
|
||||
msgstr "%s simgesi yeniden tanýmlandý"
|
||||
|
||||
#: src/reader.c:532 src/reader.c:610 src/reader.c:671 src/reader.c:1285
|
||||
#, c-format
|
||||
msgid "type redeclaration for %s"
|
||||
msgstr "%s için yeniden tip bildirimi"
|
||||
|
||||
#: src/reader.c:541
|
||||
#, c-format
|
||||
msgid "`%s' is invalid in %s"
|
||||
msgstr "`%s' %s içinde geçersizdir"
|
||||
|
||||
#: src/reader.c:558 src/reader.c:717
|
||||
#, c-format
|
||||
msgid "multiple %s declarations"
|
||||
msgstr "çoklu %s bildirimleri"
|
||||
|
||||
#: src/reader.c:560 src/reader.c:897 src/reader.c:922 src/reader.c:1263
|
||||
#, c-format
|
||||
msgid "invalid %s declaration"
|
||||
msgstr "geçersiz %s bildirimi"
|
||||
|
||||
#: src/reader.c:580
|
||||
msgid "%type declaration has no <typename>"
|
||||
msgstr "%type bildirimi <tipadý>'na sahip deðil"
|
||||
|
||||
#: src/reader.c:615
|
||||
#, c-format
|
||||
msgid "invalid %%type declaration due to item: %s"
|
||||
msgstr "geçersiz %%type bildirimine neden olan öðe: %s"
|
||||
|
||||
#: src/reader.c:660
|
||||
#, c-format
|
||||
msgid "redefining precedence of %s"
|
||||
msgstr "%s'in önceliði tekrar tanýmlandý"
|
||||
|
||||
#: src/reader.c:683
|
||||
#, c-format
|
||||
msgid "invalid text (%s) - number should be after identifier"
|
||||
msgstr "geçersiz metin (%s) - sayý tanýtýcýdan sonra olmalýdýr"
|
||||
|
||||
#: src/reader.c:693
|
||||
#, c-format
|
||||
msgid "unexpected item: %s"
|
||||
msgstr "beklenmeyen öðe: %s"
|
||||
|
||||
#: src/reader.c:760 src/reader.c:1089 src/reader.c:1160
|
||||
#, c-format
|
||||
msgid "unmatched %s"
|
||||
msgstr "eþlenemeyen %s"
|
||||
|
||||
#: src/reader.c:792
|
||||
#, c-format
|
||||
msgid "argument of %%expect is not an integer"
|
||||
msgstr "%%expect'in argümaný bir tamsayý deðil"
|
||||
|
||||
#: src/reader.c:838
|
||||
#, c-format
|
||||
msgid "unrecognized item %s, expected an identifier"
|
||||
msgstr "%s öðesi tanýnmadý, beklenen bir tanýtýcýdýr"
|
||||
|
||||
#: src/reader.c:862
|
||||
#, c-format
|
||||
msgid "expected string constant instead of %s"
|
||||
msgstr "%s'in yerine sabit dizge beklendi"
|
||||
|
||||
#: src/reader.c:1005
|
||||
#, c-format
|
||||
msgid "unrecognized: %s"
|
||||
msgstr "tanýnmayan: %s"
|
||||
|
||||
#: src/reader.c:1010
|
||||
msgid "no input grammar"
|
||||
msgstr "girdi grameri yok"
|
||||
|
||||
#: src/reader.c:1015
|
||||
#, c-format
|
||||
msgid "unknown character: %s"
|
||||
msgstr "bilinmeyen karakter: %s"
|
||||
|
||||
#: src/reader.c:1183
|
||||
#, c-format
|
||||
msgid "unterminated %guard clause"
|
||||
msgstr "sonlandýrýlmamýþ %guard yantümcesi"
|
||||
|
||||
#: src/reader.c:1350
|
||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||
msgstr "kötü-biçemli kural: baþlangýç simgesini takip eden \":\" yok"
|
||||
|
||||
#: src/reader.c:1357
|
||||
msgid "grammar starts with vertical bar"
|
||||
msgstr "gramer düþey çubuk ile baþlýyor"
|
||||
|
||||
#: src/reader.c:1388
|
||||
#, c-format
|
||||
msgid "rule given for %s, which is a token"
|
||||
msgstr "bir andaç olan %s için verilen kural"
|
||||
|
||||
#: src/reader.c:1490
|
||||
msgid "two @prec's in a row"
|
||||
msgstr "bir satýrda iki @prec"
|
||||
|
||||
#: src/reader.c:1498
|
||||
#, c-format
|
||||
msgid "%%guard present but %%semantic_parser not specified"
|
||||
msgstr "%%guard sunulmuþ fakat %%semantic_parser belirlenmemiþ"
|
||||
|
||||
#: src/reader.c:1507
|
||||
msgid "two actions at end of one rule"
|
||||
msgstr "bir kuralýn sonunda iki eylem"
|
||||
|
||||
#: src/reader.c:1521
|
||||
#, c-format
|
||||
msgid "type clash (`%s' `%s') on default action"
|
||||
msgstr "öntanýmlý eylem üzerinde (`%s' `%s') tip çatýþmasý"
|
||||
|
||||
#: src/reader.c:1527
|
||||
msgid "empty rule for typed nonterminal, and no action"
|
||||
msgstr "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylembelirtilmemiþ"
|
||||
|
||||
#: src/reader.c:1571
|
||||
#, c-format
|
||||
msgid "invalid input: %s"
|
||||
msgstr "geçersiz girdi: %s"
|
||||
|
||||
#: src/reader.c:1579
|
||||
#, c-format
|
||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||
msgstr "çok fazla simge var (andaçlar ve deðiþken simgeler); en fazla %d"
|
||||
|
||||
#: src/reader.c:1582
|
||||
msgid "no rules in the input grammar"
|
||||
msgstr "girdi grameri içinde kurallar yok"
|
||||
|
||||
#: src/reader.c:1606
|
||||
#, c-format
|
||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||
msgstr ""
|
||||
"simge %s kullanýldý, fakat bir andaç olarak tanýmlanmadý vekurallarý yok"
|
||||
|
||||
#: src/reader.c:1712
|
||||
#, c-format
|
||||
msgid "conflicting precedences for %s and %s"
|
||||
msgstr "%s ve %s için çeliþen öncelikler"
|
||||
|
||||
#: src/reader.c:1724
|
||||
#, c-format
|
||||
msgid "conflicting assoc values for %s and %s"
|
||||
msgstr "%s ve %s için çeliþen birleþmeli deðerler"
|
||||
|
||||
#: src/reader.c:1770
|
||||
#, c-format
|
||||
msgid "tokens %s and %s both assigned number %d"
|
||||
msgstr "%s ve %s andaçlarýnýn her ikisi %d sayýsýna atandý"
|
||||
|
||||
#: src/reader.c:1782
|
||||
#, c-format
|
||||
msgid "the start symbol %s is undefined"
|
||||
msgstr "baþlangýç simgesi %s tanýmlanmadý"
|
||||
|
||||
#: src/reader.c:1784
|
||||
#, c-format
|
||||
msgid "the start symbol %s is a token"
|
||||
msgstr "baþlangýç simgesi %s bir andaçtýr"
|
||||
|
||||
#: src/reduce.c:401
|
||||
msgid "Useless nonterminals:"
|
||||
msgstr "Yararsýz kurallar:"
|
||||
|
||||
#: src/reduce.c:416
|
||||
msgid "Terminals which are not used:"
|
||||
msgstr "Kullanýlmayan sabit simgeler:"
|
||||
|
||||
#: src/reduce.c:427
|
||||
msgid "Useless rules:"
|
||||
msgstr "Yararsýz kurallar:"
|
||||
|
||||
#: src/reduce.c:456
|
||||
msgid ""
|
||||
"Variables\n"
|
||||
"---------\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Deðiþkenler\n"
|
||||
"-----------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:458
|
||||
msgid "Value Sprec Sassoc Tag\n"
|
||||
msgstr "Deðer Söncel Sbirleþ Etiket\n"
|
||||
|
||||
#: src/reduce.c:463
|
||||
msgid ""
|
||||
"Rules\n"
|
||||
"-----\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Kurallar\n"
|
||||
"--------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:474
|
||||
msgid ""
|
||||
"Rules interpreted\n"
|
||||
"-----------------\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Kurallar yorumlandý\n"
|
||||
"-------------------\n"
|
||||
"\n"
|
||||
|
||||
#: src/reduce.c:491
|
||||
#, c-format
|
||||
msgid "%d rules never reduced\n"
|
||||
msgstr "%d kural asla indirgenmedi\n"
|
||||
|
||||
#: src/reduce.c:493
|
||||
#, c-format
|
||||
msgid "%s contains "
|
||||
msgstr "%s içerir "
|
||||
|
||||
#: src/reduce.c:497
|
||||
#, c-format
|
||||
msgid "%d useless nonterminal%s"
|
||||
msgstr "%d yararsýz deðiþken simge%s"
|
||||
|
||||
#: src/reduce.c:502
|
||||
msgid " and "
|
||||
msgstr " ve "
|
||||
|
||||
#: src/reduce.c:506
|
||||
#, c-format
|
||||
msgid "%d useless rule%s"
|
||||
msgstr "%d yararsýz kural%s"
|
||||
|
||||
#: src/reduce.c:539
|
||||
#, c-format
|
||||
msgid "Start symbol %s does not derive any sentence"
|
||||
msgstr "Baþlangýç simgesi %s herhangi bir cümleden türemez"
|
||||
|
||||
#: src/reduce.c:552
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||
msgstr ""
|
||||
"indirgenen %s tanýmlanan %d sabit simge%s, %d deðiþken simge%s, ve %düretilen"
|
||||
"%s.\n"
|
||||
|
||||
#: lib/getopt.c:675
|
||||
#, c-format
|
||||
msgid "%s: option `%s' is ambiguous\n"
|
||||
msgstr "%s: `%s' seçeneði belirsiz\n"
|
||||
|
||||
#: lib/getopt.c:700
|
||||
#, c-format
|
||||
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||
msgstr "%s: `--%s' seçeneði argümansýz kullanýlýr\n"
|
||||
|
||||
#: lib/getopt.c:705
|
||||
#, c-format
|
||||
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||
msgstr "%s: seçenek `%c%s' argümansýz kullanýlýr\n"
|
||||
|
||||
#: lib/getopt.c:723 lib/getopt.c:896
|
||||
#, c-format
|
||||
msgid "%s: option `%s' requires an argument\n"
|
||||
msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n"
|
||||
|
||||
#. --option
|
||||
#: lib/getopt.c:752
|
||||
#, c-format
|
||||
msgid "%s: unrecognized option `--%s'\n"
|
||||
msgstr "%s: `--%s' seçeneði bilinmiyor\n"
|
||||
|
||||
#. +option or -option
|
||||
#: lib/getopt.c:756
|
||||
#, c-format
|
||||
msgid "%s: unrecognized option `%c%s'\n"
|
||||
msgstr "%s: `%c%s' seçeneði bilinmiyor\n"
|
||||
|
||||
#. 1003.2 specifies the format of this message.
|
||||
#: lib/getopt.c:782
|
||||
#, c-format
|
||||
msgid "%s: illegal option -- %c\n"
|
||||
msgstr "%s: kuraldýþý seçenek -- %c\n"
|
||||
|
||||
#: lib/getopt.c:785
|
||||
#, c-format
|
||||
msgid "%s: invalid option -- %c\n"
|
||||
msgstr "%s: geçersiz seçenek -- %c\n"
|
||||
|
||||
#. 1003.2 specifies the format of this message.
|
||||
#: lib/getopt.c:815 lib/getopt.c:945
|
||||
#, c-format
|
||||
msgid "%s: option requires an argument -- %c\n"
|
||||
msgstr "%s: seçenek bir argümanla kullanýlýr -- %c\n"
|
||||
|
||||
#: lib/getopt.c:862
|
||||
#, c-format
|
||||
msgid "%s: option `-W %s' is ambiguous\n"
|
||||
msgstr "%s: `-W %s' seçeneði belirsiz\n"
|
||||
|
||||
#: lib/getopt.c:880
|
||||
#, c-format
|
||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||
msgstr "%s: `-W %s' seçeneði argümansýz kullanýlýr\n"
|
||||
|
||||
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||
#. before exiting when memory is exhausted. Goes through gettext.
|
||||
#: lib/obstack.c:477 lib/xmalloc.c:66
|
||||
msgid "memory exhausted"
|
||||
msgstr "bellek tükendi"
|
||||
|
||||
#. Get translations for open and closing quotation marks.
|
||||
#.
|
||||
#. The message catalog should translate "`" to a left
|
||||
#. quotation mark suitable for the locale, and similarly for
|
||||
#. "'". If the catalog has no translation,
|
||||
#. locale_quoting_style quotes `like this', and
|
||||
#. clocale_quoting_style quotes "like this".
|
||||
#.
|
||||
#. For example, an American English Unicode locale should
|
||||
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||
#. MARK). A British English Unicode locale should instead
|
||||
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||
#: lib/quotearg.c:259
|
||||
msgid "`"
|
||||
msgstr "`"
|
||||
|
||||
#: lib/quotearg.c:260
|
||||
msgid "'"
|
||||
msgstr "'"
|
||||
|
||||
#~ msgid "\t\t/* empty */"
|
||||
#~ msgstr "\t\t/* boþ */"
|
||||
|
||||
#~ msgid "multiple %%header_extension declarations"
|
||||
#~ msgstr "çoklu %%header_extension bildirimleri"
|
||||
|
||||
#~ msgid "multiple %%source_extension declarations"
|
||||
#~ msgstr "çoklu %%source_extension bildirimleri"
|
||||
|
||||
#~ msgid "vcg graph: no such color."
|
||||
#~ msgstr "vcg graph: böyle bir renk yok."
|
||||
|
||||
#~ msgid "vcg graph: no such text mode"
|
||||
#~ msgstr "vcg graph: böyle bir metin kipi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such shape"
|
||||
#~ msgstr "vcg graph: böyle bir þekil yok"
|
||||
|
||||
#~ msgid "vcg graph: no such decision"
|
||||
#~ msgstr "vcg graph: böyle bir karar yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an orientation"
|
||||
#~ msgstr "vcg graph: böyle bir konum yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an alignement"
|
||||
#~ msgstr "vcg graph: böyle bir hizalama yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an arrow mode"
|
||||
#~ msgstr "vcg graph: böyle bir yön kipi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such crossing_type"
|
||||
#~ msgstr "vcg graph: böyle bir kesme tipi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such view"
|
||||
#~ msgstr "vcg graph: böyle bir görünüm yok"
|
||||
|
||||
#~ msgid "vcg graph: no such linestyle"
|
||||
#~ msgstr "vcg graph: böyle bir çizgi biçemi yok"
|
||||
|
||||
#~ msgid "vcg graph: no such an arrowstyle"
|
||||
#~ msgstr "vcg graph: böyle bir yön biçemi yok"
|
||||
@@ -3,3 +3,4 @@
|
||||
Makefile
|
||||
bison
|
||||
*.log
|
||||
*.flc
|
||||
@@ -23,6 +23,7 @@
|
||||
The entry point is generate_states. */
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "gram.h"
|
||||
#include "state.h"
|
||||
#include "complain.h"
|
||||
@@ -32,39 +33,39 @@
|
||||
|
||||
int nstates;
|
||||
int final_state;
|
||||
core *first_state = NULL;
|
||||
shifts *first_shift = NULL;
|
||||
reductions *first_reduction = NULL;
|
||||
core *first_state;
|
||||
shifts *first_shift;
|
||||
reductions *first_reduction;
|
||||
|
||||
static core *this_state = NULL;
|
||||
static core *last_state = NULL;
|
||||
static shifts *last_shift = NULL;
|
||||
static reductions *last_reduction = NULL;
|
||||
static core *this_state;
|
||||
static core *last_state;
|
||||
static shifts *last_shift;
|
||||
static reductions *last_reduction;
|
||||
|
||||
static int nshifts;
|
||||
static short *shift_symbol = NULL;
|
||||
static short *shift_symbol;
|
||||
|
||||
static short *redset = NULL;
|
||||
static short *shiftset = NULL;
|
||||
static short *redset;
|
||||
static short *shiftset;
|
||||
|
||||
static short **kernel_base = NULL;
|
||||
static short **kernel_end = NULL;
|
||||
static short *kernel_items = NULL;
|
||||
static short **kernel_base;
|
||||
static short **kernel_end;
|
||||
static short *kernel_items;
|
||||
|
||||
/* hash table for states, to recognize equivalent ones. */
|
||||
|
||||
#define STATE_TABLE_SIZE 1009
|
||||
static core **state_table = NULL;
|
||||
static core **state_table;
|
||||
|
||||
|
||||
static void
|
||||
allocate_itemsets (void)
|
||||
{
|
||||
short *itemp = NULL;
|
||||
short *itemp;
|
||||
int symbol;
|
||||
int i;
|
||||
int count;
|
||||
short *symbol_count = NULL;
|
||||
short *symbol_count;
|
||||
|
||||
count = 0;
|
||||
symbol_count = XCALLOC (short, nsyms);
|
||||
@@ -88,8 +89,7 @@ allocate_itemsets (void)
|
||||
We allocate that much space for each symbol. */
|
||||
|
||||
kernel_base = XCALLOC (short *, nsyms);
|
||||
if (count)
|
||||
kernel_items = XCALLOC (short, count);
|
||||
kernel_items = XCALLOC (short, count);
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < nsyms; i++)
|
||||
|
||||
+7
-5
@@ -13,17 +13,19 @@ bin_PROGRAMS = bison
|
||||
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
|
||||
derives.c \
|
||||
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
|
||||
output.c \
|
||||
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
|
||||
output.c print_graph.c \
|
||||
muscle_tab.c options.c \
|
||||
print.c reader.c reduce.c symtab.c warshall.c vcg.c
|
||||
|
||||
EXTRA_bison_SOURCES = vmsgetargs.c
|
||||
|
||||
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
|
||||
derives.h \
|
||||
files.h getargs.h gram.h lalr.h lex.h nullable.h \
|
||||
output.h state.h \
|
||||
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
|
||||
vcg.h vcg_defaults.h print_graph.h
|
||||
output.h print_graph.h \
|
||||
muscle_tab.h options.h \
|
||||
print.h reader.h reduce.h state.h symtab.h warshall.h system.h \
|
||||
types.h vcg.h vcg_defaults.h
|
||||
|
||||
pkgdata_DATA = bison.simple bison.hairy
|
||||
|
||||
|
||||
+24
-9
@@ -58,6 +58,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +67,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
@@ -111,8 +115,9 @@ bin_PROGRAMS = bison
|
||||
bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
|
||||
derives.c \
|
||||
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
|
||||
output.c \
|
||||
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
|
||||
output.c print_graph.c \
|
||||
muscle_tab.c options.c \
|
||||
print.c reader.c reduce.c symtab.c warshall.c vcg.c
|
||||
|
||||
|
||||
EXTRA_bison_SOURCES = vmsgetargs.c
|
||||
@@ -120,9 +125,10 @@ EXTRA_bison_SOURCES = vmsgetargs.c
|
||||
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
|
||||
derives.h \
|
||||
files.h getargs.h gram.h lalr.h lex.h nullable.h \
|
||||
output.h state.h \
|
||||
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
|
||||
vcg.h vcg_defaults.h print_graph.h
|
||||
output.h print_graph.h \
|
||||
muscle_tab.h options.h \
|
||||
print.h reader.h reduce.h state.h symtab.h warshall.h system.h \
|
||||
types.h vcg.h vcg_defaults.h
|
||||
|
||||
|
||||
pkgdata_DATA = bison.simple bison.hairy
|
||||
@@ -139,9 +145,10 @@ am_bison_OBJECTS = LR0$U.$(OBJEXT) closure$U.$(OBJEXT) \
|
||||
complain$U.$(OBJEXT) conflicts$U.$(OBJEXT) derives$U.$(OBJEXT) \
|
||||
files$U.$(OBJEXT) getargs$U.$(OBJEXT) gram$U.$(OBJEXT) \
|
||||
lalr$U.$(OBJEXT) lex$U.$(OBJEXT) main$U.$(OBJEXT) \
|
||||
nullable$U.$(OBJEXT) output$U.$(OBJEXT) print$U.$(OBJEXT) \
|
||||
nullable$U.$(OBJEXT) output$U.$(OBJEXT) print_graph$U.$(OBJEXT) \
|
||||
muscle_tab$U.$(OBJEXT) options$U.$(OBJEXT) print$U.$(OBJEXT) \
|
||||
reader$U.$(OBJEXT) reduce$U.$(OBJEXT) symtab$U.$(OBJEXT) \
|
||||
warshall$U.$(OBJEXT) vcg$U.$(OBJEXT) print_graph$U.$(OBJEXT)
|
||||
warshall$U.$(OBJEXT) vcg$U.$(OBJEXT)
|
||||
bison_OBJECTS = $(am_bison_OBJECTS)
|
||||
bison_LDADD = $(LDADD)
|
||||
bison_DEPENDENCIES = ../lib/libbison.a
|
||||
@@ -156,7 +163,8 @@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||
@AMDEP_TRUE@ $(DEPDIR)/derives$U.Po $(DEPDIR)/files$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)/main$U.Po $(DEPDIR)/nullable$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/main$U.Po $(DEPDIR)/muscle_tab$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)/print_graph$U.Po $(DEPDIR)/reader$U.Po \
|
||||
@AMDEP_TRUE@ $(DEPDIR)/reduce$U.Po $(DEPDIR)/symtab$U.Po \
|
||||
@@ -237,7 +245,9 @@ mostlyclean-kr:
|
||||
@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)/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)/options$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_graph$U.Po@am__quote@
|
||||
@@ -285,8 +295,12 @@ 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
|
||||
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
|
||||
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)
|
||||
$(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)
|
||||
$(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)
|
||||
@@ -308,7 +322,8 @@ warshall_.c: warshall.c $(ANSI2KNR)
|
||||
LR0_.$(OBJEXT) closure_.$(OBJEXT) complain_.$(OBJEXT) \
|
||||
conflicts_.$(OBJEXT) derives_.$(OBJEXT) files_.$(OBJEXT) \
|
||||
getargs_.$(OBJEXT) gram_.$(OBJEXT) lalr_.$(OBJEXT) lex_.$(OBJEXT) \
|
||||
main_.$(OBJEXT) nullable_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \
|
||||
main_.$(OBJEXT) muscle_tab_.$(OBJEXT) nullable_.$(OBJEXT) \
|
||||
options_.$(OBJEXT) output_.$(OBJEXT) print_.$(OBJEXT) \
|
||||
print_graph_.$(OBJEXT) reader_.$(OBJEXT) reduce_.$(OBJEXT) \
|
||||
symtab_.$(OBJEXT) vcg_.$(OBJEXT) vmsgetargs_.$(OBJEXT) \
|
||||
warshall_.$(OBJEXT) : $(ANSI2KNR)
|
||||
|
||||
+206
-41
@@ -1,5 +1,8 @@
|
||||
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
|
||||
#line
|
||||
/* -*- C -*- */
|
||||
|
||||
/* A Bison parser, made from %%filename
|
||||
by GNU bison %%version. */
|
||||
|
||||
/* Skeleton output parser for bison,
|
||||
Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
@@ -28,6 +31,29 @@
|
||||
It was written by Richard Stallman by simplifying the hairy parser
|
||||
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
|
||||
# ifdef alloca
|
||||
# define YYSTACK_USE_ALLOCA 1
|
||||
@@ -78,31 +104,163 @@
|
||||
# define YYSTACK_ALLOC malloc
|
||||
#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 yyclearin (yychar = YYEMPTY)
|
||||
#define YYEMPTY -2
|
||||
#define YYEOF 0
|
||||
|
||||
#define YYACCEPT goto yyacceptlab
|
||||
#define YYABORT goto yyabortlab
|
||||
#define YYABORT goto yyabortlab
|
||||
#define YYERROR goto yyerrlab1
|
||||
|
||||
/* Like YYERROR except do call yyerror. This remains here temporarily
|
||||
to ease the transition to the new meaning of YYERROR, for GCC.
|
||||
Once GCC version 2 has supplanted version 1, this can go. */
|
||||
|
||||
#define YYFAIL goto yyerrlab
|
||||
|
||||
#define YYRECOVERING() (!!yyerrstatus)
|
||||
|
||||
#define YYBACKUP(Token, Value) \
|
||||
do \
|
||||
if (yychar == YYEMPTY && yylen == 1) \
|
||||
{ \
|
||||
yychar = (Token); \
|
||||
yylval = (Value); \
|
||||
yylval = (Value); \
|
||||
yychar1 = YYTRANSLATE (yychar); \
|
||||
YYPOPSTACK; \
|
||||
goto yybackup; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
yyerror ("syntax error: cannot back up"); \
|
||||
yyerror ("syntax error: cannot back up"); \
|
||||
YYERROR; \
|
||||
} \
|
||||
while (0)
|
||||
@@ -110,7 +268,6 @@ while (0)
|
||||
#define YYTERROR 1
|
||||
#define YYERRCODE 256
|
||||
|
||||
|
||||
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
|
||||
are run).
|
||||
|
||||
@@ -124,6 +281,8 @@ while (0)
|
||||
Current.last_column = Rhs[N].last_column;
|
||||
#endif
|
||||
|
||||
/* Definition of YYLSP_NEEDED. */
|
||||
#define YYLSP_NEEDED %%locations_flag
|
||||
|
||||
/* YYLEX -- calling `yylex' with the right arguments. */
|
||||
|
||||
@@ -145,7 +304,6 @@ while (0)
|
||||
# define YYLEX yylex ()
|
||||
#endif /* !YYPURE */
|
||||
|
||||
|
||||
/* Enable debugging if requested. */
|
||||
#if YYDEBUG
|
||||
# define YYDPRINTF(Args) \
|
||||
@@ -164,7 +322,7 @@ int yydebug;
|
||||
|
||||
/* YYINITDEPTH -- initial size of the parser's stacks. */
|
||||
#ifndef YYINITDEPTH
|
||||
# define YYINITDEPTH 200
|
||||
# define YYINITDEPTH %%initdepth
|
||||
#endif
|
||||
|
||||
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
|
||||
@@ -174,9 +332,11 @@ int yydebug;
|
||||
#endif
|
||||
|
||||
#ifndef YYMAXDEPTH
|
||||
# define YYMAXDEPTH 10000
|
||||
# define YYMAXDEPTH %%maxdepth
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Define __yy_memcpy. Note that the size argument
|
||||
should be passed with type unsigned int, because that is what the non-GCC
|
||||
definitions require. With GCC, __builtin_memcpy takes an arg
|
||||
@@ -205,10 +365,11 @@ __yy_memcpy (char *to, const char *from, unsigned int count)
|
||||
while (i-- > 0)
|
||||
*t++ = *f++;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#line
|
||||
|
||||
#line %%line "%%skeleton"
|
||||
|
||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||
into yyparse. The argument should have type void *.
|
||||
@@ -245,7 +406,7 @@ int yyparse (void);
|
||||
/* The lookahead symbol. */ \
|
||||
int yychar; \
|
||||
\
|
||||
/* The semantic value of the lookahead symbol. */ \
|
||||
/* The semantic value of the lookahead symbol. */ \
|
||||
YYSTYPE yylval; \
|
||||
\
|
||||
/* Number of parse errors so far. */ \
|
||||
@@ -262,8 +423,7 @@ YYLTYPE yylloc;
|
||||
_YY_DECL_VARIABLES
|
||||
#endif
|
||||
|
||||
|
||||
/* If nonreentrant, generate the variables here. */
|
||||
/* If nonreentrant, generate the variables here. */
|
||||
|
||||
#if !YYPURE
|
||||
YY_DECL_VARIABLES
|
||||
@@ -273,7 +433,7 @@ int
|
||||
yyparse (YYPARSE_PARAM_ARG)
|
||||
YYPARSE_PARAM_DECL
|
||||
{
|
||||
/* If reentrant, generate the variables here. */
|
||||
/* If reentrant, generate the variables here. */
|
||||
#if YYPURE
|
||||
YY_DECL_VARIABLES
|
||||
#endif /* !YYPURE */
|
||||
@@ -293,7 +453,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
Refer to the stacks thru separate pointers, to allow yyoverflow
|
||||
to reallocate them elsewhere. */
|
||||
|
||||
/* The state stack. */
|
||||
/* The state stack. */
|
||||
short yyssa[YYINITDEPTH];
|
||||
short *yyss = yyssa;
|
||||
register short *yyssp;
|
||||
@@ -319,7 +479,6 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
int yystacksize = YYINITDEPTH;
|
||||
int yyfree_stacks = 0;
|
||||
|
||||
|
||||
/* The variables used to return semantic value and location from the
|
||||
action routines. */
|
||||
YYSTYPE yyval;
|
||||
@@ -328,7 +487,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
# endif
|
||||
|
||||
/* When reducing, the number of symbols on the RHS of the reduced
|
||||
rule. */
|
||||
rule. */
|
||||
int yylen;
|
||||
|
||||
YYDPRINTF ((stderr, "Starting parse\n"));
|
||||
@@ -353,13 +512,13 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
/*------------------------------------------------------------.
|
||||
| yynewstate -- Push a new state, which is found in yystate. |
|
||||
`------------------------------------------------------------*/
|
||||
yynewstate:
|
||||
yynewstate:
|
||||
/* In all cases, when you get here, the value and location stacks
|
||||
have just been pushed. so pushing a state here evens the stacks.
|
||||
*/
|
||||
yyssp++;
|
||||
|
||||
yysetstate:
|
||||
|
||||
yysetstate:
|
||||
*yyssp = yystate;
|
||||
|
||||
if (yyssp >= yyss + yystacksize - 1)
|
||||
@@ -416,7 +575,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
yystacksize *= 2;
|
||||
if (yystacksize > YYMAXDEPTH)
|
||||
yystacksize = YYMAXDEPTH;
|
||||
# ifndef YYSTACK_USE_ALLOCA
|
||||
# if !YYSTACK_USE_ALLOCA
|
||||
yyfree_stacks = 1;
|
||||
# endif
|
||||
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
||||
@@ -448,7 +607,6 @@ yyparse (YYPARSE_PARAM_ARG)
|
||||
|
||||
goto yybackup;
|
||||
|
||||
|
||||
/*-----------.
|
||||
| yybackup. |
|
||||
`-----------*/
|
||||
@@ -475,12 +633,12 @@ yybackup:
|
||||
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;
|
||||
yychar = YYEOF; /* Don't call YYLEX any more */
|
||||
yychar = YYEOF; /* Don't call YYLEX any more. */
|
||||
|
||||
YYDPRINTF ((stderr, "Now at end of input.\n"));
|
||||
}
|
||||
@@ -601,8 +759,11 @@ yyreduce:
|
||||
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
|
||||
}
|
||||
#endif
|
||||
%% actions /* The action file replaces this line. */
|
||||
#line
|
||||
switch (yyn)
|
||||
{
|
||||
%%action
|
||||
}
|
||||
#line %%line "%%skeleton"
|
||||
|
||||
yyvsp -= yylen;
|
||||
yyssp -= yylen;
|
||||
@@ -650,7 +811,7 @@ yyerrlab:
|
||||
{
|
||||
++yynerrs;
|
||||
|
||||
#ifdef YYERROR_VERBOSE
|
||||
#if YYERROR_VERBOSE
|
||||
yyn = yypact[yystate];
|
||||
|
||||
if (yyn > YYFLAG && yyn < YYLAST)
|
||||
@@ -678,11 +839,11 @@ yyerrlab:
|
||||
{
|
||||
count = 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)
|
||||
{
|
||||
strcat (msg, count == 0 ? ", expecting `" : " or `");
|
||||
strcat (msg, yytname[x]);
|
||||
strcat (msg, count == 0 ? ", expecting `" : " or `");
|
||||
strcat (msg, yytname[x]);
|
||||
strcat (msg, "'");
|
||||
count++;
|
||||
}
|
||||
@@ -690,26 +851,26 @@ yyerrlab:
|
||||
yyerror (msg);
|
||||
free (msg);
|
||||
}
|
||||
else
|
||||
else
|
||||
yyerror ("parse error; also virtual memory exceeded");
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif /* YYERROR_VERBOSE */
|
||||
yyerror ("parse error");
|
||||
yyerror ("parse error");
|
||||
}
|
||||
goto yyerrlab1;
|
||||
|
||||
|
||||
/*--------------------------------------------------.
|
||||
| yyerrlab1 -- error raised explicitly by an action |
|
||||
`--------------------------------------------------*/
|
||||
/*----------------------------------------------------.
|
||||
| yyerrlab1 -- error raised explicitly by an action. |
|
||||
`----------------------------------------------------*/
|
||||
yyerrlab1:
|
||||
if (yyerrstatus == 3)
|
||||
{
|
||||
/* If just tried and failed to reuse lookahead token after an
|
||||
error, discard it. */
|
||||
|
||||
/* return failure if at end of input */
|
||||
/* Return failure if at end of input. */
|
||||
if (yychar == YYEOF)
|
||||
YYABORT;
|
||||
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
|
||||
@@ -720,7 +881,7 @@ yyerrlab1:
|
||||
/* Else will try to reuse lookahead token after shifting the error
|
||||
token. */
|
||||
|
||||
yyerrstatus = 3; /* Each real token shifted decrements this */
|
||||
yyerrstatus = 3; /* Each real token shifted decrements this. */
|
||||
|
||||
goto yyerrhandle;
|
||||
|
||||
@@ -743,7 +904,7 @@ yyerrdefault:
|
||||
|
||||
/*---------------------------------------------------------------.
|
||||
| yyerrpop -- pop the current state because it cannot handle the |
|
||||
| error token |
|
||||
| error token. |
|
||||
`---------------------------------------------------------------*/
|
||||
yyerrpop:
|
||||
if (yyssp == yyss)
|
||||
@@ -831,3 +992,7 @@ yyabortlab:
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
#line %%input_line "%%filename"
|
||||
%%epilogue
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
02111-1307, USA. */
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "gram.h"
|
||||
#include "closure.h"
|
||||
#include "derives.h"
|
||||
|
||||
+10
-6
@@ -19,10 +19,14 @@
|
||||
/* Based on error.c and error.h,
|
||||
written by David MacKenzie <[email protected]>. */
|
||||
|
||||
#include "system.h"
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
|
||||
# ifdef __STDC__
|
||||
# if __STDC__
|
||||
# include <stdarg.h>
|
||||
# define VA_START(args, lastarg) va_start(args, lastarg)
|
||||
# else
|
||||
@@ -115,7 +119,7 @@ int error_one_per_line;
|
||||
`--------------------------------*/
|
||||
|
||||
void
|
||||
#if defined VA_START && defined __STDC__
|
||||
#if defined VA_START && __STDC__
|
||||
warn (const char *message, ...)
|
||||
#else
|
||||
warn (message, va_alist)
|
||||
@@ -167,7 +171,7 @@ warn (message, va_alist)
|
||||
`-----------------------------------------------------------*/
|
||||
|
||||
void
|
||||
#if defined VA_START && defined __STDC__
|
||||
#if defined VA_START && __STDC__
|
||||
complain (const char *message, ...)
|
||||
#else
|
||||
complain (message, va_alist)
|
||||
@@ -217,7 +221,7 @@ complain (message, va_alist)
|
||||
`-------------------------------------------------*/
|
||||
|
||||
void
|
||||
#if defined VA_START && defined __STDC__
|
||||
#if defined VA_START && __STDC__
|
||||
fatal (const char *message, ...)
|
||||
#else
|
||||
fatal (message, va_alist)
|
||||
@@ -255,7 +259,7 @@ fatal (message, va_alist)
|
||||
`------------------------------------------------------------------*/
|
||||
|
||||
void
|
||||
#if defined VA_START && defined __STDC__
|
||||
#if defined VA_START && __STDC__
|
||||
error (int status, int errnum,
|
||||
const char *message, ...)
|
||||
#else
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
#if defined (__STDC__) && __STDC__
|
||||
|
||||
/* Informative messages, but we proceed. */
|
||||
|
||||
|
||||
+11
-9
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "xalloc.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "state.h"
|
||||
@@ -29,12 +30,12 @@
|
||||
#include "LR0.h"
|
||||
|
||||
int any_conflicts = 0;
|
||||
errs **err_table = NULL;
|
||||
errs **err_table;
|
||||
int expected_conflicts;
|
||||
static char *conflicts = NULL;
|
||||
static char *conflicts;
|
||||
|
||||
static unsigned *shiftset = NULL;
|
||||
static unsigned *lookaheadset = NULL;
|
||||
static unsigned *shiftset;
|
||||
static unsigned *lookaheadset;
|
||||
static int src_total;
|
||||
static int rrc_total;
|
||||
static int src_count;
|
||||
@@ -263,7 +264,7 @@ set_conflicts (int state)
|
||||
}
|
||||
|
||||
void
|
||||
solve_conflicts (void)
|
||||
initialize_conflicts (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -457,7 +458,7 @@ conflict_report (int src_num, int rrc_num)
|
||||
`---------------------------------------------*/
|
||||
|
||||
void
|
||||
print_conflicts (FILE *out)
|
||||
print_conflicts (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -477,8 +478,9 @@ print_conflicts (FILE *out)
|
||||
|
||||
if (verbose_flag)
|
||||
{
|
||||
fprintf (out, _("State %d contains"), i);
|
||||
fputs (conflict_report (src_count, rrc_count), out);
|
||||
obstack_fgrow1 (&output_obstack, _("State %d contains"), i);
|
||||
obstack_sgrow (&output_obstack,
|
||||
conflict_report (src_count, rrc_count));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -736,7 +738,7 @@ print_reductions (int state)
|
||||
|
||||
|
||||
void
|
||||
free_conflicts (void)
|
||||
finalize_conflicts (void)
|
||||
{
|
||||
XFREE (conflicts);
|
||||
XFREE (shiftset);
|
||||
|
||||
+3
-3
@@ -22,10 +22,10 @@
|
||||
# define CONFLICTS_H_
|
||||
# include "state.h"
|
||||
|
||||
void solve_conflicts PARAMS ((void));
|
||||
void print_conflicts PARAMS ((FILE *out));
|
||||
void initialize_conflicts PARAMS ((void));
|
||||
void print_conflicts PARAMS ((void));
|
||||
void print_reductions PARAMS ((int));
|
||||
void free_conflicts PARAMS ((void));
|
||||
void finalize_conflicts PARAMS ((void));
|
||||
|
||||
/* Were there conflicts? */
|
||||
extern int any_conflicts;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "types.h"
|
||||
#include "gram.h"
|
||||
#include "derives.h"
|
||||
|
||||
+50
-68
@@ -22,6 +22,7 @@
|
||||
#include "system.h"
|
||||
#include "getargs.h"
|
||||
#include "files.h"
|
||||
#include "xalloc.h"
|
||||
#include "gram.h"
|
||||
#include "complain.h"
|
||||
|
||||
@@ -33,13 +34,11 @@ struct obstack table_obstack;
|
||||
struct obstack defines_obstack;
|
||||
struct obstack guard_obstack;
|
||||
struct obstack output_obstack;
|
||||
struct obstack graph_obstack;
|
||||
|
||||
char *spec_outfile = NULL; /* for -o. */
|
||||
char *spec_file_prefix = NULL; /* for -b. */
|
||||
char *spec_name_prefix = NULL; /* for -p. */
|
||||
char *spec_verbose_file = NULL; /* for --verbose. */
|
||||
char *spec_graph_file = NULL; /* for -g. */
|
||||
char *spec_defines_file = NULL; /* for --defines. */
|
||||
|
||||
char *infile = NULL;
|
||||
char *attrsfile = NULL;
|
||||
@@ -97,17 +96,12 @@ compute_header_macro (void)
|
||||
int ite;
|
||||
char *macro_name;
|
||||
|
||||
if (spec_defines_file)
|
||||
macro_name = xstrdup (spec_defines_file);
|
||||
else
|
||||
{
|
||||
macro_name = XMALLOC (char,
|
||||
strlen (base_name) +
|
||||
strlen (header_extension) + 1);
|
||||
macro_name = XMALLOC (char,
|
||||
strlen (base_name) +
|
||||
strlen (header_extension) + 1);
|
||||
|
||||
stpcpy (macro_name, base_name);
|
||||
strcat (macro_name, header_extension);
|
||||
}
|
||||
stpcpy (macro_name, base_name);
|
||||
strcat (macro_name, header_extension);
|
||||
|
||||
for (ite = 0; macro_name[ite]; ite++)
|
||||
if (macro_name[ite] == '.')
|
||||
@@ -266,10 +260,20 @@ get_extension_index (const char *filename)
|
||||
static void
|
||||
compute_exts_from_gf (const char *ext)
|
||||
{
|
||||
src_extension = tr (ext, 'y', 'c');
|
||||
src_extension = tr (src_extension, 'Y', 'C');
|
||||
header_extension = tr (ext, 'y', 'h');
|
||||
header_extension = tr (header_extension, 'Y', 'H');
|
||||
/* Checks if SRC_EXTENSION is NULL. In the other case, %source_extension
|
||||
was specified in the grammar file. */
|
||||
if (src_extension == NULL)
|
||||
{
|
||||
src_extension = tr (ext, 'y', 'c');
|
||||
src_extension = tr (src_extension, 'Y', 'C');
|
||||
}
|
||||
/* Checks if HEADER_EXTENSION is NULL. In the other case,
|
||||
%header_extension was specified in the grammar file. */
|
||||
if (header_extension == NULL)
|
||||
{
|
||||
header_extension = tr (ext, 'y', 'h');
|
||||
header_extension = tr (header_extension, 'Y', 'H');
|
||||
}
|
||||
}
|
||||
|
||||
/* Computes extensions from the given c source file extension. */
|
||||
@@ -391,38 +395,6 @@ compute_base_names (void)
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------.
|
||||
| Close the open files, compute the output files names. |
|
||||
`-------------------------------------------------------*/
|
||||
|
||||
void
|
||||
compute_output_file_names (void)
|
||||
{
|
||||
compute_base_names ();
|
||||
|
||||
/* If not yet done. */
|
||||
if (!src_extension)
|
||||
src_extension = ".c";
|
||||
if (!header_extension)
|
||||
header_extension = ".h";
|
||||
|
||||
/* It the defines filename if not given, we create it. */
|
||||
if (!spec_defines_file)
|
||||
spec_defines_file = stringappend (base_name, header_extension);
|
||||
|
||||
/* It the graph filename if not given, we create it. */
|
||||
if (!spec_graph_file)
|
||||
spec_graph_file = stringappend (short_base_name, ".vcg");
|
||||
|
||||
spec_verbose_file = stringappend (short_base_name, EXT_OUTPUT);
|
||||
|
||||
attrsfile = stringappend (short_base_name, EXT_STYPE_H);
|
||||
#ifndef MSDOS
|
||||
attrsfile = stringappend (attrsfile, header_extension);
|
||||
#endif /* MSDOS */
|
||||
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------.
|
||||
| Open the input file. Look for the skeletons. Find the names of |
|
||||
| the output files. Prepare the obstacks. |
|
||||
@@ -440,43 +412,46 @@ open_files (void)
|
||||
obstack_init (&defines_obstack);
|
||||
obstack_init (&guard_obstack);
|
||||
obstack_init (&output_obstack);
|
||||
obstack_init (&graph_obstack);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------.
|
||||
| Close the open file.. |
|
||||
`-----------------------*/
|
||||
|
||||
void
|
||||
close_files (void)
|
||||
{
|
||||
xfclose (finput);
|
||||
}
|
||||
|
||||
/*---------------------------.
|
||||
| Produce the output files. |
|
||||
`---------------------------*/
|
||||
/*-----------------------------------------------------.
|
||||
| Close the open files, produce all the output files. |
|
||||
`-----------------------------------------------------*/
|
||||
|
||||
void
|
||||
output_files (void)
|
||||
{
|
||||
xfclose (finput);
|
||||
|
||||
compute_base_names ();
|
||||
|
||||
/* Set default extensions */
|
||||
if (!src_extension)
|
||||
src_extension = ".c";
|
||||
if (!header_extension)
|
||||
header_extension = ".h";
|
||||
|
||||
attrsfile = stringappend (short_base_name, EXT_STYPE_H);
|
||||
#ifndef MSDOS
|
||||
stringappend (attrsfile, header_extension);
|
||||
#endif /* MSDOS */
|
||||
|
||||
/* Output the main file. */
|
||||
if (spec_outfile)
|
||||
obstack_save (&table_obstack, spec_outfile);
|
||||
else
|
||||
obstack_save (&table_obstack, stringappend (base_name, src_extension));
|
||||
obstack_free (&table_obstack, NULL);
|
||||
|
||||
/* Output the header file if wanted. */
|
||||
if (defines_flag)
|
||||
defines_obstack_save (spec_defines_file);
|
||||
obstack_free (&defines_obstack, NULL);
|
||||
defines_obstack_save (stringappend (base_name, header_extension));
|
||||
|
||||
/* If we output only the table, dump the actions in ACTFILE. */
|
||||
if (no_parser_flag)
|
||||
obstack_save (&action_obstack, stringappend (short_base_name, ".act"));
|
||||
obstack_free (&action_obstack, NULL);
|
||||
|
||||
/* If we produced a semantic parser ATTRS_OBSTACK must be dumped
|
||||
into its own file, ATTTRSFILE. */
|
||||
@@ -485,12 +460,19 @@ output_files (void)
|
||||
char *temp_name;
|
||||
|
||||
obstack_save (&attrs_obstack, attrsfile);
|
||||
obstack_free (&attrs_obstack, NULL);
|
||||
temp_name = stringappend (short_base_name, EXT_GUARD_C);
|
||||
#ifndef MSDOS
|
||||
temp_name = stringappend (temp_name, src_extension);
|
||||
#endif /* MSDOS */
|
||||
obstack_save (&guard_obstack, temp_name);
|
||||
obstack_free (&guard_obstack, NULL);
|
||||
}
|
||||
|
||||
if (verbose_flag)
|
||||
/* We used to use just .out if spec_name_prefix (-p) was used, but
|
||||
that conflicts with Posix. */
|
||||
obstack_save (&output_obstack,
|
||||
stringappend (short_base_name, EXT_OUTPUT));
|
||||
|
||||
if (graph_flag)
|
||||
obstack_save (&graph_obstack, stringappend (short_base_name, ".vcg"));
|
||||
}
|
||||
|
||||
+7
-12
@@ -33,19 +33,10 @@ extern char *spec_name_prefix;
|
||||
/* File name pfx specified with -b, or 0 if no -b. */
|
||||
extern char *spec_file_prefix;
|
||||
|
||||
/* --verbose. */
|
||||
extern char *spec_verbose_file;
|
||||
|
||||
/* File name specified for the output VCG graph. */
|
||||
extern char *spec_graph_file;
|
||||
|
||||
/* File name specified with --defines. */
|
||||
extern char *spec_defines_file;
|
||||
|
||||
/* Read grammar specifications. */
|
||||
extern FILE *finput;
|
||||
|
||||
|
||||
/* Output all the action code; precise form depends on which parser. */
|
||||
extern struct obstack action_obstack;
|
||||
|
||||
@@ -65,13 +56,17 @@ extern struct obstack guard_obstack;
|
||||
/* The verbose output. */
|
||||
extern struct obstack output_obstack;
|
||||
|
||||
/* The VCG graph output. */
|
||||
extern struct obstack graph_obstack;
|
||||
|
||||
extern char *infile;
|
||||
extern char *attrsfile;
|
||||
|
||||
void open_files PARAMS((void));
|
||||
void close_files PARAMS((void));
|
||||
extern const char *src_extension;
|
||||
extern const char *header_extension;
|
||||
|
||||
void open_files PARAMS((void));
|
||||
|
||||
void compute_output_file_names PARAMS((void));
|
||||
void output_files PARAMS((void));
|
||||
|
||||
FILE *xfopen PARAMS ((const char *name, const char *mode));
|
||||
|
||||
+5
-38
@@ -24,6 +24,8 @@
|
||||
#include "files.h"
|
||||
#include "complain.h"
|
||||
#include "getargs.h"
|
||||
#include "xalloc.h"
|
||||
#include "options.h"
|
||||
|
||||
int debug_flag = 0;
|
||||
int defines_flag = 0;
|
||||
@@ -39,37 +41,6 @@ int graph_flag = 0;
|
||||
const char *skeleton = NULL;
|
||||
|
||||
extern char *program_name;
|
||||
const char *shortopts = "yvgdhrltknVo:b:p:S:";
|
||||
static struct option longopts[] =
|
||||
{
|
||||
/* Operation modes. */
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'V'},
|
||||
{"yacc", no_argument, 0, 'y'},
|
||||
{"fixed-output-files",no_argument, 0, 'y'},
|
||||
|
||||
/* Parser. */
|
||||
{"skeleton", required_argument, 0, 'S'},
|
||||
{"debug", no_argument, 0, 'd'},
|
||||
{"locations", no_argument, &locations_flag, 1},
|
||||
/* was 'a'; apparently unused -wjh */
|
||||
{"name-prefix", required_argument, 0, 'p'},
|
||||
{"no-lines", no_argument, 0, 'l'},
|
||||
{"no-parser", no_argument, 0, 'n'},
|
||||
{"raw", no_argument, 0, 'r'},
|
||||
{"token-table", no_argument, 0, 'k'},
|
||||
|
||||
/* Output. */
|
||||
{"defines", optional_argument, 0, 'd'},
|
||||
{"verbose", no_argument, 0, 'v'},
|
||||
{"file-prefix", required_argument, 0, 'b'},
|
||||
{"output-file", required_argument, 0, 'o'},
|
||||
{"graph", optional_argument, 0, 'g'},
|
||||
|
||||
/* Hidden. */
|
||||
{"statistics", no_argument, &statistics_flag, 1},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
/*---------------------------.
|
||||
| Display the help message. |
|
||||
@@ -118,9 +89,7 @@ Output:\n\
|
||||
-d, --defines also produce a header file\n\
|
||||
-v, --verbose also produce an explanation of the automaton\n\
|
||||
-b, --file-prefix=PREFIX specify a PREFIX for output files\n\
|
||||
-o, --output-file=FILE leave output to FILE\n\
|
||||
-g, --graph also produce a VCG graph description of the \
|
||||
automaton\n"), stream);
|
||||
-o, --output-file=FILE leave output to FILE\n"), stream);
|
||||
putc ('\n', stream);
|
||||
|
||||
fputs (_("\
|
||||
@@ -163,6 +132,7 @@ getargs (int argc, char *argv[])
|
||||
{
|
||||
int c;
|
||||
|
||||
create_long_option_table ();
|
||||
while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != EOF)
|
||||
switch (c)
|
||||
{
|
||||
@@ -183,9 +153,7 @@ getargs (int argc, char *argv[])
|
||||
exit (0);
|
||||
|
||||
case 'g':
|
||||
/* Here, the -g and --graph=FILE options are differentiated. */
|
||||
graph_flag = 1;
|
||||
spec_graph_file = optarg;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
@@ -197,9 +165,7 @@ getargs (int argc, char *argv[])
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
/* Here, the -d and --defines options are differentiated. */
|
||||
defines_flag = 1;
|
||||
spec_defines_file = optarg;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
@@ -240,6 +206,7 @@ getargs (int argc, char *argv[])
|
||||
exit (1);
|
||||
}
|
||||
|
||||
XFREE (longopts);
|
||||
if (optind == argc)
|
||||
{
|
||||
fprintf (stderr, _("%s: no grammar file given\n"), program_name);
|
||||
|
||||
+12
-10
@@ -31,19 +31,21 @@ int nsyms;
|
||||
int ntokens;
|
||||
int nvars;
|
||||
|
||||
short *ritem = NULL;
|
||||
short *rlhs = NULL;
|
||||
short *rrhs = NULL;
|
||||
short *rprec = NULL;
|
||||
short *rprecsym = NULL;
|
||||
short *sprec = NULL;
|
||||
short *rassoc = NULL;
|
||||
short *sassoc = NULL;
|
||||
short *token_translations = NULL;
|
||||
short *rline = NULL;
|
||||
short *ritem;
|
||||
short *rlhs;
|
||||
short *rrhs;
|
||||
short *rprec;
|
||||
short *rprecsym;
|
||||
short *sprec;
|
||||
short *rassoc;
|
||||
short *sassoc;
|
||||
short *token_translations;
|
||||
short *rline;
|
||||
|
||||
int start_symbol;
|
||||
|
||||
int translations;
|
||||
|
||||
int max_user_token_number;
|
||||
|
||||
int semantic_parser;
|
||||
|
||||
+5
-1
@@ -107,9 +107,13 @@ typedef enum
|
||||
|
||||
/* token translation table: indexed by a token number as returned by
|
||||
the user's yylex routine, it yields the internal token number used
|
||||
by the parser and throughout bison. */
|
||||
by the parser and throughout bison. If translations is zero, the
|
||||
translation table is not used because the two kinds of token
|
||||
numbers are the same. (It is noted in reader.c that "Nowadays
|
||||
translations is always set to 1...") */
|
||||
|
||||
extern short *token_translations;
|
||||
extern int translations;
|
||||
extern int max_user_token_number;
|
||||
|
||||
/* SEMANTIC_PARSER is nonzero if the input file says to use the hairy
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "system.h"
|
||||
#include "types.h"
|
||||
#include "LR0.h"
|
||||
#include "xalloc.h"
|
||||
#include "gram.h"
|
||||
#include "complain.h"
|
||||
#include "lalr.h"
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
#include "files.h"
|
||||
#include "getopt.h" /* for optarg */
|
||||
#include "symtab.h"
|
||||
#include "options.h"
|
||||
#include "lex.h"
|
||||
#include "xalloc.h"
|
||||
#include "complain.h"
|
||||
#include "gram.h"
|
||||
#include "quote.h"
|
||||
@@ -35,24 +37,15 @@ const char *token_buffer = NULL;
|
||||
bucket *symval;
|
||||
int numval;
|
||||
|
||||
/* these two describe a token to be reread */
|
||||
static token_t unlexed = tok_undef;
|
||||
/* by the next call to lex */
|
||||
static bucket *unlexed_symval = NULL;
|
||||
static int unlexed; /* these two describe a token to be reread */
|
||||
static bucket *unlexed_symval; /* by the next call to lex */
|
||||
|
||||
|
||||
void
|
||||
lex_init (void)
|
||||
init_lex (void)
|
||||
{
|
||||
obstack_init (&token_obstack);
|
||||
unlexed = tok_undef;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lex_free (void)
|
||||
{
|
||||
obstack_free (&token_obstack, NULL);
|
||||
unlexed = -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -364,12 +357,12 @@ lex (void)
|
||||
/* Just to make sure. */
|
||||
token_buffer = NULL;
|
||||
|
||||
if (unlexed != tok_undef)
|
||||
if (unlexed >= 0)
|
||||
{
|
||||
token_t res = unlexed;
|
||||
symval = unlexed_symval;
|
||||
unlexed = tok_undef;
|
||||
return res;
|
||||
c = unlexed;
|
||||
unlexed = -1;
|
||||
return c;
|
||||
}
|
||||
|
||||
c = skip_white_space ();
|
||||
@@ -425,6 +418,7 @@ lex (void)
|
||||
case '\'':
|
||||
/* parse the literal token and compute character code in code */
|
||||
|
||||
translations = -1;
|
||||
{
|
||||
int code, discode;
|
||||
|
||||
@@ -452,6 +446,7 @@ lex (void)
|
||||
case '\"':
|
||||
/* parse the literal string token and treat as an identifier */
|
||||
|
||||
translations = -1;
|
||||
{
|
||||
int code; /* ignored here */
|
||||
|
||||
@@ -515,67 +510,34 @@ lex (void)
|
||||
}
|
||||
}
|
||||
|
||||
/* the following table dictates the action taken for the various %
|
||||
directives. A set_flag value causes the named flag to be set. A
|
||||
retval action returns the code. */
|
||||
struct percent_table_struct
|
||||
{
|
||||
const char *name;
|
||||
void *set_flag;
|
||||
token_t retval;
|
||||
};
|
||||
/* This function is a strcmp, which doesn't differentiate `-' and `_'
|
||||
chars. */
|
||||
|
||||
struct percent_table_struct percent_table[] =
|
||||
static int
|
||||
option_strcmp (const char *left, const char *right)
|
||||
{
|
||||
{ "token", NULL, tok_token },
|
||||
{ "term", NULL, tok_token },
|
||||
{ "nterm", NULL, tok_nterm },
|
||||
{ "type", NULL, tok_type },
|
||||
{ "guard", NULL, tok_guard },
|
||||
{ "union", NULL, tok_union },
|
||||
{ "expect", NULL, tok_expect },
|
||||
{ "thong", NULL, tok_thong },
|
||||
{ "start", NULL, tok_start },
|
||||
{ "left", NULL, tok_left },
|
||||
{ "right", NULL, tok_right },
|
||||
{ "nonassoc", NULL, tok_nonassoc },
|
||||
{ "binary", NULL, tok_nonassoc },
|
||||
{ "prec", NULL, tok_prec },
|
||||
{ "locations", &locations_flag, tok_noop }, /* -l */
|
||||
{ "no_lines", &no_lines_flag, tok_noop }, /* -l */
|
||||
{ "raw", NULL, tok_obsolete }, /* -r */
|
||||
{ "token_table", &token_table_flag, tok_noop }, /* -k */
|
||||
{ "yacc", &yacc_flag, tok_noop }, /* -y */
|
||||
{ "fixed_output_files",&yacc_flag, tok_noop }, /* -y */
|
||||
{ "defines", &defines_flag, tok_noop }, /* -d */
|
||||
{ "no_parser", &no_parser_flag, tok_noop }, /* -n */
|
||||
{ "graph", &graph_flag, tok_noop }, /* -g */
|
||||
#if 0
|
||||
/* For the time being, this is not enabled yet, while it's possible
|
||||
though, since we use obstacks. The only risk is with semantic
|
||||
parsers which will output an `include' of an output file: be sure
|
||||
that the name included is indeed the name of the output file. */
|
||||
{ "output_file", &spec_outfile, tok_setopt }, /* -o */
|
||||
{ "file_prefix", &spec_file_prefix, tok_setopt }, /* -b */
|
||||
{ "name_prefix", &spec_name_prefix, tok_setopt }, /* -p */
|
||||
#endif
|
||||
{ "verbose", &verbose_flag, tok_noop }, /* -v */
|
||||
{ "debug", &debug_flag, tok_noop }, /* -t */
|
||||
{ "semantic_parser", &semantic_parser, tok_noop },
|
||||
{ "pure_parser", &pure_parser, tok_noop },
|
||||
const unsigned char *l, *r;
|
||||
int c;
|
||||
|
||||
{ NULL, NULL, tok_illegal}
|
||||
};
|
||||
assert(left != NULL && right != NULL);
|
||||
l = (const unsigned char *)left;
|
||||
r = (const unsigned char *)right;
|
||||
while (((c = *l - *r++) == 0 && *l != '\0')
|
||||
|| ((*l == '-' || *l == '_') && (*r == '_' || *r == '-')))
|
||||
l++;
|
||||
return c;
|
||||
}
|
||||
|
||||
/* Parse a token which starts with %.
|
||||
Assumes the % has already been read and discarded. */
|
||||
|
||||
token_t
|
||||
int
|
||||
parse_percent_token (void)
|
||||
{
|
||||
struct percent_table_struct *tx;
|
||||
int c;
|
||||
const struct option_table_struct *tx;
|
||||
|
||||
int c = getc (finput);
|
||||
c = getc (finput);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
@@ -607,8 +569,8 @@ parse_percent_token (void)
|
||||
obstack_1grow (&token_obstack, '%');
|
||||
while (isalpha (c) || c == '_' || c == '-')
|
||||
{
|
||||
if (c == '-')
|
||||
c = '_';
|
||||
if (c == '_')
|
||||
c = '-';
|
||||
obstack_1grow (&token_obstack, c);
|
||||
c = getc (finput);
|
||||
}
|
||||
@@ -618,8 +580,9 @@ parse_percent_token (void)
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
|
||||
/* table lookup % directive */
|
||||
for (tx = percent_table; tx->name; tx++)
|
||||
if (strcmp (token_buffer + 1, tx->name) == 0)
|
||||
for (tx = option_table; tx->name; tx++)
|
||||
if ((tx->access == opt_percent || tx->access == opt_both)
|
||||
&& option_strcmp (token_buffer + 1, tx->name) == 0)
|
||||
break;
|
||||
|
||||
if (tx->set_flag)
|
||||
@@ -628,7 +591,7 @@ parse_percent_token (void)
|
||||
return tok_noop;
|
||||
}
|
||||
|
||||
switch (tx->retval)
|
||||
switch (tx->ret_val)
|
||||
{
|
||||
case tok_setopt:
|
||||
*((char **) (tx->set_flag)) = optarg;
|
||||
@@ -638,11 +601,7 @@ parse_percent_token (void)
|
||||
case tok_obsolete:
|
||||
fatal (_("`%s' is no longer supported"), token_buffer);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Other cases do not apply here. */
|
||||
break;
|
||||
}
|
||||
|
||||
return tx->retval;
|
||||
return tx->ret_val;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
/* Token-type codes. */
|
||||
typedef enum token_e
|
||||
{
|
||||
tok_undef, /* Not defined. Used to initial token_t vars. */
|
||||
tok_eof,
|
||||
tok_identifier,
|
||||
tok_comma,
|
||||
@@ -48,6 +47,10 @@ typedef enum token_e
|
||||
tok_number,
|
||||
tok_expect,
|
||||
tok_thong,
|
||||
tok_hdrext,
|
||||
tok_srcext,
|
||||
tok_define,
|
||||
tok_skel,
|
||||
tok_noop,
|
||||
tok_setopt,
|
||||
tok_illegal,
|
||||
@@ -58,8 +61,7 @@ extern const char *token_buffer;
|
||||
extern bucket *symval;
|
||||
extern int numval;
|
||||
|
||||
void lex_init PARAMS ((void));
|
||||
void lex_free PARAMS ((void));
|
||||
void init_lex PARAMS ((void));
|
||||
int skip_white_space PARAMS ((void));
|
||||
void unlex PARAMS ((int));
|
||||
void read_type_name PARAMS ((FILE *fin));
|
||||
@@ -71,6 +73,6 @@ void read_type_name PARAMS ((FILE *fin));
|
||||
|
||||
token_t lex PARAMS ((void));
|
||||
|
||||
token_t parse_percent_token PARAMS ((void));
|
||||
int parse_percent_token PARAMS ((void));
|
||||
|
||||
#endif /* !LEX_H_ */
|
||||
|
||||
+7
-21
@@ -34,7 +34,7 @@
|
||||
#include "LR0.h"
|
||||
#include "conflicts.h"
|
||||
#include "print_graph.h"
|
||||
#include "symtab.h"
|
||||
#include "muscle_tab.h"
|
||||
|
||||
/* The name this program was run with, for messages. */
|
||||
char *program_name;
|
||||
@@ -52,6 +52,7 @@ main (int argc, char *argv[])
|
||||
lineno = 0;
|
||||
getargs (argc, argv);
|
||||
|
||||
muscle_init ();
|
||||
open_files ();
|
||||
|
||||
/* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE
|
||||
@@ -80,38 +81,23 @@ main (int argc, char *argv[])
|
||||
lookahead is not enough to disambiguate the parsing. In file
|
||||
conflicts. Also resolve s/r conflicts based on precedence
|
||||
declarations. */
|
||||
solve_conflicts ();
|
||||
|
||||
/* Output file names. */
|
||||
compute_output_file_names ();
|
||||
|
||||
/* Stop if there were errors, to avoid trashing previous output
|
||||
files. */
|
||||
if (complain_message_count)
|
||||
exit (1);
|
||||
initialize_conflicts ();
|
||||
|
||||
/* Print information about results, if requested. */
|
||||
print_results ();
|
||||
|
||||
/* Output the VCG graph. */
|
||||
/* Output the VCG graph. */
|
||||
print_graph ();
|
||||
|
||||
/* Output the tables and the parser to ftable. In file output. */
|
||||
output ();
|
||||
|
||||
/* Free the symbol table data structure. */
|
||||
free_symtab ();
|
||||
|
||||
lex_free ();
|
||||
|
||||
/* Close the input files. */
|
||||
close_files ();
|
||||
|
||||
free_conflicts ();
|
||||
finalize_conflicts ();
|
||||
free_nullable ();
|
||||
free_derives ();
|
||||
|
||||
output_files ();
|
||||
if (!complain_message_count)
|
||||
output_files ();
|
||||
|
||||
exit (complain_message_count ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
/* 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;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/* 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_ */
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "system.h"
|
||||
#include "types.h"
|
||||
#include "gram.h"
|
||||
#include "xalloc.h"
|
||||
#include "nullable.h"
|
||||
|
||||
char *nullable = NULL;
|
||||
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
/* 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;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/* 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_ */
|
||||
+221
-446
@@ -94,6 +94,7 @@
|
||||
#include "obstack.h"
|
||||
#include "quotearg.h"
|
||||
#include "getargs.h"
|
||||
#include "xalloc.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "LR0.h"
|
||||
@@ -102,226 +103,74 @@
|
||||
#include "lalr.h"
|
||||
#include "reader.h"
|
||||
#include "conflicts.h"
|
||||
#include "muscle_tab.h"
|
||||
|
||||
extern void berror PARAMS((const char *));
|
||||
|
||||
|
||||
|
||||
static int nvectors;
|
||||
static int nentries;
|
||||
static short **froms = NULL;
|
||||
static short **tos = NULL;
|
||||
static short *tally = NULL;
|
||||
static short *width = NULL;
|
||||
static short *actrow = NULL;
|
||||
static short *state_count = NULL;
|
||||
static short *order = NULL;
|
||||
static short *base = NULL;
|
||||
static short *pos = NULL;
|
||||
static short *table = NULL;
|
||||
static short *check = NULL;
|
||||
static short **froms;
|
||||
static short **tos;
|
||||
static short *tally;
|
||||
static short *width;
|
||||
static short *actrow;
|
||||
static short *state_count;
|
||||
static short *order;
|
||||
static short *base;
|
||||
static short *pos;
|
||||
static short *table;
|
||||
static short *check;
|
||||
static int lowzero;
|
||||
static int high;
|
||||
|
||||
struct obstack muscle_obstack;
|
||||
struct obstack output_obstack;
|
||||
|
||||
/* FIXME. */
|
||||
|
||||
static inline void
|
||||
output_short_or_char_table (struct obstack *oout,
|
||||
const char *comment,
|
||||
const char *type,
|
||||
const char *table_name,
|
||||
short *short_table,
|
||||
short first_value,
|
||||
short begin, short end)
|
||||
output_table_data (struct obstack *oout,
|
||||
short *table_data,
|
||||
short first,
|
||||
short begin,
|
||||
short end)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
if (comment)
|
||||
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++)
|
||||
int i;
|
||||
int j = 1;
|
||||
|
||||
obstack_fgrow1 (oout, "%6d", first);
|
||||
for (i = begin; i < end; ++i)
|
||||
{
|
||||
obstack_1grow (oout, ',');
|
||||
|
||||
if (j >= 10)
|
||||
{
|
||||
obstack_sgrow (oout, "\n ");
|
||||
j = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
j++;
|
||||
}
|
||||
|
||||
obstack_fgrow1 (oout, "%6d", short_table[i]);
|
||||
++j;
|
||||
obstack_fgrow1 (oout, "%6d", table_data[i]);
|
||||
}
|
||||
|
||||
obstack_sgrow (oout, "\n};\n");
|
||||
obstack_1grow (oout, 0);
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
output_token_translations (void)
|
||||
{
|
||||
obstack_sgrow (&table_obstack, "\
|
||||
\n\
|
||||
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
|
||||
|
||||
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);
|
||||
|
||||
XFREE (token_translations);
|
||||
output_table_data (&output_obstack, token_translations,
|
||||
0, 1, max_user_token_number + 1);
|
||||
muscle_insert ("translate", obstack_finish (&output_obstack));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
output_gram (void)
|
||||
{
|
||||
/* With the ordinary parser,
|
||||
yyprhs and yyrhs are needed only for yydebug. */
|
||||
/* 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);
|
||||
|
||||
output_table_data (&output_obstack, rrhs,
|
||||
0, 1, nrules + 1);
|
||||
muscle_insert ("prhs", obstack_finish (&output_obstack));
|
||||
|
||||
{
|
||||
size_t yyrhs_size = 1;
|
||||
short *yyrhs, *sp;
|
||||
@@ -334,21 +183,26 @@ output_gram (void)
|
||||
for (sp = ritem + 1, i = 1; *sp; ++sp, ++i)
|
||||
yyrhs[i] = *sp > 0 ? *sp : 0;
|
||||
|
||||
output_short_table (&table_obstack, NULL, "yyrhs", yyrhs,
|
||||
ritem[0], 1, yyrhs_size);
|
||||
output_table_data (&output_obstack, yyrhs,
|
||||
ritem[0], 1, yyrhs_size);
|
||||
muscle_insert ("rhs", obstack_finish (&output_obstack));
|
||||
|
||||
XFREE (yyrhs);
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (!semantic_parser && !no_parser_flag)
|
||||
obstack_sgrow (&table_obstack, "\n#endif\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
output_stos (void)
|
||||
{
|
||||
output_short_table (&table_obstack, NULL, "yystos", accessing_symbol,
|
||||
0, 1, nstates);
|
||||
output_table_data (&output_obstack, accessing_symbol,
|
||||
0, 1, nstates);
|
||||
muscle_insert ("stos", obstack_finish (&output_obstack));
|
||||
}
|
||||
|
||||
|
||||
@@ -359,34 +213,9 @@ output_rule_data (void)
|
||||
int j;
|
||||
short *short_tab = NULL;
|
||||
|
||||
obstack_sgrow (&table_obstack, "\n\
|
||||
#if YYDEBUG != 0\n");
|
||||
|
||||
output_short_table (&table_obstack,
|
||||
"YYRLINE[YYN] -- source line where rule number YYN was defined",
|
||||
"yyrline", rline,
|
||||
0, 1, nrules + 1);
|
||||
|
||||
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 ");
|
||||
output_table_data (&output_obstack, rline,
|
||||
0, 1, nrules + 1);
|
||||
muscle_insert ("rline", obstack_finish (&output_obstack));
|
||||
|
||||
j = 0;
|
||||
for (i = 0; i < nsyms; i++)
|
||||
@@ -409,80 +238,61 @@ output_rule_data (void)
|
||||
|
||||
if (j + strsize > 75)
|
||||
{
|
||||
obstack_sgrow (&table_obstack, "\n ");
|
||||
obstack_sgrow (&output_obstack, "\n ");
|
||||
j = 2;
|
||||
}
|
||||
|
||||
obstack_1grow (&table_obstack, '\"');
|
||||
obstack_1grow (&output_obstack, '\"');
|
||||
for (p = tags[i]; p && *p; p++)
|
||||
{
|
||||
if (*p == '"' || *p == '\\')
|
||||
obstack_fgrow1 (&table_obstack, "\\%c", *p);
|
||||
obstack_fgrow1 (&output_obstack, "\\%c", *p);
|
||||
else if (*p == '\n')
|
||||
obstack_sgrow (&table_obstack, "\\n");
|
||||
obstack_sgrow (&output_obstack, "\\n");
|
||||
else if (*p == '\t')
|
||||
obstack_sgrow (&table_obstack, "\\t");
|
||||
obstack_sgrow (&output_obstack, "\\t");
|
||||
else if (*p == '\b')
|
||||
obstack_sgrow (&table_obstack, "\\b");
|
||||
obstack_sgrow (&output_obstack, "\\b");
|
||||
else if (*p < 040 || *p >= 0177)
|
||||
obstack_fgrow1 (&table_obstack, "\\%03o", *p);
|
||||
obstack_fgrow1 (&output_obstack, "\\%03o", *p);
|
||||
else
|
||||
obstack_1grow (&table_obstack, *p);
|
||||
obstack_1grow (&output_obstack, *p);
|
||||
}
|
||||
|
||||
obstack_sgrow (&table_obstack, "\", ");
|
||||
obstack_sgrow (&output_obstack, "\", ");
|
||||
j += strsize;
|
||||
}
|
||||
/* add a NULL entry to list of tokens */
|
||||
obstack_sgrow (&table_obstack, "NULL\n};\n");
|
||||
obstack_sgrow (&output_obstack, "NULL");
|
||||
|
||||
if (!token_table_flag && !no_parser_flag)
|
||||
obstack_sgrow (&table_obstack, "#endif\n\n");
|
||||
/* Finish table and store. */
|
||||
obstack_1grow (&output_obstack, 0);
|
||||
muscle_insert ("tname", obstack_finish (&output_obstack));
|
||||
|
||||
/* Output YYTOKNUM. */
|
||||
if (token_table_flag)
|
||||
{
|
||||
output_short_table (&table_obstack,
|
||||
"YYTOKNUM[YYLEX] -- Index in YYTNAME corresponding to YYLEX",
|
||||
"yytoknum", user_toknums,
|
||||
0, 1, ntokens + 1);
|
||||
}
|
||||
output_table_data (&output_obstack, user_toknums,
|
||||
0, 1, ntokens + 1);
|
||||
muscle_insert ("toknum", obstack_finish (&output_obstack));
|
||||
|
||||
/* Output YYR1. */
|
||||
output_short_table (&table_obstack,
|
||||
"YYR1[YYN] -- Symbol number of symbol that rule YYN derives",
|
||||
"yyr1", rlhs,
|
||||
0, 1, nrules + 1);
|
||||
output_table_data (&output_obstack, rlhs,
|
||||
0, 1, nrules + 1);
|
||||
muscle_insert ("r1", obstack_finish (&output_obstack));
|
||||
XFREE (rlhs + 1);
|
||||
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
/* Output YYR2. */
|
||||
short_tab = XMALLOC (short, nrules + 1);
|
||||
for (i = 1; i < nrules; i++)
|
||||
short_tab[i] = rrhs[i + 1] - rrhs[i] - 1;
|
||||
short_tab[nrules] = nitems - rrhs[nrules] - 1;
|
||||
output_short_table (&table_obstack,
|
||||
"YYR2[YYN] -- Number of symbols composing right hand side of rule YYN",
|
||||
"yyr2", short_tab,
|
||||
0, 1, nrules + 1);
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
output_table_data (&output_obstack, short_tab,
|
||||
0, 1, nrules + 1);
|
||||
muscle_insert ("r2", obstack_finish (&output_obstack));
|
||||
XFREE (short_tab);
|
||||
|
||||
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 |
|
||||
| token in specified state. The value returned is used as the |
|
||||
@@ -723,15 +533,12 @@ token_actions (void)
|
||||
yydefact[i] = action_row (i);
|
||||
save_row (i);
|
||||
}
|
||||
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');
|
||||
output_table_data (&output_obstack, yydefact,
|
||||
yydefact[0], 1, nstates);
|
||||
muscle_insert ("defact", obstack_finish (&output_obstack));
|
||||
|
||||
XFREE (actrow);
|
||||
XFREE (yydefact);
|
||||
}
|
||||
|
||||
@@ -858,10 +665,9 @@ static void
|
||||
goto_actions (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
short *yydefgoto = XMALLOC (short, nsyms - ntokens);
|
||||
state_count = XCALLOC (short, nstates);
|
||||
|
||||
state_count = XCALLOC (short, nstates);
|
||||
for (i = ntokens; i < nsyms; ++i)
|
||||
{
|
||||
int default_state = default_goto (i);
|
||||
@@ -869,8 +675,9 @@ goto_actions (void)
|
||||
yydefgoto[i - ntokens] = default_state;
|
||||
}
|
||||
|
||||
output_short_table (&table_obstack, NULL, "yydefgoto", yydefgoto,
|
||||
yydefgoto[0], 1, nsyms - ntokens);
|
||||
output_table_data (&output_obstack, yydefgoto,
|
||||
yydefgoto[0], 1, nsyms - ntokens);
|
||||
muscle_insert ("defgoto", obstack_finish (&output_obstack));
|
||||
|
||||
XFREE (state_count);
|
||||
XFREE (yydefgoto);
|
||||
@@ -1072,13 +879,15 @@ pack_table (void)
|
||||
static void
|
||||
output_base (void)
|
||||
{
|
||||
output_short_table (&table_obstack, NULL, "yypact", base,
|
||||
base[0], 1, nstates);
|
||||
/* Output pact. */
|
||||
output_table_data (&output_obstack, base,
|
||||
base[0], 1, nstates);
|
||||
muscle_insert ("pact", obstack_finish (&output_obstack));
|
||||
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
output_short_table (&table_obstack, NULL, "yypgoto", base,
|
||||
base[nstates], nstates + 1, nvectors);
|
||||
/* Output pgoto. */
|
||||
output_table_data (&output_obstack, base,
|
||||
base[nstates], nstates + 1, nvectors);
|
||||
muscle_insert ("pgoto", obstack_finish (&output_obstack));
|
||||
|
||||
XFREE (base);
|
||||
}
|
||||
@@ -1087,9 +896,9 @@ output_base (void)
|
||||
static void
|
||||
output_table (void)
|
||||
{
|
||||
obstack_fgrow1 (&table_obstack, "\n\n#define\tYYLAST\t\t%d\n\n\n", high);
|
||||
output_short_table (&table_obstack, NULL, "yytable", table,
|
||||
table[0], 1, high + 1);
|
||||
output_table_data (&output_obstack, table,
|
||||
table[0], 1, high + 1);
|
||||
muscle_insert ("table", obstack_finish (&output_obstack));
|
||||
XFREE (table);
|
||||
}
|
||||
|
||||
@@ -1097,8 +906,9 @@ output_table (void)
|
||||
static void
|
||||
output_check (void)
|
||||
{
|
||||
output_short_table (&table_obstack, NULL, "yycheck", check,
|
||||
check[0], 1, high + 1);
|
||||
output_table_data (&output_obstack, check,
|
||||
check[0], 1, high + 1);
|
||||
muscle_insert ("check", obstack_finish (&output_obstack));
|
||||
XFREE (check);
|
||||
}
|
||||
|
||||
@@ -1130,29 +940,81 @@ output_actions (void)
|
||||
|
||||
sort_actions ();
|
||||
pack_table ();
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
output_base ();
|
||||
output_table ();
|
||||
obstack_1grow (&table_obstack, '\n');
|
||||
|
||||
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
|
||||
output_parser (void)
|
||||
output_parser (const char *skel_filename, struct obstack *oout)
|
||||
{
|
||||
int c;
|
||||
FILE *fskel;
|
||||
size_t line;
|
||||
int actions_dumped = 0;
|
||||
|
||||
if (pure_parser)
|
||||
obstack_sgrow (&table_obstack, "#define YYPURE 1\n\n");
|
||||
fskel = xfopen (skel_filename, "r");
|
||||
|
||||
/* Loop over lines in the standard parser file. */
|
||||
/* New output code. */
|
||||
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 (semantic_parser)
|
||||
@@ -1160,130 +1022,7 @@ output_parser (void)
|
||||
else
|
||||
skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
|
||||
}
|
||||
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);
|
||||
output_parser (skeleton, &table_obstack);
|
||||
}
|
||||
|
||||
|
||||
@@ -1301,6 +1040,55 @@ 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. |
|
||||
@@ -1309,42 +1097,29 @@ free_itemsets (void)
|
||||
void
|
||||
output (void)
|
||||
{
|
||||
/* 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");
|
||||
obstack_init (&output_obstack);
|
||||
|
||||
free_itemsets ();
|
||||
output_defines ();
|
||||
|
||||
output_token_translations ();
|
||||
/* if (semantic_parser) */
|
||||
/* This is now unconditional because debugging printouts can use it. */
|
||||
output_gram ();
|
||||
|
||||
XFREE (ritem);
|
||||
if (semantic_parser)
|
||||
output_stos ();
|
||||
output_rule_data ();
|
||||
output_actions ();
|
||||
if (!no_parser_flag)
|
||||
output_parser ();
|
||||
output_program ();
|
||||
|
||||
#if 0
|
||||
if (!no_parser_flag) */
|
||||
#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,12 +21,6 @@
|
||||
#ifndef 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. */
|
||||
void output PARAMS ((void));
|
||||
|
||||
|
||||
+114
-90
@@ -20,6 +20,7 @@
|
||||
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "LR0.h"
|
||||
@@ -34,17 +35,17 @@
|
||||
static void
|
||||
print_token (int extnum, int token)
|
||||
{
|
||||
fprintf (out, _(" type %d is %s\n"), extnum, tags[token]);
|
||||
obstack_fgrow2 (&output_obstack, _(" type %d is %s\n"), extnum, tags[token]);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*--------------------------------.
|
||||
/*================================\
|
||||
| Report information on a state. |
|
||||
`--------------------------------*/
|
||||
\================================*/
|
||||
|
||||
static void
|
||||
print_core (FILE *out, int state)
|
||||
print_core (int state)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
@@ -67,30 +68,30 @@ print_core (FILE *out, int state)
|
||||
sp++;
|
||||
|
||||
rule = -(*sp);
|
||||
fprintf (out, " %s -> ", tags[rlhs[rule]]);
|
||||
obstack_fgrow1 (&output_obstack, " %s -> ", tags[rlhs[rule]]);
|
||||
|
||||
for (sp = ritem + rrhs[rule]; sp < sp1; sp++)
|
||||
{
|
||||
fprintf (out, "%s ", tags[*sp]);
|
||||
obstack_fgrow1 (&output_obstack, "%s ", tags[*sp]);
|
||||
}
|
||||
|
||||
fputc ('.', out);
|
||||
obstack_1grow (&output_obstack, '.');
|
||||
|
||||
while (*sp > 0)
|
||||
{
|
||||
fprintf (out, " %s", tags[*sp]);
|
||||
obstack_fgrow1 (&output_obstack, " %s", tags[*sp]);
|
||||
sp++;
|
||||
}
|
||||
|
||||
fprintf (out, _(" (rule %d)"), rule);
|
||||
fputc ('\n', out);
|
||||
obstack_fgrow1 (&output_obstack, _(" (rule %d)"), rule);
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
|
||||
fputc ('\n', out);
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
|
||||
static void
|
||||
print_actions (FILE *out, int state)
|
||||
print_actions (int state)
|
||||
{
|
||||
int i;
|
||||
int k;
|
||||
@@ -108,9 +109,9 @@ print_actions (FILE *out, int state)
|
||||
if (!shiftp && !redp)
|
||||
{
|
||||
if (final_state == state)
|
||||
fprintf (out, _(" $default\taccept\n"));
|
||||
obstack_sgrow (&output_obstack, _(" $default\taccept\n"));
|
||||
else
|
||||
fprintf (out, _(" NO ACTIONS\n"));
|
||||
obstack_sgrow (&output_obstack, _(" NO ACTIONS\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -128,16 +129,16 @@ print_actions (FILE *out, int state)
|
||||
if (ISVAR (symbol))
|
||||
break;
|
||||
if (symbol == 0) /* I.e. strcmp(tags[symbol],"$")==0 */
|
||||
fprintf (out,
|
||||
_(" $ \tgo to state %d\n"), state1);
|
||||
obstack_fgrow1 (&output_obstack,
|
||||
_(" $ \tgo to state %d\n"), state1);
|
||||
else
|
||||
fprintf (out,
|
||||
_(" %-4s\tshift, and go to state %d\n"),
|
||||
tags[symbol], state1);
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_(" %-4s\tshift, and go to state %d\n"),
|
||||
tags[symbol], state1);
|
||||
}
|
||||
|
||||
if (i > 0)
|
||||
fputc ('\n', out);
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -156,20 +157,21 @@ print_actions (FILE *out, int state)
|
||||
if (!errp->errs[j])
|
||||
continue;
|
||||
symbol = errp->errs[j];
|
||||
fprintf (out, _(" %-4s\terror (nonassociative)\n"),
|
||||
obstack_fgrow1 (&output_obstack, _(" %-4s\terror (nonassociative)\n"),
|
||||
tags[symbol]);
|
||||
}
|
||||
|
||||
if (j > 0)
|
||||
fputc ('\n', out);
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
|
||||
if (consistent[state] && redp)
|
||||
{
|
||||
rule = redp->rules[0];
|
||||
symbol = rlhs[rule];
|
||||
fprintf (out, _(" $default\treduce using rule %d (%s)\n\n"),
|
||||
rule, tags[symbol]);
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_(" $default\treduce using rule %d (%s)\n\n"),
|
||||
rule, tags[symbol]);
|
||||
}
|
||||
else if (redp)
|
||||
{
|
||||
@@ -184,41 +186,42 @@ print_actions (FILE *out, int state)
|
||||
continue;
|
||||
state1 = shiftp->shifts[i];
|
||||
symbol = accessing_symbol[state1];
|
||||
fprintf (out, _(" %-4s\tgo to state %d\n"),
|
||||
tags[symbol], state1);
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_(" %-4s\tgo to state %d\n"),
|
||||
tags[symbol], state1);
|
||||
}
|
||||
|
||||
fputc ('\n', out);
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_state (FILE *out, int state)
|
||||
print_state (int state)
|
||||
{
|
||||
fputs ("\n\n", out);
|
||||
fprintf (out, _("state %d"), state);
|
||||
fputs ("\n\n", out);
|
||||
print_core (out, state);
|
||||
print_actions (out, state);
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_fgrow1 (&output_obstack, _("state %d"), state);
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
print_core (state);
|
||||
print_actions (state);
|
||||
}
|
||||
|
||||
/*-----------------------------------------.
|
||||
| Print information on the whole grammar. |
|
||||
`-----------------------------------------*/
|
||||
|
||||
#define END_TEST(End) \
|
||||
do { \
|
||||
if (column + strlen(buffer) > (End)) \
|
||||
{ \
|
||||
fprintf (out, "%s\n ", buffer); \
|
||||
column = 3; \
|
||||
buffer[0] = 0; \
|
||||
} \
|
||||
#define END_TEST(End) \
|
||||
do { \
|
||||
if (column + strlen(buffer) > (End)) \
|
||||
{ \
|
||||
obstack_fgrow1 (&output_obstack, "%s\n ", buffer); \
|
||||
column = 3; \
|
||||
buffer[0] = 0; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
static void
|
||||
print_grammar (FILE *out)
|
||||
print_grammar (void)
|
||||
{
|
||||
int i, j;
|
||||
short *rule;
|
||||
@@ -226,46 +229,78 @@ print_grammar (FILE *out)
|
||||
int column = 0;
|
||||
|
||||
/* rule # : LHS -> RHS */
|
||||
fprintf (out, "\n%s\n", _("Grammar"));
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
obstack_sgrow (&output_obstack, _("Grammar"));
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
for (i = 1; i <= nrules; i++)
|
||||
/* Don't print rules disabled in reduce_grammar_tables. */
|
||||
if (rlhs[i] >= 0)
|
||||
{
|
||||
fprintf (out, _("rule %-4d %s ->"), i, tags[rlhs[i]]);
|
||||
obstack_fgrow2 (&output_obstack,
|
||||
_("rule %-4d %s ->"), i, tags[rlhs[i]]);
|
||||
rule = &ritem[rrhs[i]];
|
||||
if (*rule > 0)
|
||||
while (*rule > 0)
|
||||
fprintf (out, " %s", tags[*rule++]);
|
||||
obstack_fgrow1 (&output_obstack, " %s", tags[*rule++]);
|
||||
else
|
||||
fprintf (out, " /* %s */\n", _("empty"));
|
||||
obstack_sgrow (&output_obstack, _(" /* empty */"));
|
||||
obstack_1grow (&output_obstack, '\n');
|
||||
}
|
||||
|
||||
/* TERMINAL (type #) : rule #s terminal is on RHS */
|
||||
fprintf (out, "\n%s\n\n", _("Terminals, with rules where they appear"));
|
||||
fprintf (out, "%s (-1)\n", tags[0]);
|
||||
obstack_sgrow (&output_obstack, "\n");
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Terminals, with rules where they appear"));
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
obstack_fgrow1 (&output_obstack, "%s (-1)\n", tags[0]);
|
||||
if (translations)
|
||||
{
|
||||
for (i = 0; i <= max_user_token_number; i++)
|
||||
if (token_translations[i] != 2)
|
||||
{
|
||||
buffer[0] = 0;
|
||||
column = strlen (tags[token_translations[i]]);
|
||||
obstack_sgrow (&output_obstack, tags[token_translations[i]]);
|
||||
END_TEST (50);
|
||||
sprintf (buffer, " (%d)", i);
|
||||
|
||||
for (i = 0; i <= max_user_token_number; i++)
|
||||
if (token_translations[i] != 2)
|
||||
{
|
||||
buffer[0] = 0;
|
||||
column = strlen (tags[token_translations[i]]);
|
||||
fputs (tags[token_translations[i]], out);
|
||||
END_TEST (50);
|
||||
sprintf (buffer, " (%d)", i);
|
||||
for (j = 1; j <= nrules; j++)
|
||||
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
|
||||
if (*rule == token_translations[i])
|
||||
{
|
||||
END_TEST (65);
|
||||
sprintf (buffer + strlen (buffer), " %d", j);
|
||||
break;
|
||||
}
|
||||
obstack_fgrow1 (&output_obstack, "%s\n", buffer);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 1; i < ntokens; i++)
|
||||
{
|
||||
buffer[0] = 0;
|
||||
column = strlen (tags[i]);
|
||||
obstack_sgrow (&output_obstack, tags[i]);
|
||||
END_TEST (50);
|
||||
sprintf (buffer, " (%d)", i);
|
||||
|
||||
for (j = 1; j <= nrules; j++)
|
||||
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
|
||||
if (*rule == token_translations[i])
|
||||
{
|
||||
END_TEST (65);
|
||||
sprintf (buffer + strlen (buffer), " %d", j);
|
||||
break;
|
||||
}
|
||||
fprintf (out, "%s\n", buffer);
|
||||
}
|
||||
for (j = 1; j <= nrules; j++)
|
||||
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
|
||||
if (*rule == i)
|
||||
{
|
||||
END_TEST (65);
|
||||
sprintf (buffer + strlen (buffer), " %d", j);
|
||||
break;
|
||||
}
|
||||
obstack_fgrow1 (&output_obstack, "%s\n", buffer);
|
||||
}
|
||||
}
|
||||
|
||||
fprintf (out, "\n%s\n\n",
|
||||
_("Nonterminals, with rules where they appear"));
|
||||
obstack_sgrow (&output_obstack, "\n");
|
||||
obstack_sgrow (&output_obstack,
|
||||
_("Nonterminals, with rules where they appear"));
|
||||
obstack_sgrow (&output_obstack, "\n\n");
|
||||
for (i = ntokens; i <= nsyms - 1; i++)
|
||||
{
|
||||
int left_count = 0, right_count = 0;
|
||||
@@ -283,7 +318,7 @@ print_grammar (FILE *out)
|
||||
}
|
||||
|
||||
buffer[0] = 0;
|
||||
fputs (tags[i], out);
|
||||
obstack_sgrow (&output_obstack, tags[i]);
|
||||
column = strlen (tags[i]);
|
||||
sprintf (buffer, " (%d)", i);
|
||||
END_TEST (0);
|
||||
@@ -318,33 +353,22 @@ print_grammar (FILE *out)
|
||||
}
|
||||
}
|
||||
}
|
||||
fprintf (out, "%s\n", buffer);
|
||||
obstack_fgrow1 (&output_obstack, "%s\n", buffer);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_results (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (any_conflicts)
|
||||
print_conflicts ();
|
||||
|
||||
if (verbose_flag)
|
||||
{
|
||||
int i;
|
||||
print_grammar ();
|
||||
|
||||
/* We used to use just .out if spec_name_prefix (-p) was used, but
|
||||
that conflicts with Posix. */
|
||||
FILE *out = xfopen (spec_verbose_file, "w");
|
||||
|
||||
size_t size = obstack_object_size (&output_obstack);
|
||||
fwrite (obstack_finish (&output_obstack), 1, size, out);
|
||||
|
||||
if (any_conflicts)
|
||||
print_conflicts (out);
|
||||
|
||||
print_grammar (out);
|
||||
|
||||
for (i = 0; i < nstates; i++)
|
||||
print_state (out, i);
|
||||
|
||||
xfclose (out);
|
||||
}
|
||||
obstack_free (&output_obstack, NULL);
|
||||
if (verbose_flag)
|
||||
for (i = 0; i < nstates; i++)
|
||||
print_state (i);
|
||||
}
|
||||
|
||||
+25
-29
@@ -19,6 +19,7 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "LR0.h"
|
||||
@@ -34,9 +35,8 @@
|
||||
#include "quotearg.h"
|
||||
|
||||
static graph_t graph;
|
||||
static FILE *fgraph = NULL;
|
||||
|
||||
static size_t node_output_size = 0;
|
||||
static unsigned node_output_size = 0;
|
||||
|
||||
/* Return an unambiguous printable representated, allocated in slot 0,
|
||||
for NAME, suitable for C strings. */
|
||||
@@ -136,7 +136,7 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
|
||||
if (state > state1)
|
||||
edge.type = back_edge;
|
||||
open_edge (&edge, fgraph);
|
||||
open_edge (&edge, &graph_obstack);
|
||||
/* The edge source is the current node. */
|
||||
edge.sourcename = node_name;
|
||||
sprintf (buff, "%d", state1);
|
||||
@@ -145,8 +145,8 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
/* FIXME: Be aware that quote uses static memory. The string
|
||||
must be output immediately (which is the case here). */
|
||||
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
|
||||
output_edge (&edge, fgraph);
|
||||
close_edge (fgraph);
|
||||
output_edge (&edge, &graph_obstack);
|
||||
close_edge (&graph_obstack);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -198,14 +198,14 @@ print_actions (int state, const char *node_name, struct obstack *node_obstack)
|
||||
symbol = accessing_symbol[state1];
|
||||
|
||||
new_edge (&edge);
|
||||
open_edge (&edge, fgraph);
|
||||
open_edge (&edge, &graph_obstack);
|
||||
edge.sourcename = node_name;
|
||||
sprintf (buff, "%d", state1);
|
||||
edge.targetname = buff;
|
||||
edge.color = red;
|
||||
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
|
||||
output_edge (&edge, fgraph);
|
||||
close_edge (fgraph);
|
||||
output_edge (&edge, &graph_obstack);
|
||||
close_edge (&graph_obstack);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -223,6 +223,9 @@ print_state (int state)
|
||||
new_node (&node); /* Set node attributs default value. */
|
||||
sprintf (name, "%d", state);
|
||||
node.title = name; /* Give a name to the node. */
|
||||
open_node (&node_obstack);
|
||||
/* Output a VCG formatted attributs list. */
|
||||
output_node (&node, &node_obstack);
|
||||
|
||||
{
|
||||
/* Here we begin to compute the node label. */
|
||||
@@ -238,17 +241,15 @@ print_state (int state)
|
||||
print_actions (state, node.title, &node_obstack);
|
||||
|
||||
obstack_sgrow (&node_obstack, "\"\n"); /* Close Label. */
|
||||
}
|
||||
|
||||
open_node (fgraph);
|
||||
/* Output a VCG formatted attributs list. */
|
||||
output_node (&node, fgraph);
|
||||
/* Save the node label. */
|
||||
fwrite (obstack_base (&node_obstack),
|
||||
obstack_object_size (&node_obstack), 1, fgraph);
|
||||
close_node (fgraph);
|
||||
|
||||
obstack_free (&node_obstack, 0);
|
||||
|
||||
close_node (&node_obstack);
|
||||
}
|
||||
|
||||
/* `obstack_cat' NODE_OBSTACK to GRAPH_OBSTACK. */
|
||||
obstack_grow (&graph_obstack,
|
||||
obstack_base (&node_obstack),
|
||||
obstack_object_size (&node_obstack));
|
||||
obstack_finish (&node_obstack);
|
||||
}
|
||||
|
||||
|
||||
@@ -256,13 +257,9 @@ void
|
||||
print_graph (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
if (!graph_flag)
|
||||
return;
|
||||
|
||||
/* Output file. */
|
||||
fgraph = xfopen (spec_graph_file, "w");
|
||||
|
||||
new_graph (&graph);
|
||||
|
||||
#if 0
|
||||
@@ -271,7 +268,7 @@ print_graph (void)
|
||||
#endif
|
||||
|
||||
graph.display_edge_labels = yes;
|
||||
graph.layoutalgorithm = normal;
|
||||
graph.layoutalgorithm = 0;
|
||||
|
||||
graph.port_sharing = no;
|
||||
graph.finetuning = yes;
|
||||
@@ -282,14 +279,13 @@ print_graph (void)
|
||||
graph.crossing_weight = median;
|
||||
|
||||
/* Output graph options. */
|
||||
open_graph (fgraph);
|
||||
output_graph (&graph, fgraph);
|
||||
open_graph (&graph_obstack);
|
||||
output_graph (&graph, &graph_obstack);
|
||||
|
||||
for (i = 0; i < nstates; i++)
|
||||
/* Output nodes & edges. */
|
||||
print_state (i);
|
||||
|
||||
/* Close graph. */
|
||||
close_graph (&graph, fgraph);
|
||||
xfclose (fgraph);
|
||||
close_graph (&graph, &graph_obstack);
|
||||
}
|
||||
|
||||
+226
-165
@@ -26,13 +26,16 @@
|
||||
#include "quote.h"
|
||||
#include "getargs.h"
|
||||
#include "files.h"
|
||||
#include "xalloc.h"
|
||||
#include "symtab.h"
|
||||
#include "options.h"
|
||||
#include "lex.h"
|
||||
#include "gram.h"
|
||||
#include "complain.h"
|
||||
#include "output.h"
|
||||
#include "reader.h"
|
||||
#include "conflicts.h"
|
||||
#include "muscle_tab.h"
|
||||
|
||||
/* Number of slots allocated (but not necessarily used yet) in `rline' */
|
||||
static int rline_allocated;
|
||||
@@ -155,11 +158,12 @@ get_type_name (int n, symbol_list * rule)
|
||||
`------------------------------------------------------------*/
|
||||
|
||||
static inline void
|
||||
copy_string (FILE *fin, struct obstack *oout, int match)
|
||||
copy_string2 (FILE *fin, struct obstack *oout, int match, int store)
|
||||
{
|
||||
int c;
|
||||
|
||||
obstack_1grow (oout, match);
|
||||
if (store)
|
||||
obstack_1grow (oout, match);
|
||||
|
||||
c = getc (fin);
|
||||
|
||||
@@ -191,9 +195,30 @@ copy_string (FILE *fin, struct obstack *oout, int match)
|
||||
c = getc (fin);
|
||||
}
|
||||
|
||||
obstack_1grow (oout, c);
|
||||
if (store)
|
||||
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 |
|
||||
@@ -402,9 +427,14 @@ copy_definition (void)
|
||||
/* -1 while reading a character if prev char was %. */
|
||||
int after_percent;
|
||||
|
||||
#if 0
|
||||
if (!no_lines_flag)
|
||||
obstack_fgrow2 (&attrs_obstack, "#line %d %s\n",
|
||||
lineno, quotearg_style (c_quoting_style, infile));
|
||||
{
|
||||
obstack_fgrow2 (&attrs_obstack, muscle_find ("linef"),
|
||||
lineno, quotearg_style (c_quoting_style,
|
||||
muscle_find("filename")));
|
||||
}
|
||||
#endif
|
||||
|
||||
after_percent = 0;
|
||||
|
||||
@@ -461,8 +491,8 @@ copy_definition (void)
|
||||
static void
|
||||
parse_token_decl (symbol_class what_is, symbol_class what_is_not)
|
||||
{
|
||||
token_t token = tok_undef;
|
||||
char *typename = NULL;
|
||||
token_t token = 0;
|
||||
char *typename = 0;
|
||||
|
||||
/* The symbol being defined. */
|
||||
struct bucket *symbol = NULL;
|
||||
@@ -511,6 +541,7 @@ parse_token_decl (symbol_class what_is, symbol_class what_is_not)
|
||||
/* symbol and symval combined are only one symbol */
|
||||
nsyms--;
|
||||
}
|
||||
translations = 1;
|
||||
symbol = NULL;
|
||||
}
|
||||
else if (token == tok_identifier)
|
||||
@@ -535,6 +566,7 @@ parse_token_decl (symbol_class what_is, symbol_class what_is_not)
|
||||
else if (symbol && token == tok_number)
|
||||
{
|
||||
symbol->user_token_number = numval;
|
||||
translations = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -676,6 +708,7 @@ parse_assoc_decl (associativity assoc)
|
||||
if (prev == tok_identifier)
|
||||
{
|
||||
symval->user_token_number = numval;
|
||||
translations = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -702,9 +735,9 @@ token_buffer);
|
||||
|
||||
|
||||
/*--------------------------------------------------------------.
|
||||
| Copy the union declaration into ATTRS_OBSTACK (and fdefines), |
|
||||
| where it is made into the definition of YYSTYPE, the type of |
|
||||
| elements of the parser value stack. |
|
||||
| Copy the union declaration into the stype muscle |
|
||||
| (and fdefines), where it is made into the definition of |
|
||||
| YYSTYPE, the type of elements of the parser value stack. |
|
||||
`--------------------------------------------------------------*/
|
||||
|
||||
static void
|
||||
@@ -712,19 +745,18 @@ parse_union_decl (void)
|
||||
{
|
||||
int c;
|
||||
int count = 0;
|
||||
struct obstack union_obstack;
|
||||
|
||||
if (typed)
|
||||
complain (_("multiple %s declarations"), "%union");
|
||||
|
||||
typed = 1;
|
||||
|
||||
if (!no_lines_flag)
|
||||
obstack_fgrow2 (&attrs_obstack, "\n#line %d %s\n",
|
||||
lineno, quotearg_style (c_quoting_style, infile));
|
||||
else
|
||||
if (no_lines_flag)
|
||||
obstack_1grow (&attrs_obstack, '\n');
|
||||
|
||||
obstack_sgrow (&attrs_obstack, "typedef union");
|
||||
|
||||
obstack_init (&union_obstack);
|
||||
obstack_sgrow (&union_obstack, "union");
|
||||
if (defines_flag)
|
||||
obstack_sgrow (&defines_obstack, "typedef union");
|
||||
|
||||
@@ -732,14 +764,9 @@ parse_union_decl (void)
|
||||
|
||||
while (c != EOF)
|
||||
{
|
||||
|
||||
/* If C contains '/', it is output by copy_comment (). */
|
||||
if (c != '/')
|
||||
{
|
||||
obstack_1grow (&attrs_obstack, c);
|
||||
if (defines_flag)
|
||||
obstack_1grow (&defines_obstack, c);
|
||||
}
|
||||
obstack_1grow (&union_obstack, c);
|
||||
if (defines_flag)
|
||||
obstack_1grow (&defines_obstack, c);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
@@ -748,7 +775,7 @@ parse_union_decl (void)
|
||||
break;
|
||||
|
||||
case '/':
|
||||
copy_comment2 (finput, &defines_obstack, &attrs_obstack);
|
||||
copy_comment2 (finput, &defines_obstack, &union_obstack);
|
||||
break;
|
||||
|
||||
case '{':
|
||||
@@ -761,19 +788,21 @@ parse_union_decl (void)
|
||||
count--;
|
||||
if (count <= 0)
|
||||
{
|
||||
obstack_sgrow (&attrs_obstack, " YYSTYPE;\n");
|
||||
if (defines_flag)
|
||||
obstack_sgrow (&defines_obstack, " YYSTYPE;\n");
|
||||
/* JF don't choke on trailing semi */
|
||||
c = skip_white_space ();
|
||||
if (c != ';')
|
||||
ungetc (c, finput);
|
||||
obstack_1grow (&union_obstack, 0);
|
||||
muscle_insert ("stype", obstack_finish (&union_obstack));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
c = getc (finput);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -823,6 +852,7 @@ parse_thong_decl (void)
|
||||
char *typename = 0;
|
||||
int usrtoknum;
|
||||
|
||||
translations = 1;
|
||||
token = lex (); /* fetch typename or first token */
|
||||
if (token == tok_typename)
|
||||
{
|
||||
@@ -874,60 +904,88 @@ parse_thong_decl (void)
|
||||
nsyms--;
|
||||
}
|
||||
|
||||
/* FIXME. */
|
||||
|
||||
/*-----------------------------------------------------------------------------.
|
||||
| Parse a double quoted parameter. It was used for %{source,header}_extension. |
|
||||
| For the moment, It is not used since extension features have been removed. |
|
||||
`-----------------------------------------------------------------------------*/
|
||||
|
||||
#if 0
|
||||
|
||||
static const char *
|
||||
parse_dquoted_param (const char *from)
|
||||
static void
|
||||
parse_muscle_decl (void)
|
||||
{
|
||||
char buff[32];
|
||||
int c;
|
||||
int i;
|
||||
int ch = ungetc (skip_white_space (), finput);
|
||||
char* muscle_key;
|
||||
char* muscle_value;
|
||||
|
||||
c = skip_white_space ();
|
||||
|
||||
if (c != '"')
|
||||
/* Read key. */
|
||||
if (!isalpha (ch) && ch != '_')
|
||||
{
|
||||
ungetc (c, finput);
|
||||
complain (_("invalid %s declaration"), from);
|
||||
return NULL;
|
||||
complain (_("invalid %s declaration"), "%define");
|
||||
skip_to_char ('%');
|
||||
return;
|
||||
}
|
||||
|
||||
c = getc (finput);
|
||||
for (i = 0; (c >= '!') && (c <= '~'); i++)
|
||||
copy_identifier (finput, &muscle_obstack);
|
||||
obstack_1grow (&muscle_obstack, 0);
|
||||
muscle_key = obstack_finish (&muscle_obstack);
|
||||
|
||||
/* Read value. */
|
||||
ch = skip_white_space ();
|
||||
if (ch != '"')
|
||||
{
|
||||
if (c == '"')
|
||||
break;
|
||||
|
||||
if (c == '\\')
|
||||
ungetc (ch, finput);
|
||||
if (ch != EOF)
|
||||
{
|
||||
c = getc (finput);
|
||||
if ((c < '!') && (c > '~'))
|
||||
break;
|
||||
complain (_("invalid %s declaration"), "%define");
|
||||
skip_to_char ('%');
|
||||
return;
|
||||
}
|
||||
|
||||
buff[i] = c;
|
||||
c = getc (finput);
|
||||
else
|
||||
fatal (_("Premature EOF after %s"), "\"");
|
||||
}
|
||||
buff[i] = '\0';
|
||||
copy_string2 (finput, &muscle_obstack, '"', 0);
|
||||
obstack_1grow (&muscle_obstack, 0);
|
||||
muscle_value = obstack_finish (&muscle_obstack);
|
||||
|
||||
if (c != '"')
|
||||
{
|
||||
ungetc (c, finput);
|
||||
complain (_("invalid %s declaration"), from);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return xstrdup (buff);
|
||||
/* Store the (key, value) pair in the environment. */
|
||||
muscle_insert (muscle_key, muscle_value);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*----------------------------------.
|
||||
| Parse what comes after %skeleton. |
|
||||
`----------------------------------*/
|
||||
|
||||
void
|
||||
parse_skel_decl (void)
|
||||
{
|
||||
/* Complete with parse_dquoted_param () on the CVS branch 1.29. */
|
||||
}
|
||||
|
||||
/*------------------------------------------.
|
||||
| Parse what comes after %header_extension. |
|
||||
`------------------------------------------*/
|
||||
|
||||
static void
|
||||
parse_header_extension_decl (void)
|
||||
{
|
||||
char buff[32];
|
||||
|
||||
if (header_extension)
|
||||
complain (_("multiple %%header_extension declarations"));
|
||||
fscanf (finput, "%s", buff);
|
||||
header_extension = xstrdup (buff);
|
||||
}
|
||||
|
||||
/*------------------------------------------.
|
||||
| Parse what comes after %source_extension. |
|
||||
`------------------------------------------*/
|
||||
|
||||
static void
|
||||
parse_source_extension_decl (void)
|
||||
{
|
||||
char buff[32];
|
||||
|
||||
if (src_extension)
|
||||
complain (_("multiple %%source_extension declarations"));
|
||||
fscanf (finput, "%s", buff);
|
||||
src_extension = xstrdup (buff);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------.
|
||||
| Read from finput until `%%' is seen. Discard the `%%'. Handle |
|
||||
@@ -998,6 +1056,22 @@ read_declarations (void)
|
||||
parse_assoc_decl (non_assoc);
|
||||
break;
|
||||
|
||||
case tok_hdrext:
|
||||
parse_header_extension_decl ();
|
||||
break;
|
||||
|
||||
case tok_srcext:
|
||||
parse_source_extension_decl ();
|
||||
break;
|
||||
|
||||
case tok_define:
|
||||
parse_muscle_decl ();
|
||||
break;
|
||||
|
||||
case tok_skel:
|
||||
parse_skel_decl ();
|
||||
break;
|
||||
|
||||
case tok_noop:
|
||||
break;
|
||||
|
||||
@@ -1036,14 +1110,13 @@ copy_action (symbol_list *rule, int stack_offset)
|
||||
if (semantic_parser)
|
||||
stack_offset = 0;
|
||||
|
||||
sprintf (buf, "\ncase %d:\n", nrules);
|
||||
obstack_grow (&action_obstack, buf, strlen (buf));
|
||||
obstack_fgrow1 (&action_obstack, "\ncase %d:\n", nrules);
|
||||
|
||||
if (!no_lines_flag)
|
||||
{
|
||||
sprintf (buf, "#line %d %s\n",
|
||||
lineno, quotearg_style (c_quoting_style, infile));
|
||||
obstack_grow (&action_obstack, buf, strlen (buf));
|
||||
obstack_fgrow2 (&action_obstack, muscle_find ("linef"),
|
||||
lineno, quotearg_style (c_quoting_style,
|
||||
muscle_find ("filename")));
|
||||
}
|
||||
obstack_1grow (&action_obstack, '{');
|
||||
|
||||
@@ -1129,8 +1202,9 @@ copy_guard (symbol_list *rule, int stack_offset)
|
||||
|
||||
obstack_fgrow1 (&guard_obstack, "\ncase %d:\n", nrules);
|
||||
if (!no_lines_flag)
|
||||
obstack_fgrow2 (&guard_obstack, "#line %d %s\n",
|
||||
lineno, quotearg_style (c_quoting_style, infile));
|
||||
obstack_fgrow2 (&guard_obstack, muscle_find ("linef"),
|
||||
lineno, quotearg_style (c_quoting_style,
|
||||
muscle_find ("filename")));
|
||||
obstack_1grow (&guard_obstack, '{');
|
||||
|
||||
count = 0;
|
||||
@@ -1581,22 +1655,6 @@ readgram (void)
|
||||
if (nrules == 0)
|
||||
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. */
|
||||
|
||||
for (bp = firstsymbol; bp; bp = bp->next)
|
||||
@@ -1611,6 +1669,25 @@ readgram (void)
|
||||
|
||||
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 |
|
||||
@@ -1652,14 +1729,11 @@ output_token_defines (struct obstack *oout)
|
||||
continue;
|
||||
|
||||
obstack_fgrow2 (oout, "# define\t%s\t%d\n",
|
||||
symbol, bp->user_token_number);
|
||||
symbol,
|
||||
(translations ? bp->user_token_number : bp->value));
|
||||
if (semantic_parser)
|
||||
/* FIXME: This is certainly dead wrong, and should be just as
|
||||
above. --akim. */
|
||||
obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value);
|
||||
}
|
||||
|
||||
obstack_1grow (oout, '\n');
|
||||
}
|
||||
|
||||
|
||||
@@ -1672,14 +1746,12 @@ output_token_defines (struct obstack *oout)
|
||||
static void
|
||||
packsymbols (void)
|
||||
{
|
||||
bucket *bp = NULL;
|
||||
bucket *bp;
|
||||
int tokno = 1;
|
||||
int i, j;
|
||||
int i;
|
||||
int last_user_token_number;
|
||||
static char DOLLAR[] = "$";
|
||||
|
||||
/* int lossage = 0; JF set but not used */
|
||||
|
||||
tags = XCALLOC (char *, nsyms + 1);
|
||||
tags[0] = DOLLAR;
|
||||
user_toknums = XCALLOC (short, nsyms + 1);
|
||||
@@ -1740,7 +1812,7 @@ packsymbols (void)
|
||||
|
||||
if (bp->class == token_sym)
|
||||
{
|
||||
if (!bp->user_token_number)
|
||||
if (translations && !(bp->user_token_number))
|
||||
bp->user_token_number = ++last_user_token_number;
|
||||
if (bp->user_token_number > max_user_token_number)
|
||||
max_user_token_number = bp->user_token_number;
|
||||
@@ -1750,33 +1822,45 @@ packsymbols (void)
|
||||
user_toknums[bp->value] = bp->user_token_number;
|
||||
sprec[bp->value] = bp->prec;
|
||||
sassoc[bp->value] = bp->assoc;
|
||||
|
||||
}
|
||||
|
||||
token_translations = XCALLOC (short, max_user_token_number + 1);
|
||||
|
||||
/* initialize all entries for literal tokens to 2, the internal
|
||||
token number for $undefined., which represents all invalid
|
||||
inputs. */
|
||||
for (j = 0; j <= max_user_token_number; j++)
|
||||
token_translations[j] = 2;
|
||||
|
||||
for (bp = firstsymbol; bp; bp = bp->next)
|
||||
if (translations)
|
||||
{
|
||||
if (bp->value >= ntokens)
|
||||
continue; /* non-terminal */
|
||||
if (bp->user_token_number == SALIAS)
|
||||
continue;
|
||||
if (token_translations[bp->user_token_number] != 2)
|
||||
complain (_("tokens %s and %s both assigned number %d"),
|
||||
tags[token_translations[bp->user_token_number]],
|
||||
bp->tag, bp->user_token_number);
|
||||
token_translations[bp->user_token_number] = bp->value;
|
||||
int j;
|
||||
|
||||
token_translations = XCALLOC (short, max_user_token_number + 1);
|
||||
|
||||
/* initialize all entries for literal tokens to 2, the internal
|
||||
token number for $undefined., which represents all invalid
|
||||
inputs. */
|
||||
for (j = 0; j <= max_user_token_number; j++)
|
||||
token_translations[j] = 2;
|
||||
|
||||
for (bp = firstsymbol; bp; bp = bp->next)
|
||||
{
|
||||
if (bp->value >= ntokens)
|
||||
continue; /* non-terminal */
|
||||
if (bp->user_token_number == SALIAS)
|
||||
continue;
|
||||
if (token_translations[bp->user_token_number] != 2)
|
||||
complain (_("tokens %s and %s both assigned number %d"),
|
||||
tags[token_translations[bp->user_token_number]],
|
||||
bp->tag, bp->user_token_number);
|
||||
token_translations[bp->user_token_number] = bp->value;
|
||||
}
|
||||
}
|
||||
|
||||
error_token_number = errtoken->value;
|
||||
|
||||
output_token_defines (&output_obstack);
|
||||
obstack_1grow (&output_obstack, 0);
|
||||
muscle_insert ("tokendef", obstack_finish (&output_obstack));
|
||||
|
||||
#if 0
|
||||
if (!no_parser_flag)
|
||||
output_token_defines (&table_obstack);
|
||||
#endif
|
||||
|
||||
if (startval->class == unknown_sym)
|
||||
fatal (_("the start symbol %s is undefined"), startval->tag);
|
||||
@@ -1896,6 +1980,15 @@ reader (void)
|
||||
start_flag = 0;
|
||||
startval = NULL; /* start symbol not specified yet. */
|
||||
|
||||
#if 0
|
||||
/* initially assume token number translation not needed. */
|
||||
translations = 0;
|
||||
#endif
|
||||
/* Nowadays translations is always set to 1, since we give `error' a
|
||||
user-token-number to satisfy the Posix demand for YYERRCODE==256.
|
||||
*/
|
||||
translations = 1;
|
||||
|
||||
nsyms = 1;
|
||||
nvars = 0;
|
||||
nrules = 0;
|
||||
@@ -1911,15 +2004,20 @@ reader (void)
|
||||
|
||||
grammar = NULL;
|
||||
|
||||
lex_init ();
|
||||
init_lex ();
|
||||
lineno = 1;
|
||||
|
||||
/* Initialize the muscle obstack. */
|
||||
obstack_init (&muscle_obstack);
|
||||
|
||||
/* Initialize the symbol table. */
|
||||
tabinit ();
|
||||
|
||||
/* Construct the error token */
|
||||
errtoken = getsym ("error");
|
||||
errtoken->class = token_sym;
|
||||
errtoken->user_token_number = 256; /* Value specified by POSIX. */
|
||||
|
||||
/* Construct a token that represents all undefined literal tokens.
|
||||
It is always token number 2. */
|
||||
undeftoken = getsym ("$undefined.");
|
||||
@@ -1929,60 +2027,23 @@ reader (void)
|
||||
/* Read the declaration section. Copy %{ ... %} groups to
|
||||
TABLE_OBSTACK and FDEFINES file. Also notice any %token, %left,
|
||||
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 ();
|
||||
/* Start writing the guard and action files, if they are needed. */
|
||||
output_headers ();
|
||||
/* Read in the grammar, build grammar in list form. Write out
|
||||
guards and actions. */
|
||||
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,
|
||||
write its type into the .tab.h file. */
|
||||
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");
|
||||
write its type into the .tab.h file.
|
||||
This is no longer need with header skeleton. */
|
||||
|
||||
/* Assign the symbols their symbol numbers. Write #defines for the
|
||||
token symbols into FDEFINES if requested. */
|
||||
packsymbols ();
|
||||
/* Convert the grammar into the format described in gram.h. */
|
||||
packgram ();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------.
|
||||
| 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");
|
||||
/* Free the symbol table data structure since symbols are now all
|
||||
referred to by symbol number. */
|
||||
free_symtab ();
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,10 +30,10 @@
|
||||
extern void reader PARAMS ((void));
|
||||
|
||||
|
||||
extern void reader_output_yylsp PARAMS ((struct obstack *));
|
||||
|
||||
extern int lineno;
|
||||
extern char **tags;
|
||||
extern short *user_toknums;
|
||||
|
||||
extern struct obstack muscle_obstack;
|
||||
|
||||
#endif /* !READER_H_ */
|
||||
|
||||
+5
-2
@@ -29,6 +29,7 @@
|
||||
#include "getargs.h"
|
||||
#include "files.h"
|
||||
#include "gram.h"
|
||||
#include "xalloc.h"
|
||||
#include "complain.h"
|
||||
#include "reduce.h"
|
||||
#include "reader.h"
|
||||
@@ -116,7 +117,7 @@ static void
|
||||
useless_nonterminals (void)
|
||||
{
|
||||
BSet Np, Ns;
|
||||
int i;
|
||||
int i, n;
|
||||
|
||||
/* N is set as built. Np is set being built this iteration. P is
|
||||
set of all productions which have a RHS all in N. */
|
||||
@@ -139,6 +140,7 @@ useless_nonterminals (void)
|
||||
saved to be used when finding useful productions: only
|
||||
productions in this set will appear in the final grammar. */
|
||||
|
||||
n = 0;
|
||||
while (1)
|
||||
{
|
||||
for (i = WORDSIZE (nvars) - 1; i >= 0; i--)
|
||||
@@ -169,7 +171,7 @@ static void
|
||||
inaccessable_symbols (void)
|
||||
{
|
||||
BSet Vp, Vs, Pp;
|
||||
int i;
|
||||
int i, n;
|
||||
short t;
|
||||
rule r;
|
||||
|
||||
@@ -205,6 +207,7 @@ inaccessable_symbols (void)
|
||||
|
||||
SETBIT (V, start_symbol);
|
||||
|
||||
n = 0;
|
||||
while (1)
|
||||
{
|
||||
for (i = WORDSIZE (nsyms) - 1; i >= 0; i--)
|
||||
|
||||
+1
-1
@@ -20,6 +20,7 @@
|
||||
|
||||
|
||||
#include "system.h"
|
||||
#include "xalloc.h"
|
||||
#include "symtab.h"
|
||||
#include "gram.h"
|
||||
|
||||
@@ -142,7 +143,6 @@ free_symtab (void)
|
||||
if (bp->type_name)
|
||||
XFREE (bp->type_name);
|
||||
#endif
|
||||
XFREE (bp->tag);
|
||||
XFREE (bp);
|
||||
bp = bptmp;
|
||||
}
|
||||
|
||||
+6
-16
@@ -73,7 +73,7 @@ extern int errno;
|
||||
# define PARAMS(p) ()
|
||||
#endif
|
||||
|
||||
# include "xalloc.h"
|
||||
|
||||
|
||||
/*---------------------.
|
||||
| Missing prototypes. |
|
||||
@@ -143,6 +143,8 @@ size_t strnlen PARAMS ((const char *s, size_t maxlen));
|
||||
# define LOCALEDIR "/usr/local/share/locale"
|
||||
#endif
|
||||
|
||||
#endif /* BISON_SYSTEM_H */
|
||||
|
||||
|
||||
/*-----------.
|
||||
| Booleans. |
|
||||
@@ -159,9 +161,9 @@ typedef int bool;
|
||||
| Obstacks. |
|
||||
`-----------*/
|
||||
|
||||
# define obstack_chunk_alloc xmalloc
|
||||
# define obstack_chunk_free free
|
||||
# include "obstack.h"
|
||||
#define obstack_chunk_alloc xmalloc
|
||||
#define obstack_chunk_free free
|
||||
#include "obstack.h"
|
||||
|
||||
#define obstack_sgrow(Obs, Str) \
|
||||
obstack_grow (Obs, Str, strlen (Str))
|
||||
@@ -262,15 +264,3 @@ do { \
|
||||
# define BISON_HAIRY "c:/usr/local/lib/bison.hairy"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------.
|
||||
| Debugging the memory allocator. |
|
||||
`---------------------------------*/
|
||||
|
||||
# if WITH_DMALLOC
|
||||
# define DMALLOC_FUNC_CHECK
|
||||
# include <dmalloc.h>
|
||||
# endif /* WITH_DMALLOC */
|
||||
|
||||
#endif /* BISON_SYSTEM_H */
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "system.h"
|
||||
#include "vcg.h"
|
||||
#include "vcg_defaults.h"
|
||||
#include "xalloc.h"
|
||||
#include "complain.h"
|
||||
|
||||
/* Initialize a graph with the default values. */
|
||||
void
|
||||
@@ -49,9 +51,6 @@ new_graph (graph_t *g)
|
||||
g->textmode = G_TEXTMODE;
|
||||
g->shape = G_SHAPE;
|
||||
|
||||
g->vertical_order = G_VERTICAL_ORDER;
|
||||
g->horizontal_order = G_HORIZONTAL_ORDER;
|
||||
|
||||
g->xmax = G_XMAX; /* Not output. */
|
||||
g->ymax = G_YMAX; /* Not output. */
|
||||
|
||||
@@ -232,7 +231,8 @@ get_color_str (enum color_e c)
|
||||
case orchid: return "orchid";
|
||||
case black: return "black";
|
||||
default:
|
||||
assert (!"Not a default color.");
|
||||
complain (_("vcg graph: no such color."));
|
||||
return get_color_str(G_COLOR);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -246,7 +246,8 @@ get_textmode_str (enum textmode_e t)
|
||||
case left_justify: return "left_justify";
|
||||
case right_justify: return "right_justify";
|
||||
default:
|
||||
assert (!"Not a text mode.");
|
||||
complain (_("vcg graph: no such text mode"));
|
||||
return get_textmode_str(G_TEXTMODE);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -261,7 +262,8 @@ get_shape_str (enum shape_e s)
|
||||
case ellipse: return "ellipse";
|
||||
case triangle: return "triangle";
|
||||
default:
|
||||
assert (!"Not a shape.");
|
||||
complain (_("vcg graph: no such shape"));
|
||||
return get_shape_str(G_SHAPE);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -286,20 +288,21 @@ get_layoutalgorithm_str (enum layoutalgorithm_e l)
|
||||
case dfs: return "dfs";
|
||||
case tree: return "tree";
|
||||
default:
|
||||
assert (!"Not a layout algorithm.");
|
||||
return "normal";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char *
|
||||
get_decision_str (enum decision_e d)
|
||||
get_decision_str (enum decision_e d, enum decision_e defaults)
|
||||
{
|
||||
switch (d)
|
||||
{
|
||||
case no: return "no";
|
||||
case yes: return "yes";
|
||||
default:
|
||||
assert (!"Either yes nor no.");
|
||||
complain (_("vcg graph: no such decision"));
|
||||
return get_decision_str(defaults, 0);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -314,7 +317,8 @@ get_orientation_str (enum orientation_e o)
|
||||
case left_to_right: return "left_to_right";
|
||||
case right_to_left: return "right_to_left";
|
||||
default:
|
||||
assert (!"Not an orientation.");
|
||||
complain (_("vcg graph: no such an orientation"));
|
||||
return get_orientation_str(G_ORIENTATION);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -328,7 +332,8 @@ get_node_alignement_str (enum alignement_e a)
|
||||
case top: return "top";
|
||||
case bottom: return "bottom";
|
||||
default:
|
||||
assert (!"Not an alignement.");
|
||||
complain (_("vcg graph: no such an alignement"));
|
||||
return get_node_alignement_str(G_NODE_ALIGNEMENT);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -341,7 +346,8 @@ get_arrow_mode_str (enum arrow_mode_e a)
|
||||
case fixed: return "fixed";
|
||||
case free_a: return "free";
|
||||
default:
|
||||
assert (!"Not an arrow mode.");
|
||||
complain (_("vcg graph: no such an arrow mode"));
|
||||
return get_arrow_mode_str(G_ARROW_MODE);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -356,7 +362,8 @@ get_crossing_type_str (enum crossing_type_e c)
|
||||
case barymedian: return "barymedian";
|
||||
case medianbary: return "medianbary";
|
||||
default:
|
||||
assert (!"Not a crossing type.");
|
||||
complain (_("vcg graph: no such crossing_type"));
|
||||
return get_crossing_type_str(G_CROSSING_WEIGHT);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -372,7 +379,8 @@ get_view_str (enum view_e v)
|
||||
case fcfish: return "fcfish";
|
||||
case fpfish: return "fpfish";
|
||||
default:
|
||||
assert (!"Not a view.");
|
||||
complain (_("vcg graph: no such view"));
|
||||
return get_view_str(G_VIEW);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -387,7 +395,8 @@ get_linestyle_str (enum linestyle_e l)
|
||||
case dotted: return "dotted";
|
||||
case invisible: return "invisible";
|
||||
default:
|
||||
assert (!"Not a line style.");
|
||||
complain (_("vcg graph: no such linestyle"));
|
||||
return get_linestyle_str(E_LINESTYLE);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -401,7 +410,8 @@ get_arrowstyle_str (enum arrowstyle_e a)
|
||||
case line: return "line";
|
||||
case none: return "none";
|
||||
default:
|
||||
assert (!"Not an arrow style.");
|
||||
complain (_("vcg graph: no such an arrowstyle"));
|
||||
return get_arrowstyle_str(E_ARROWSTYLE);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -425,461 +435,402 @@ add_edge (graph_t *graph, edge_t *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) |
|
||||
`-------------------------------------*/
|
||||
|
||||
void
|
||||
open_edge(edge_t *edge, FILE *fout)
|
||||
open_edge(edge_t *edge, struct obstack *os)
|
||||
{
|
||||
switch (edge->type)
|
||||
{
|
||||
case normal_edge:
|
||||
fputs ("\tedge: {\n", fout);
|
||||
obstack_sgrow (os, "\tedge: {\n");
|
||||
break;
|
||||
case back_edge:
|
||||
fputs ("\tbackedge: {\n", fout);
|
||||
obstack_sgrow (os, "\tbackedge: {\n");
|
||||
break;
|
||||
case near_edge:
|
||||
fputs ("\tnearedge: {\n", fout);
|
||||
obstack_sgrow (os, "\tnearedge: {\n");
|
||||
break;
|
||||
case bent_near_edge:
|
||||
fputs ("\tbentnearedge: {\n", fout);
|
||||
obstack_sgrow (os, "\tbentnearedge: {\n");
|
||||
break;
|
||||
default:
|
||||
fputs ("\tedge: {\n", fout);
|
||||
obstack_sgrow (os, "\tedge: {\n");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
close_edge(FILE *fout)
|
||||
close_edge(struct obstack *os)
|
||||
{
|
||||
fputs ("\t}\n", fout);
|
||||
obstack_sgrow (os, "\t}\n");
|
||||
}
|
||||
|
||||
void
|
||||
open_node(FILE *fout)
|
||||
open_node(struct obstack *os)
|
||||
{
|
||||
fputs ("\tnode: {\n", fout);
|
||||
obstack_sgrow (os, "\tnode: {\n");
|
||||
}
|
||||
|
||||
void
|
||||
close_node(FILE *fout)
|
||||
close_node(struct obstack *os)
|
||||
{
|
||||
fputs ("\t}\n", fout);
|
||||
obstack_sgrow (os, "\t}\n");
|
||||
}
|
||||
|
||||
void
|
||||
open_graph(FILE *fout)
|
||||
open_graph(struct obstack *os)
|
||||
{
|
||||
fputs ("graph: {\n", fout);
|
||||
obstack_sgrow (os, "graph: {\n");
|
||||
}
|
||||
|
||||
void
|
||||
close_graph(graph_t *graph, FILE *fout)
|
||||
close_graph(graph_t *graph, struct obstack *os)
|
||||
{
|
||||
fputc ('\n', fout);
|
||||
obstack_1grow (os, '\n');
|
||||
|
||||
/* FIXME: Unallocate nodes and edges if required. */
|
||||
{
|
||||
node_t *node;
|
||||
|
||||
for (node = graph->node_list; node; node = node->next)
|
||||
{
|
||||
open_node (fout);
|
||||
output_node (node, fout);
|
||||
close_node (fout);
|
||||
open_node (os);
|
||||
output_node (node, os);
|
||||
close_node (os);
|
||||
}
|
||||
}
|
||||
|
||||
fputc ('\n', fout);
|
||||
obstack_1grow (os, '\n');
|
||||
|
||||
{
|
||||
edge_t *edge;
|
||||
|
||||
for (edge = graph->edge_list; edge; edge = edge->next)
|
||||
{
|
||||
open_edge (edge, fout);
|
||||
output_edge (edge, fout);
|
||||
close_edge (fout);
|
||||
open_edge (edge, os);
|
||||
output_edge (edge, os);
|
||||
close_edge (os);
|
||||
}
|
||||
}
|
||||
|
||||
fputs ("}\n", fout);
|
||||
obstack_sgrow (os, "}\n");
|
||||
}
|
||||
|
||||
/*-------------------------------------------.
|
||||
| Output functions (formatted) in file FOUT |
|
||||
| Output functions (formatted) in obstack os |
|
||||
`-------------------------------------------*/
|
||||
|
||||
void
|
||||
output_node (node_t *node, FILE *fout)
|
||||
output_node (node_t *node, struct obstack *os)
|
||||
{
|
||||
if (node->title != N_TITLE)
|
||||
fprintf (fout, "\t\ttitle:\t\"%s\"\n", node->title);
|
||||
obstack_fgrow1 (os, "\t\ttitle:\t\"%s\"\n", node->title);
|
||||
if (node->label != N_LABEL)
|
||||
fprintf (fout, "\t\tlabel:\t\"%s\"\n", node->label);
|
||||
obstack_fgrow1 (os, "\t\tlabel:\t\"%s\"\n", node->label);
|
||||
|
||||
if ((node->locx != N_LOCX) && (node->locy != N_LOCY))
|
||||
fprintf (fout, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy);
|
||||
obstack_fgrow2 (os, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy);
|
||||
|
||||
if (node->vertical_order != N_VERTICAL_ORDER)
|
||||
fprintf (fout, "\t\tvertical_order:\t%d\n", node->vertical_order);
|
||||
obstack_fgrow1 (os, "\t\tvertical_order:\t%d\n", node->vertical_order);
|
||||
if (node->horizontal_order != N_HORIZONTAL_ORDER)
|
||||
fprintf (fout, "\t\thorizontal_order:\t%d\n", node->horizontal_order);
|
||||
obstack_fgrow1 (os, "\t\thorizontal_order:\t%d\n", node->horizontal_order);
|
||||
|
||||
if (node->width != N_WIDTH)
|
||||
fprintf (fout, "\t\twidth:\t%d\n", node->width);
|
||||
obstack_fgrow1 (os, "\t\twidth:\t%d\n", node->width);
|
||||
if (node->height != N_HEIGHT)
|
||||
fprintf (fout, "\t\theight:\t%d\n", node->height);
|
||||
obstack_fgrow1 (os, "\t\theight:\t%d\n", node->height);
|
||||
|
||||
if (node->shrink != N_SHRINK)
|
||||
fprintf (fout, "\t\tshrink:\t%d\n", node->shrink);
|
||||
obstack_fgrow1 (os, "\t\tshrink:\t%d\n", node->shrink);
|
||||
if (node->stretch != N_STRETCH)
|
||||
fprintf (fout, "\t\tstretch:\t%d\n", node->stretch);
|
||||
obstack_fgrow1 (os, "\t\tstretch:\t%d\n", node->stretch);
|
||||
|
||||
if (node->folding != N_FOLDING)
|
||||
fprintf (fout, "\t\tfolding:\t%d\n", node->folding);
|
||||
obstack_fgrow1 (os, "\t\tfolding:\t%d\n", node->folding);
|
||||
|
||||
if (node->textmode != N_TEXTMODE)
|
||||
fprintf (fout, "\t\ttextmode:\t%s\n",
|
||||
get_textmode_str (node->textmode));
|
||||
obstack_fgrow1 (os, "\t\ttextmode:\t%s\n",
|
||||
get_textmode_str (node->textmode));
|
||||
|
||||
if (node->shape != N_SHAPE)
|
||||
fprintf (fout, "\t\tshape:\t%s\n", get_shape_str (node->shape));
|
||||
obstack_fgrow1 (os, "\t\tshape:\t%s\n", get_shape_str (node->shape));
|
||||
|
||||
if (node->borderwidth != N_BORDERWIDTH)
|
||||
fprintf (fout, "\t\tborderwidth:\t%d\n", node->borderwidth);
|
||||
obstack_fgrow1 (os, "\t\tborderwidth:\t%d\n", node->borderwidth);
|
||||
|
||||
if (node->color != N_COLOR)
|
||||
fprintf (fout, "\t\tcolor:\t%s\n", get_color_str (node->color));
|
||||
obstack_fgrow1 (os, "\t\tcolor:\t%s\n", get_color_str (node->color));
|
||||
if (node->textcolor != N_TEXTCOLOR)
|
||||
fprintf (fout, "\t\ttextcolor:\t%s\n",
|
||||
get_color_str (node->textcolor));
|
||||
obstack_fgrow1 (os, "\t\ttextcolor:\t%s\n",
|
||||
get_color_str (node->textcolor));
|
||||
if (node->bordercolor != N_BORDERCOLOR)
|
||||
fprintf (fout, "\t\tbordercolor:\t%s\n",
|
||||
get_color_str (node->bordercolor));
|
||||
obstack_fgrow1 (os, "\t\tbordercolor:\t%s\n",
|
||||
get_color_str (node->bordercolor));
|
||||
|
||||
if (node->infos[0])
|
||||
fprintf (fout, "\t\tinfo1:\t\"%s\"\n", node->infos[0]);
|
||||
obstack_fgrow1 (os, "\t\tinfo1:\t\"%s\"\n", node->infos[0]);
|
||||
if (node->infos[1])
|
||||
fprintf (fout, "\t\tinfo2:\t\"%s\"\n", node->infos[1]);
|
||||
obstack_fgrow1 (os, "\t\tinfo2:\t\"%s\"\n", node->infos[1]);
|
||||
if (node->infos[2])
|
||||
fprintf (fout, "\t\tinfo3:\t\"%s\"\n", node->infos[2]);
|
||||
obstack_fgrow1 (os, "\t\tinfo3:\t\"%s\"\n", node->infos[2]);
|
||||
}
|
||||
|
||||
void
|
||||
output_edge (edge_t *edge, FILE *fout)
|
||||
output_edge (edge_t *edge, struct obstack *os)
|
||||
{
|
||||
/* FIXME: SOURCENAME and TARGETNAME are mandatory
|
||||
so it has to be fatal not to give these informations. */
|
||||
if (edge->sourcename != E_SOURCENAME)
|
||||
fprintf (fout, "\t\tsourcename:\t\"%s\"\n", edge->sourcename);
|
||||
obstack_fgrow1 (os, "\t\tsourcename:\t\"%s\"\n", edge->sourcename);
|
||||
if (edge->targetname != E_TARGETNAME)
|
||||
fprintf (fout, "\t\ttargetname:\t\"%s\"\n", edge->targetname);
|
||||
obstack_fgrow1 (os, "\t\ttargetname:\t\"%s\"\n", edge->targetname);
|
||||
|
||||
if (edge->label != E_LABEL)
|
||||
fprintf (fout, "\t\tlabel:\t\"%s\"\n", edge->label);
|
||||
obstack_fgrow1 (os, "\t\tlabel:\t\"%s\"\n", edge->label);
|
||||
|
||||
if (edge->linestyle != E_LINESTYLE)
|
||||
fprintf (fout, "\t\tlinestyle:\t\"%s\"\n",
|
||||
get_linestyle_str(edge->linestyle));
|
||||
obstack_fgrow1 (os, "\t\tlinestyle:\t\"%s\"\n",
|
||||
get_linestyle_str(edge->linestyle));
|
||||
|
||||
if (edge->thickness != E_THICKNESS)
|
||||
fprintf (fout, "\t\tthickness:\t%d\n", edge->thickness);
|
||||
obstack_fgrow1 (os, "\t\tthickness:\t%d\n", edge->thickness);
|
||||
if (edge->class != E_CLASS)
|
||||
fprintf (fout, "\t\tclass:\t%d\n", edge->class);
|
||||
obstack_fgrow1 (os, "\t\tclass:\t%d\n", edge->class);
|
||||
|
||||
if (edge->color != E_COLOR)
|
||||
fprintf (fout, "\t\tcolor:\t%s\n", get_color_str (edge->color));
|
||||
obstack_fgrow1 (os, "\t\tcolor:\t%s\n", get_color_str (edge->color));
|
||||
if (edge->color != E_TEXTCOLOR)
|
||||
fprintf (fout, "\t\ttextcolor:\t%s\n",
|
||||
get_color_str (edge->textcolor));
|
||||
obstack_fgrow1 (os, "\t\ttextcolor:\t%s\n",
|
||||
get_color_str (edge->textcolor));
|
||||
if (edge->arrowcolor != E_ARROWCOLOR)
|
||||
fprintf (fout, "\t\tarrowcolor:\t%s\n",
|
||||
get_color_str (edge->arrowcolor));
|
||||
obstack_fgrow1 (os, "\t\tarrowcolor:\t%s\n",
|
||||
get_color_str (edge->arrowcolor));
|
||||
if (edge->backarrowcolor != E_BACKARROWCOLOR)
|
||||
fprintf (fout, "\t\tbackarrowcolor:\t%s\n",
|
||||
get_color_str (edge->backarrowcolor));
|
||||
obstack_fgrow1 (os, "\t\tbackarrowcolor:\t%s\n",
|
||||
get_color_str (edge->backarrowcolor));
|
||||
|
||||
if (edge->arrowsize != E_ARROWSIZE)
|
||||
fprintf (fout, "\t\tarrowsize:\t%d\n", edge->arrowsize);
|
||||
obstack_fgrow1 (os, "\t\tarrowsize:\t%d\n", edge->arrowsize);
|
||||
if (edge->backarrowsize != E_BACKARROWSIZE)
|
||||
fprintf (fout, "\t\tbackarrowsize:\t%d\n", edge->backarrowsize);
|
||||
obstack_fgrow1 (os, "\t\tbackarrowsize:\t%d\n", edge->backarrowsize);
|
||||
|
||||
if (edge->arrowstyle != E_ARROWSTYLE)
|
||||
fprintf (fout, "\t\tarrowstyle:\t%s\n",
|
||||
get_arrowstyle_str(edge->arrowstyle));
|
||||
obstack_fgrow1 (os, "\t\tarrowstyle:\t%s\n",
|
||||
get_arrowstyle_str(edge->arrowstyle));
|
||||
if (edge->backarrowstyle != E_BACKARROWSTYLE)
|
||||
fprintf (fout, "\t\tbackarrowstyle:\t%s\n",
|
||||
get_arrowstyle_str(edge->backarrowstyle));
|
||||
obstack_fgrow1 (os, "\t\tbackarrowstyle:\t%s\n",
|
||||
get_arrowstyle_str(edge->backarrowstyle));
|
||||
|
||||
if (edge->priority != E_PRIORITY)
|
||||
fprintf (fout, "\t\tpriority:\t%d\n", edge->priority);
|
||||
obstack_fgrow1 (os, "\t\tpriority:\t%d\n", edge->priority);
|
||||
if (edge->anchor != E_ANCHOR)
|
||||
fprintf (fout, "\t\tanchor:\t%d\n", edge->anchor);
|
||||
obstack_fgrow1 (os, "\t\tanchor:\t%d\n", edge->anchor);
|
||||
if (edge->horizontal_order != E_HORIZONTAL_ORDER)
|
||||
fprintf (fout, "\t\thorizontal_order:\t%d\n", edge->horizontal_order);
|
||||
obstack_fgrow1 (os, "\t\thorizontal_order:\t%d\n", edge->horizontal_order);
|
||||
}
|
||||
|
||||
void
|
||||
output_graph (graph_t *graph, FILE *fout)
|
||||
output_graph (graph_t *graph, struct obstack *os)
|
||||
{
|
||||
if (graph->title)
|
||||
fprintf (fout, "\ttitle:\t\"%s\"\n", graph->title);
|
||||
obstack_fgrow1 (os, "\ttitle:\t\"%s\"\n", graph->title);
|
||||
if (graph->label)
|
||||
fprintf (fout, "\tlabel:\t\"%s\"\n", graph->label);
|
||||
obstack_fgrow1 (os, "\tlabel:\t\"%s\"\n", graph->label);
|
||||
|
||||
if (graph->infos[0])
|
||||
fprintf (fout, "\tinfo1:\t\"%s\"\n", graph->infos[0]);
|
||||
obstack_fgrow1 (os, "\tinfo1:\t\"%s\"\n", graph->infos[0]);
|
||||
if (graph->infos[1])
|
||||
fprintf (fout, "\tinfo2:\t\"%s\"\n", graph->infos[1]);
|
||||
obstack_fgrow1 (os, "\tinfo2:\t\"%s\"\n", graph->infos[1]);
|
||||
if (graph->infos[2])
|
||||
fprintf (fout, "\tinfo3:\t\"%s\"\n", graph->infos[2]);
|
||||
obstack_fgrow1 (os, "\tinfo3:\t\"%s\"\n", graph->infos[2]);
|
||||
|
||||
if (graph->color != G_COLOR)
|
||||
fprintf (fout, "\tcolor:\t%s\n", get_color_str (graph->color));
|
||||
obstack_fgrow1 (os, "\tcolor:\t%s\n", get_color_str (graph->color));
|
||||
if (graph->textcolor != G_TEXTCOLOR)
|
||||
fprintf (fout, "\ttextcolor:\t%s\n", get_color_str (graph->textcolor));
|
||||
obstack_fgrow1 (os, "\ttextcolor:\t%s\n", get_color_str (graph->textcolor));
|
||||
if (graph->bordercolor != G_BORDERCOLOR)
|
||||
fprintf (fout, "\tbordercolor:\t%s\n",
|
||||
get_color_str (graph->bordercolor));
|
||||
obstack_fgrow1 (os, "\tbordercolor:\t%s\n",
|
||||
get_color_str (graph->bordercolor));
|
||||
|
||||
if (graph->width != G_WIDTH)
|
||||
fprintf (fout, "\twidth:\t%d\n", graph->width);
|
||||
obstack_fgrow1 (os, "\twidth:\t%d\n", graph->width);
|
||||
if (graph->height != G_HEIGHT)
|
||||
fprintf (fout, "\theight:\t%d\n", graph->height);
|
||||
obstack_fgrow1 (os, "\theight:\t%d\n", graph->height);
|
||||
if (graph->borderwidth != G_BORDERWIDTH)
|
||||
fprintf (fout, "\tborderwidth:\t%d\n", graph->borderwidth);
|
||||
obstack_fgrow1 (os, "\tborderwidth:\t%d\n", graph->borderwidth);
|
||||
|
||||
if (graph->x != G_X)
|
||||
fprintf (fout, "\tx:\t%d\n", graph->x);
|
||||
obstack_fgrow1 (os, "\tx:\t%d\n", graph->x);
|
||||
if (graph->y != G_Y)
|
||||
fprintf (fout, "\ty:\t%d\n", graph->y);
|
||||
obstack_fgrow1 (os, "\ty:\t%d\n", graph->y);
|
||||
|
||||
if (graph->folding != G_FOLDING)
|
||||
fprintf (fout, "\tfolding:\t%d\n", graph->folding);
|
||||
obstack_fgrow1 (os, "\tfolding:\t%d\n", graph->folding);
|
||||
|
||||
if (graph->shrink != G_SHRINK)
|
||||
fprintf (fout, "\tshrink:\t%d\n", graph->shrink);
|
||||
obstack_fgrow1 (os, "\tshrink:\t%d\n", graph->shrink);
|
||||
if (graph->stretch != G_STRETCH)
|
||||
fprintf (fout, "\tstretch:\t%d\n", graph->stretch);
|
||||
obstack_fgrow1 (os, "\tstretch:\t%d\n", graph->stretch);
|
||||
|
||||
if (graph->textmode != G_TEXTMODE)
|
||||
fprintf (fout, "\ttextmode:\t%s\n",
|
||||
get_textmode_str (graph->textmode));
|
||||
obstack_fgrow1 (os, "\ttextmode:\t%s\n",
|
||||
get_textmode_str (graph->textmode));
|
||||
|
||||
if (graph->shape != G_SHAPE)
|
||||
fprintf (fout, "\tshape:\t%s\n", get_shape_str (graph->shape));
|
||||
|
||||
if (graph->vertical_order != G_VERTICAL_ORDER)
|
||||
fprintf (fout, "\tvertical_order:\t%d\n", graph->vertical_order);
|
||||
if (graph->horizontal_order != G_HORIZONTAL_ORDER)
|
||||
fprintf (fout, "\thorizontal_order:\t%d\n", graph->horizontal_order);
|
||||
obstack_fgrow1 (os, "\tshape:\t%s\n", get_shape_str (graph->shape));
|
||||
|
||||
if (graph->xmax != G_XMAX)
|
||||
fprintf (fout, "\txmax:\t%d\n", graph->xmax);
|
||||
obstack_fgrow1 (os, "\txmax:\t%d\n", graph->xmax);
|
||||
if (graph->ymax != G_YMAX)
|
||||
fprintf (fout, "\tymax:\t%d\n", graph->ymax);
|
||||
obstack_fgrow1 (os, "\tymax:\t%d\n", graph->ymax);
|
||||
|
||||
if (graph->xbase != G_XBASE)
|
||||
fprintf (fout, "\txbase:\t%d\n", graph->xbase);
|
||||
obstack_fgrow1 (os, "\txbase:\t%d\n", graph->xbase);
|
||||
if (graph->ybase != G_YBASE)
|
||||
fprintf (fout, "\tybase:\t%d\n", graph->ybase);
|
||||
obstack_fgrow1 (os, "\tybase:\t%d\n", graph->ybase);
|
||||
|
||||
if (graph->xspace != G_XSPACE)
|
||||
fprintf (fout, "\txspace:\t%d\n", graph->xspace);
|
||||
obstack_fgrow1 (os, "\txspace:\t%d\n", graph->xspace);
|
||||
if (graph->yspace != G_YSPACE)
|
||||
fprintf (fout, "\tyspace:\t%d\n", graph->yspace);
|
||||
obstack_fgrow1 (os, "\tyspace:\t%d\n", graph->yspace);
|
||||
if (graph->xlspace != G_XLSPACE)
|
||||
fprintf (fout, "\txlspace:\t%d\n", graph->xlspace);
|
||||
obstack_fgrow1 (os, "\txlspace:\t%d\n", graph->xlspace);
|
||||
|
||||
if (graph->xraster != G_XRASTER)
|
||||
fprintf (fout, "\txraster:\t%d\n", graph->xraster);
|
||||
obstack_fgrow1 (os, "\txraster:\t%d\n", graph->xraster);
|
||||
if (graph->yraster != G_YRASTER)
|
||||
fprintf (fout, "\tyraster:\t%d\n", graph->yraster);
|
||||
obstack_fgrow1 (os, "\tyraster:\t%d\n", graph->yraster);
|
||||
if (graph->xlraster != G_XLRASTER)
|
||||
fprintf (fout, "\txlraster:\t%d\n", graph->xlraster);
|
||||
obstack_fgrow1 (os, "\txlraster:\t%d\n", graph->xlraster);
|
||||
|
||||
if (graph->hidden != G_HIDDEN)
|
||||
fprintf (fout, "\thidden:\t%d\n", graph->hidden);
|
||||
|
||||
/* FIXME: Unallocate struct list if required.
|
||||
Maybe with a little function. */
|
||||
obstack_fgrow1 (os, "\thidden:\t%d\n", graph->hidden);
|
||||
|
||||
if (graph->classname != G_CLASSNAME)
|
||||
{
|
||||
struct classname_s *ite;
|
||||
|
||||
for (ite = graph->classname; ite; ite = ite->next)
|
||||
fprintf (fout, "\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)
|
||||
fprintf (fout, "\tinfoname %d :\t%s\n", ite->integer, ite->string);
|
||||
}
|
||||
|
||||
if (graph->colorentry != G_COLORENTRY)
|
||||
{
|
||||
struct colorentry_s *ite;
|
||||
|
||||
for (ite = graph->colorentry; ite; ite = ite->next)
|
||||
{
|
||||
fprintf (fout, "\tcolorentry %d :\t%d %d %d\n",
|
||||
ite->color_index,
|
||||
ite->red_cp,
|
||||
ite->green_cp,
|
||||
ite->blue_cp);
|
||||
}
|
||||
obstack_fgrow2 (os, "\tclassname %d :\t%s\n", ite->no, ite->name);
|
||||
}
|
||||
|
||||
if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
|
||||
fprintf (fout, "\tlayoutalgorithm:\t%s\n",
|
||||
get_layoutalgorithm_str(graph->layoutalgorithm));
|
||||
obstack_fgrow1 (os, "\tlayoutalgorithm:\t%s\n",
|
||||
get_layoutalgorithm_str(graph->layoutalgorithm));
|
||||
|
||||
if (graph->layout_downfactor != G_LAYOUT_DOWNFACTOR)
|
||||
fprintf (fout, "\tlayout_downfactor:\t%d\n", graph->layout_downfactor);
|
||||
obstack_fgrow1 (os, "\tlayout_downfactor:\t%d\n", graph->layout_downfactor);
|
||||
if (graph->layout_upfactor != G_LAYOUT_UPFACTOR)
|
||||
fprintf (fout, "\tlayout_upfactor:\t%d\n", graph->layout_upfactor);
|
||||
obstack_fgrow1 (os, "\tlayout_upfactor:\t%d\n", graph->layout_upfactor);
|
||||
if (graph->layout_nearfactor != G_LAYOUT_NEARFACTOR)
|
||||
fprintf (fout, "\tlayout_nearfactor:\t%d\n", graph->layout_nearfactor);
|
||||
obstack_fgrow1 (os, "\tlayout_nearfactor:\t%d\n", graph->layout_nearfactor);
|
||||
if (graph->layout_splinefactor != G_LAYOUT_SPLINEFACTOR)
|
||||
fprintf (fout, "\tlayout_splinefactor:\t%d\n",
|
||||
graph->layout_splinefactor);
|
||||
obstack_fgrow1 (os, "\tlayout_splinefactor:\t%d\n",
|
||||
graph->layout_splinefactor);
|
||||
|
||||
if (graph->late_edge_labels != G_LATE_EDGE_LABELS)
|
||||
fprintf (fout, "\tlate_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->late_edge_labels));
|
||||
obstack_fgrow1 (os, "\tlate_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->late_edge_labels,
|
||||
G_LATE_EDGE_LABELS));
|
||||
if (graph->display_edge_labels != G_DISPLAY_EDGE_LABELS)
|
||||
fprintf (fout, "\tdisplay_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->display_edge_labels));
|
||||
obstack_fgrow1 (os, "\tdisplay_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->display_edge_labels,
|
||||
G_DISPLAY_EDGE_LABELS));
|
||||
if (graph->dirty_edge_labels != G_DIRTY_EDGE_LABELS)
|
||||
fprintf (fout, "\tdirty_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->dirty_edge_labels));
|
||||
obstack_fgrow1 (os, "\tdirty_edge_labels:\t%s\n",
|
||||
get_decision_str(graph->dirty_edge_labels,
|
||||
G_DIRTY_EDGE_LABELS));
|
||||
if (graph->finetuning != G_FINETUNING)
|
||||
fprintf (fout, "\tfinetuning:\t%s\n",
|
||||
get_decision_str(graph->finetuning));
|
||||
obstack_fgrow1 (os, "\tfinetuning:\t%s\n",
|
||||
get_decision_str(graph->finetuning, G_FINETUNING));
|
||||
if (graph->ignore_singles != G_IGNORE_SINGLES)
|
||||
fprintf (fout, "\tignore_singles:\t%s\n",
|
||||
get_decision_str(graph->ignore_singles));
|
||||
obstack_fgrow1 (os, "\tignore_singles:\t%s\n",
|
||||
get_decision_str(graph->ignore_singles, G_IGNORE_SINGLES));
|
||||
if (graph->straight_phase != G_STRAIGHT_PHASE)
|
||||
fprintf (fout, "\tstraight_phase:\t%s\n",
|
||||
get_decision_str(graph->straight_phase));
|
||||
obstack_fgrow1 (os, "\tstraight_phase:\t%s\n",
|
||||
get_decision_str(graph->straight_phase, G_STRAIGHT_PHASE));
|
||||
if (graph->priority_phase != G_PRIORITY_PHASE)
|
||||
fprintf (fout, "\tpriority_phase:\t%s\n",
|
||||
get_decision_str(graph->priority_phase));
|
||||
obstack_fgrow1 (os, "\tpriority_phase:\t%s\n",
|
||||
get_decision_str(graph->priority_phase, G_PRIORITY_PHASE));
|
||||
if (graph->manhattan_edges != G_MANHATTAN_EDGES)
|
||||
fprintf (fout,
|
||||
"\tmanhattan_edges:\t%s\n",
|
||||
get_decision_str(graph->manhattan_edges));
|
||||
obstack_fgrow1 (os,
|
||||
"\tmanhattan_edges:\t%s\n",
|
||||
get_decision_str(graph->manhattan_edges,
|
||||
G_MANHATTAN_EDGES));
|
||||
if (graph->smanhattan_edges != G_SMANHATTAN_EDGES)
|
||||
fprintf (fout,
|
||||
"\tsmanhattan_edges:\t%s\n",
|
||||
get_decision_str(graph->smanhattan_edges));
|
||||
obstack_fgrow1 (os,
|
||||
"\tsmanhattan_edges:\t%s\n",
|
||||
get_decision_str(graph->smanhattan_edges,
|
||||
G_SMANHATTAN_EDGES));
|
||||
if (graph->near_edges != G_NEAR_EDGES)
|
||||
fprintf (fout, "\tnear_edges:\t%s\n",
|
||||
get_decision_str(graph->near_edges));
|
||||
obstack_fgrow1 (os, "\tnear_edges:\t%s\n",
|
||||
get_decision_str(graph->near_edges, G_NEAR_EDGES));
|
||||
|
||||
if (graph->orientation != G_ORIENTATION)
|
||||
fprintf (fout, "\torientation:\t%s\n",
|
||||
get_orientation_str(graph->orientation));
|
||||
obstack_fgrow1 (os, "\torientation:\t%s\n",
|
||||
get_decision_str(graph->orientation, G_ORIENTATION));
|
||||
|
||||
if (graph->node_alignement != G_NODE_ALIGNEMENT)
|
||||
fprintf (fout, "\tnode_alignement:\t%s\n",
|
||||
get_node_alignement_str(graph->node_alignement));
|
||||
obstack_fgrow1 (os, "\tnode_alignement:\t%s\n",
|
||||
get_decision_str(graph->node_alignement,
|
||||
G_NODE_ALIGNEMENT));
|
||||
|
||||
if (graph->port_sharing != G_PORT_SHARING)
|
||||
fprintf (fout, "\tport_sharing:\t%s\n",
|
||||
get_decision_str(graph->port_sharing));
|
||||
obstack_fgrow1 (os, "\tport_sharing:\t%s\n",
|
||||
get_decision_str(graph->port_sharing, G_PORT_SHARING));
|
||||
|
||||
if (graph->arrow_mode != G_ARROW_MODE)
|
||||
fprintf (fout, "\tarrow_mode:\t%s\n",
|
||||
get_arrow_mode_str(graph->arrow_mode));
|
||||
obstack_fgrow1 (os, "\tarrow_mode:\t%s\n",
|
||||
get_arrow_mode_str(graph->arrow_mode));
|
||||
|
||||
if (graph->treefactor != G_TREEFACTOR)
|
||||
fprintf (fout, "\ttreefactor:\t%f\n", graph->treefactor);
|
||||
obstack_fgrow1 (os, "\ttreefactor:\t%f\n", graph->treefactor);
|
||||
if (graph->spreadlevel != G_SPREADLEVEL)
|
||||
fprintf (fout, "\tspreadlevel:\t%d\n", graph->spreadlevel);
|
||||
obstack_fgrow1 (os, "\tspreadlevel:\t%d\n", graph->spreadlevel);
|
||||
|
||||
if (graph->crossing_weight != G_CROSSING_WEIGHT)
|
||||
fprintf (fout, "\tcrossing_weight:\t%s\n",
|
||||
get_crossing_type_str(graph->crossing_weight));
|
||||
obstack_fgrow1 (os, "\tcrossing_weight:\t%s\n",
|
||||
get_crossing_type_str(graph->crossing_weight));
|
||||
if (graph->crossing_phase2 != G_CROSSING_PHASE2)
|
||||
fprintf (fout, "\tcrossing_phase2:\t%s\n",
|
||||
get_decision_str(graph->crossing_phase2));
|
||||
obstack_fgrow1 (os, "\tcrossing_phase2:\t%s\n",
|
||||
get_decision_str(graph->crossing_phase2,
|
||||
G_CROSSING_PHASE2));
|
||||
if (graph->crossing_optimization != G_CROSSING_OPTIMIZATION)
|
||||
fprintf (fout, "\tcrossing_optimization:\t%s\n",
|
||||
get_decision_str(graph->crossing_optimization));
|
||||
obstack_fgrow1 (os, "\tcrossing_optimization:\t%s\n",
|
||||
get_decision_str(graph->crossing_optimization,
|
||||
G_CROSSING_OPTIMIZATION));
|
||||
|
||||
if (graph->view != G_VIEW)
|
||||
fprintf (fout, "\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)
|
||||
fprintf (fout, "\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)
|
||||
fprintf (fout,"\tnodes:\t%s\n", get_decision_str(graph->nodes));
|
||||
obstack_fgrow1 (os,"\tnodes:\t%s\n",
|
||||
get_decision_str(graph->nodes, G_NODES));
|
||||
|
||||
if (graph->splines != G_SPLINES)
|
||||
fprintf (fout, "\tsplines:\t%s\n", get_decision_str(graph->splines));
|
||||
obstack_fgrow1 (os, "\tsplines:\t%s\n",
|
||||
get_decision_str(graph->splines, G_SPLINES));
|
||||
|
||||
if (graph->bmax != G_BMAX)
|
||||
fprintf (fout, "\tbmax:\t%d\n", graph->bmax);
|
||||
obstack_fgrow1 (os, "\tbmax:\t%d\n", graph->bmax);
|
||||
if (graph->cmin != G_CMIN)
|
||||
fprintf (fout, "\tcmin:\t%d\n", graph->cmin);
|
||||
obstack_fgrow1 (os, "\tcmin:\t%d\n", graph->cmin);
|
||||
if (graph->cmax != G_CMAX)
|
||||
fprintf (fout, "\tcmax:\t%d\n", graph->cmax);
|
||||
obstack_fgrow1 (os, "\tcmax:\t%d\n", graph->cmax);
|
||||
if (graph->pmin != G_PMIN)
|
||||
fprintf (fout, "\tpmin:\t%d\n", graph->pmin);
|
||||
obstack_fgrow1 (os, "\tpmin:\t%d\n", graph->pmin);
|
||||
if (graph->pmax != G_PMAX)
|
||||
fprintf (fout, "\tpmax:\t%d\n", graph->pmax);
|
||||
obstack_fgrow1 (os, "\tpmax:\t%d\n", graph->pmax);
|
||||
if (graph->rmin != G_RMIN)
|
||||
fprintf (fout, "\trmin:\t%d\n", graph->rmin);
|
||||
obstack_fgrow1 (os, "\trmin:\t%d\n", graph->rmin);
|
||||
if (graph->rmax != G_RMAX)
|
||||
fprintf (fout, "\trmax:\t%d\n", graph->rmax);
|
||||
obstack_fgrow1 (os, "\trmax:\t%d\n", graph->rmax);
|
||||
if (graph->smax != G_SMAX)
|
||||
fprintf (fout, "\tsmax:\t%d\n", graph->smax);
|
||||
obstack_fgrow1 (os, "\tsmax:\t%d\n", graph->smax);
|
||||
}
|
||||
|
||||
@@ -75,32 +75,14 @@ enum shape_e
|
||||
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. */
|
||||
struct classname_s
|
||||
{
|
||||
int no; /* Class number */
|
||||
const char *name; /* Name associated to the class no. */
|
||||
char *name; /* Name associated to the class no. */
|
||||
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.
|
||||
Details about each algoithm can be found below. */
|
||||
enum layoutalgorithm_e
|
||||
@@ -179,13 +161,13 @@ struct node_s
|
||||
{
|
||||
/* Title the unique string identifying the node. This attribute is
|
||||
mandatory. */
|
||||
const char *title;
|
||||
char *title;
|
||||
|
||||
/* 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
|
||||
contain control characters like NEWLINE that influences the size of
|
||||
the node. */
|
||||
const char *label;
|
||||
char *label;
|
||||
|
||||
/* loc is the location as x, y position relatively to the system of
|
||||
coordinates of the graph. Locations are specified in the form
|
||||
@@ -295,7 +277,7 @@ struct node_s
|
||||
/* info2, info3 can be selected from the menu. The corresponding text
|
||||
labels can be shown by mouse clicks on nodes.
|
||||
Default are null strings. */
|
||||
const char *infos[3];
|
||||
char *infos[3];
|
||||
|
||||
/* Node border color.
|
||||
Default is textcolor. */
|
||||
@@ -501,19 +483,19 @@ struct graph_s
|
||||
index 2, green has index 3, etc.
|
||||
Default is white for background and white or transparent for summary
|
||||
nodes. */
|
||||
enum color_e color;
|
||||
unsigned char color;
|
||||
|
||||
/* Textcolor.
|
||||
need explainations ???
|
||||
defalut is black for summary nodes. */
|
||||
enum color_e textcolor;
|
||||
unsigned char textcolor;
|
||||
|
||||
/* Bordercolor is the color of the summary node's border. Default color
|
||||
is the textcolor. width, height are width and height of the
|
||||
displayed part of the window of the outermost graph in pixels, or
|
||||
width and height of the summary node of inner subgraphs.
|
||||
Default is the defalut of the textcolor. */
|
||||
enum color_e bordercolor;
|
||||
unsigned char bordercolor;
|
||||
|
||||
/* Width, height are width and height of the displayed part of the
|
||||
window of the outermost graph in pixels, or width and height of the
|
||||
@@ -577,22 +559,7 @@ struct graph_s
|
||||
Defalut is box, other: rhomb, ellipse, triangle. */
|
||||
enum shape_e shape;
|
||||
|
||||
/* 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;
|
||||
/* FIXME {vertival,horizontal}_order */
|
||||
|
||||
/* xmax, ymax specify the maximal size of the virtual window that is
|
||||
used to display the graph. This is usually larger than the displayed
|
||||
@@ -663,19 +630,8 @@ struct graph_s
|
||||
By default, no class names. */
|
||||
struct classname_s *classname;
|
||||
|
||||
/* Infoname allows to introduce names for the additional text labels.
|
||||
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;
|
||||
/* FIXME : infoname. */
|
||||
/* FIXME : colorentry. */
|
||||
|
||||
/* layoutalgorithm chooses different graph layout algorithms
|
||||
Possibilities are maxdepth, mindepth, maxdepthslow, mindepthslow,
|
||||
@@ -999,21 +955,16 @@ void new_edge PARAMS ((edge_t *edge));
|
||||
void add_node PARAMS ((graph_t *graph, node_t *node));
|
||||
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 output_node PARAMS ((node_t *node, struct obstack *os));
|
||||
void close_node PARAMS ((struct obstack *os));
|
||||
|
||||
void open_node PARAMS ((FILE *fout));
|
||||
void output_node PARAMS ((node_t *node, FILE *fout));
|
||||
void close_node PARAMS ((FILE *fout));
|
||||
void open_edge PARAMS ((edge_t *edge, struct obstack *os));
|
||||
void output_edge PARAMS ((edge_t *edge, struct obstack *os));
|
||||
void close_edge PARAMS ((struct obstack *os));
|
||||
|
||||
void open_edge PARAMS ((edge_t *edge, FILE *fout));
|
||||
void output_edge PARAMS ((edge_t *edge, FILE *fout));
|
||||
void close_edge PARAMS ((FILE *fout));
|
||||
|
||||
void open_graph PARAMS ((FILE *fout));
|
||||
void output_graph PARAMS ((graph_t *graph, FILE *fout));
|
||||
void close_graph PARAMS ((graph_t *graph, FILE *fout));
|
||||
void open_graph PARAMS ((struct obstack *os));
|
||||
void output_graph PARAMS ((graph_t *graph, struct obstack *os));
|
||||
void close_graph PARAMS ((graph_t *graph, struct obstack *os));
|
||||
|
||||
#endif /* VCG_H_ */
|
||||
|
||||
+4
-10
@@ -47,11 +47,8 @@
|
||||
# define G_TEXTMODE centered
|
||||
# define G_SHAPE box
|
||||
|
||||
# define G_VERTICAL_ORDER 0 /* Unspecified for subgraphs. */
|
||||
# define G_HORIZONTAL_ORDER 0 /* Unspecified for subgraphs. */
|
||||
|
||||
# define G_XMAX 90 /* Not output */
|
||||
# define G_YMAX 90 /* Not output */
|
||||
# define G_XMAX 90 /* Not output */
|
||||
# define G_YMAX 90 /* Not output */
|
||||
|
||||
# define G_XBASE 5
|
||||
# define G_YBASE 5
|
||||
@@ -64,12 +61,9 @@
|
||||
# define G_YRASTER 1
|
||||
# define G_XLRASTER 1
|
||||
|
||||
# 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_HIDDEN -1 /* No default value. */
|
||||
|
||||
# define G_CLASSNAME NULL /* No class name association */
|
||||
# define G_LAYOUTALGORITHM normal
|
||||
# define G_LAYOUT_DOWNFACTOR 1
|
||||
# define G_LAYOUT_UPFACTOR 1
|
||||
|
||||
+1
-4
@@ -1,6 +1,7 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
at-*
|
||||
debug-*
|
||||
atconfig
|
||||
empty
|
||||
experr
|
||||
@@ -8,11 +9,7 @@ expout
|
||||
stderr
|
||||
stdout
|
||||
testsuite
|
||||
testsuite.[0-9]
|
||||
testsuite.[0-9][0-9]
|
||||
package.m4
|
||||
calc.[chy]
|
||||
calc.tab.*
|
||||
calc
|
||||
*.output *.vcg
|
||||
autom4te.cache
|
||||
|
||||
+15
-26
@@ -18,34 +18,23 @@
|
||||
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
## 02111-1307, USA.
|
||||
|
||||
EXTRA_DIST = atlocal.in bison $(TESTSUITE_AT) testsuite
|
||||
# Distribute the testsuite since GNU M4 is needed to build it.
|
||||
noinst_SCRIPTS = testsuite
|
||||
|
||||
DISTCLEANFILES = atconfig atlocal package.m4
|
||||
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
SUITE = calc.at regression.at
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at calc.at regression.at
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
EXTRA_DIST = atgeneral.m4 suite.at $(SUITE) $(noinst_SCRIPTS)
|
||||
|
||||
AUTOM4TE = autom4te
|
||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
|
||||
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
|
||||
mv $@.tmp $@
|
||||
check-local: atconfig $(srcdir)/testsuite
|
||||
$(SHELL) $(srcdir)/testsuite
|
||||
|
||||
atconfig: $(top_builddir)/config.status
|
||||
cd $(top_builddir) && ./config.status tests/$@
|
||||
testsuite: atgeneral.m4 suite.at $(SUITE)
|
||||
$(M4) -I $(srcdir) atgeneral.m4 suite.at | \
|
||||
sed -e 's/[ ]*$$//' | \
|
||||
sed -e '/^$$/N;/\n$$/D' > $@-tmp
|
||||
chmod +x $@-tmp
|
||||
mv $@-tmp $@
|
||||
|
||||
atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && ./config.status tests/$@
|
||||
|
||||
clean-local:
|
||||
$(SHELL) $(TESTSUITE) --clean
|
||||
|
||||
check-local: atconfig atlocal $(TESTSUITE)
|
||||
$(SHELL) $(TESTSUITE)
|
||||
|
||||
# Run the test suite on the *installed* tree.
|
||||
installcheck-local:
|
||||
$(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin
|
||||
CLEANFILES = debug-*.sh empty
|
||||
DISTCLEANFILES = atconfig
|
||||
MAINTAINERCLEANFILES = testsuite
|
||||
|
||||
+36
-39
@@ -13,6 +13,8 @@
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Distribute the testsuite since GNU M4 is needed to build it.
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
@@ -58,6 +60,7 @@ POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AMTAR = @AMTAR@
|
||||
AT_TESTPATH = @AT_TESTPATH@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
@@ -66,6 +69,9 @@ CC = @CC@
|
||||
CPP = @CPP@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
@@ -96,25 +102,23 @@ am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
|
||||
EXTRA_DIST = atlocal.in bison $(TESTSUITE_AT) testsuite
|
||||
noinst_SCRIPTS = testsuite
|
||||
|
||||
DISTCLEANFILES = atconfig atlocal package.m4
|
||||
MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
SUITE = calc.at regression.at
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at calc.at regression.at
|
||||
EXTRA_DIST = atgeneral.m4 suite.at $(SUITE) $(noinst_SCRIPTS)
|
||||
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
|
||||
AUTOM4TE = autom4te
|
||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||
CLEANFILES = debug-*.sh empty
|
||||
DISTCLEANFILES = atconfig
|
||||
MAINTAINERCLEANFILES = testsuite
|
||||
subdir = tests
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_FILES = atconfig
|
||||
SCRIPTS = $(noinst_SCRIPTS)
|
||||
|
||||
DIST_SOURCES =
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
DIST_COMMON = Makefile.am Makefile.in atconfig.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
@@ -125,6 +129,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && \
|
||||
CONFIG_HEADERS= CONFIG_LINKS= \
|
||||
CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
|
||||
atconfig: $(top_builddir)/config.status atconfig.in
|
||||
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
@@ -154,7 +160,7 @@ distdir: $(DISTFILES)
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-local
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
all-am: Makefile $(SCRIPTS)
|
||||
|
||||
installdirs:
|
||||
|
||||
@@ -174,6 +180,7 @@ install-strip:
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
||||
@@ -185,7 +192,7 @@ maintainer-clean-generic:
|
||||
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-local mostlyclean-am
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
@@ -207,7 +214,7 @@ install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am: installcheck-local
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
@@ -220,33 +227,23 @@ mostlyclean-am: mostlyclean-generic
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am check-local clean clean-generic \
|
||||
clean-local distclean distclean-generic distdir dvi dvi-am info \
|
||||
info-am install install-am install-data install-data-am \
|
||||
install-exec install-exec-am install-info install-info-am \
|
||||
install-man install-strip installcheck installcheck-am \
|
||||
installcheck-local installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
uninstall uninstall-am uninstall-info-am
|
||||
distclean distclean-generic distdir dvi dvi-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic uninstall uninstall-am uninstall-info-am
|
||||
|
||||
$(srcdir)/$(TESTSUITE): $(TESTSUITE_AT)
|
||||
$(AUTOTEST) -I $(srcdir) testsuite.at -o $@.tmp
|
||||
mv $@.tmp $@
|
||||
|
||||
atconfig: $(top_builddir)/config.status
|
||||
cd $(top_builddir) && ./config.status tests/$@
|
||||
check-local: atconfig $(srcdir)/testsuite
|
||||
$(SHELL) $(srcdir)/testsuite
|
||||
|
||||
atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && ./config.status tests/$@
|
||||
|
||||
clean-local:
|
||||
$(SHELL) $(TESTSUITE) --clean
|
||||
|
||||
check-local: atconfig atlocal $(TESTSUITE)
|
||||
$(SHELL) $(TESTSUITE)
|
||||
|
||||
# Run the test suite on the *installed* tree.
|
||||
installcheck-local:
|
||||
$(SHELL) $(TESTSUITE) AUTOTEST_PATH=$(exec_prefix)/bin
|
||||
testsuite: atgeneral.m4 suite.at $(SUITE)
|
||||
$(M4) -I $(srcdir) atgeneral.m4 suite.at | \
|
||||
sed -e 's/[ ]*$$//' | \
|
||||
sed -e '/^$$/N;/\n$$/D' > $@-tmp
|
||||
chmod +x $@-tmp
|
||||
mv $@-tmp $@
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
# @configure_input@ -*- shell-script -*-
|
||||
# Configurable variable values for building test suites.
|
||||
# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# This script is part of Autotest. Unlimited permission to copy,
|
||||
# distribute and modify the testing scripts that are the output of
|
||||
# that Autotest script is given. You need not follow the terms of the
|
||||
# GNU General Public License when using or distributing such scripts,
|
||||
# even though portions of the text of Autotest appear in them. The
|
||||
# GNU General Public License (GPL) does govern all other use of the
|
||||
# material that constitutes the Autotest.
|
||||
#
|
||||
# Certain portions of the Autotest source text are designed to be
|
||||
# copied (in certain cases, depending on the input) into the output of
|
||||
# Autotest. We call these the "data" portions. The rest of the
|
||||
# Autotest source text consists of comments plus executable code that
|
||||
# decides which of the data portions to output in any given case. We
|
||||
# call these comments and executable code the "non-data" portions.
|
||||
# Autotest never copies any of the non-data portions into its output.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of Autotest
|
||||
# released by the Free Software Foundation. When you make and
|
||||
# distribute a modified version of Autotest, you may extend this
|
||||
# special exception to the GPL to apply to your modified version as
|
||||
# well, *unless* your modified version has the potential to copy into
|
||||
# its output some of the text that was the non-data portion of the
|
||||
# version that you started with. (In other words, unless your change
|
||||
# moves or copies text from the non-data portions to the data
|
||||
# portions.) If your modification has such potential, you must delete
|
||||
# any notice of this special exception to the GPL from your modified
|
||||
# version.
|
||||
|
||||
# Snippet (1
|
||||
# This debugging script has been automatically generated from `make check'.
|
||||
# Call it with `--help' to get a quick usage summary.
|
||||
|
||||
at_package='@PACKAGE@'
|
||||
at_version='@VERSION@'
|
||||
# Snippet )1
|
||||
# Snippet (2
|
||||
at_n='@ECHO_N@'
|
||||
at_c='@ECHO_C@'
|
||||
test -f atlocal && . ./atlocal
|
||||
|
||||
# LC_MESSAGES is always shadowed by LC_ALL. Here are the only cases:
|
||||
# - GNU: LANGUAGE -> LC_ALL -> LC_MESSAGES -> LANG
|
||||
# - POSIX: LC_ALL -> LC_MESSAGES -> LANG
|
||||
# - XPG4: LC_ALL -> LANG
|
||||
# - SysV/XPG2: LANG
|
||||
export LANGUAGE; LANGUAGE=C
|
||||
export LANG; LANG=C
|
||||
export LC_ALL; LC_ALL=C
|
||||
|
||||
srcdir=@srcdir@
|
||||
top_srcdir=@top_srcdir@
|
||||
# Use absolute file notations, as the test might change directories.
|
||||
at_srcdir=`cd @srcdir@ && pwd`
|
||||
at_top_srcdir=`cd @top_srcdir@ && pwd`
|
||||
at_builddir=`pwd`
|
||||
at_top_builddir=`cd .. && pwd`
|
||||
if test -n "@AT_TESTPATH@"; then
|
||||
export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH
|
||||
else
|
||||
export PATH; PATH=`pwd`:$PATH
|
||||
fi
|
||||
|
||||
# We need GNU M4.
|
||||
M4='@M4@'
|
||||
|
||||
# We need a C compiler.
|
||||
CC='@CC@'
|
||||
CFLAGS='@CFLAGS@'
|
||||
|
||||
# We need `config.h'.
|
||||
CPPFLAGS="-I$at_top_builddir @CPPFLAGS@"
|
||||
|
||||
# We want to use the files shipped with Bison.
|
||||
BISON_SIMPLE=$at_top_srcdir/src/bison.simple
|
||||
export BISON_SIMPLE
|
||||
BISON_HAIRY=$at_top_srcdir/src/bison.hairy
|
||||
export BISON_HAIRY
|
||||
# Snippet )2
|
||||
@@ -0,0 +1,420 @@
|
||||
divert(-1) -*- Autoconf -*-
|
||||
# `m4' macros used in building test suites.
|
||||
# Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# This script is part of Autotest. Unlimited permission to copy,
|
||||
# distribute and modify the testing scripts that are the output of
|
||||
# that Autotest script is given. You need not follow the terms of the
|
||||
# GNU General Public License when using or distributing such scripts,
|
||||
# even though portions of the text of Autotest appear in them. The
|
||||
# GNU General Public License (GPL) does govern all other use of the
|
||||
# material that constitutes the Autotest.
|
||||
#
|
||||
# Certain portions of the Autotest source text are designed to be
|
||||
# copied (in certain cases, depending on the input) into the output of
|
||||
# Autotest. We call these the "data" portions. The rest of the
|
||||
# Autotest source text consists of comments plus executable code that
|
||||
# decides which of the data portions to output in any given case. We
|
||||
# call these comments and executable code the "non-data" portions.
|
||||
# Autotest never copies any of the non-data portions into its output.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of Autotest
|
||||
# released by the Free Software Foundation. When you make and
|
||||
# distribute a modified version of Autotest, you may extend this
|
||||
# special exception to the GPL to apply to your modified version as
|
||||
# well, *unless* your modified version has the potential to copy into
|
||||
# its output some of the text that was the non-data portion of the
|
||||
# version that you started with. (In other words, unless your change
|
||||
# moves or copies text from the non-data portions to the data
|
||||
# portions.) If your modification has such potential, you must delete
|
||||
# any notice of this special exception to the GPL from your modified
|
||||
# version.
|
||||
|
||||
changequote()
|
||||
changequote([, ])
|
||||
|
||||
define([AT_DEFINE], defn([define]))
|
||||
define([AT_EVAL], defn([eval]))
|
||||
define([AT_FORMAT], defn([format]))
|
||||
define([AT_INCLUDE], defn([include]))
|
||||
define([AT_SHIFT], defn([shift]))
|
||||
define([AT_UNDEFINE], defn([undefine]))
|
||||
|
||||
undefine([define])
|
||||
undefine([eval])
|
||||
undefine([format])
|
||||
undefine([include])
|
||||
undefine([shift])
|
||||
undefine([undefine])
|
||||
|
||||
|
||||
# AT_CASE(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
|
||||
# -----------------------------------------------------------
|
||||
# m4 equivalent of
|
||||
# switch (SWITCH)
|
||||
# {
|
||||
# case VAL1:
|
||||
# IF-VAL1;
|
||||
# break;
|
||||
# case VAL2:
|
||||
# IF-VAL2;
|
||||
# break;
|
||||
# ...
|
||||
# default:
|
||||
# DEFAULT;
|
||||
# break;
|
||||
# }.
|
||||
# All the values are optional, and the macro is robust to active
|
||||
# symbols properly quoted.
|
||||
AT_DEFINE([AT_CASE],
|
||||
[ifelse([$#], 0, [],
|
||||
[$#], 1, [],
|
||||
[$#], 2, [$2],
|
||||
[$1], [$2], [$3],
|
||||
[AT_CASE([$1], AT_SHIFT(AT_SHIFT(AT_SHIFT($@))))])])
|
||||
|
||||
|
||||
# Use of diversions:
|
||||
# 0 - overall initialization; for each test group: skipping and cleanups;
|
||||
# 1 - for each test group: proper code, to reinsert between cleanups;
|
||||
# 2 - overall wrap up: generation of debugging scripts and statistics.
|
||||
|
||||
|
||||
# AT_LINE
|
||||
# -------
|
||||
# Return the current file sans directory, a colon, and the current line.
|
||||
AT_DEFINE([AT_LINE],
|
||||
[patsubst(__file__, ^.*/\(.*\), \1):__line__])
|
||||
|
||||
|
||||
# AT_INIT(PROGRAM)
|
||||
# ----------------
|
||||
# Begin testing suite, using PROGRAM to check version. The search path
|
||||
# should be already preset so the proper executable will be selected.
|
||||
AT_DEFINE([AT_INIT],
|
||||
[AT_DEFINE(AT_ordinal, 0)
|
||||
. ./atconfig
|
||||
# Snippet (3
|
||||
# -e sets to true
|
||||
at_stop_on_error=false;
|
||||
# Shall we save and check stdout and stderr?
|
||||
# -n sets to false
|
||||
at_check_stds=:;
|
||||
# Shall we
|
||||
# -s sets to false, and -v to true
|
||||
at_verbose=false
|
||||
|
||||
at_usage="Usage: $[0] [OPTION]...
|
||||
|
||||
-e Abort the full suite and inhibit normal clean up if a test fails
|
||||
-n Do not redirect stdout and stderr and do not test their contents
|
||||
-s Inhibit verbosity while generating or executing debugging scripts
|
||||
-v Force more detailed output, default for debugging scripts unless -s
|
||||
-x Have the shell to trace command execution; also implies option -n"
|
||||
|
||||
# Snippet )3
|
||||
|
||||
# Snippet (4
|
||||
while test $[#] -gt 0; do
|
||||
case "$[1]" in
|
||||
--help) echo "$at_usage"; exit 0 ;;
|
||||
--version) echo "$[0] ($at_package) $at_version"; exit 0 ;;
|
||||
-e) at_stop_on_error=:;;
|
||||
-n) at_check_stds=false;;
|
||||
-s) at_verbose=false; at_silent=1;;
|
||||
-v) at_verbose=:; at_silent=;;
|
||||
-x) at_traceon='set -vx'; at_traceoff='set +vx'; at_check_stds=false;;
|
||||
*) echo 1>&2 "Try \`$[0] --help' for more information."; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# To check whether a test succeeded or not, we compare an expected
|
||||
# output with a reference. In the testing suite, we just need `cmp'
|
||||
# but in debugging scripts, we want more information, so we prefer
|
||||
# `diff -u'. Nonetheless we will use `diff' only, because in DOS
|
||||
# environments, `diff' considers that two files are equal included
|
||||
# when there are only differences on the coding of new lines. `cmp'
|
||||
# does not.
|
||||
#
|
||||
# Finally, not all the `diff' support `-u', and some, like Tru64, even
|
||||
# refuse to `diff' /dev/null.
|
||||
: >empty
|
||||
|
||||
if diff -u empty empty >/dev/null 2>&1; then
|
||||
at_diff='diff -u'
|
||||
else
|
||||
at_diff='diff'
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Each generated debugging script, containing a single test group, cleans
|
||||
# up files at the beginning only, not at the end. This is so we can repeat
|
||||
# the script many times and browse left over files. To cope with such left
|
||||
# over files, the full test suite cleans up both before and after test groups.
|
||||
# Snippet )4
|
||||
|
||||
if $1 --version | grep "$at_package.*$at_version" >/dev/null; then
|
||||
at_banner="Testing suite for $at_package, version $at_version"
|
||||
at_dashes=`echo $at_banner | sed s/./=/g`
|
||||
echo "$at_dashes"
|
||||
echo "$at_banner"
|
||||
echo "$at_dashes"
|
||||
else
|
||||
echo '======================================================='
|
||||
echo 'ERROR: Not using the proper version, no tests performed'
|
||||
echo '======================================================='
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Remove any debugging script resulting from a previous run.
|
||||
rm -f debug-*.sh
|
||||
|
||||
at_failed_list=
|
||||
at_ignore_count=0
|
||||
divert(2)[]dnl
|
||||
|
||||
# Wrap up the testing suite with summary statistics.
|
||||
|
||||
rm -f at-check-line at-setup-line
|
||||
at_fail_count=0
|
||||
if test -z "$at_failed_list"; then
|
||||
if test "$at_ignore_count" = 0; then
|
||||
at_banner="All $at_test_count tests were successful"
|
||||
else
|
||||
at_banner="All $at_test_count tests were successful ($at_ignore_count ignored)"
|
||||
fi
|
||||
else
|
||||
echo
|
||||
echo $at_n "Writing \`debug-NN.sh' scripts, NN =$at_c"
|
||||
for at_group in $at_failed_list; do
|
||||
echo $at_n " $at_group$at_c"
|
||||
( echo '#!/bin/sh'
|
||||
sed -n '/^[#] Snippet (1/,/^[#] Snippet )1/p' atconfig
|
||||
sed -n '/^[#] Snippet (2/,/^[#] Snippet )2/p' atconfig
|
||||
sed -n "/^[#] Snippet (3/,/^[#] Snippet )3/p" $[0]
|
||||
test -z "$at_silent" && echo 'at_verbose=:'
|
||||
sed -n "/^[#] Snippet (4/,/^[#] Snippet )4/p" $[0]
|
||||
sed -n "/^[#] Snippet (c$at_group(/,/^[#] Snippet )c$at_group)/p" $[0]
|
||||
at_desc=`sed -n \
|
||||
'/^[#] Snippet (d'$at_group'(/,/^[#] Snippet )d'$at_group')/p' $[0] \
|
||||
| sed -n '2s/^[#] //p'`
|
||||
echo 'if $at_verbose; then'
|
||||
echo ' at_banner="$[0]: '$at_desc'"'
|
||||
echo ' at_dashes=`echo $at_banner | sed s/./=/g`'
|
||||
echo ' echo'
|
||||
echo ' echo "$at_dashes"'
|
||||
echo ' echo "$at_banner"'
|
||||
echo ' echo "$at_dashes"'
|
||||
echo 'fi'
|
||||
echo
|
||||
sed -n "/^[#] Snippet (d$at_group(/,/^[#] Snippet )d$at_group)/p" $[0]
|
||||
sed -n "/^[#] Snippet (s$at_group(/,/^[#] Snippet )s$at_group)/p" $[0]
|
||||
echo 'exit 0'
|
||||
) | grep -v '^[#] Snippet' > debug-$at_group.sh
|
||||
chmod +x debug-$at_group.sh
|
||||
at_fail_count=`expr $at_fail_count + 1`
|
||||
done
|
||||
echo ', done'
|
||||
if $at_stop_on_error; then
|
||||
at_banner='ERROR: One of the tests failed, inhibiting subsequent tests'
|
||||
else
|
||||
at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed"
|
||||
fi
|
||||
fi
|
||||
at_dashes=`echo $at_banner | sed s/./=/g`
|
||||
echo
|
||||
echo "$at_dashes"
|
||||
echo "$at_banner"
|
||||
echo "$at_dashes"
|
||||
|
||||
if test -n "$at_failed_list"; then
|
||||
if test -z "$at_silent"; then
|
||||
echo
|
||||
echo 'When reporting failed tests to maintainers, do not merely list test'
|
||||
echo 'numbers, as the numbering changes between releases and pretests.'
|
||||
echo 'Be careful to give at least all the information you got about them.'
|
||||
echo 'You may investigate any problem if you feel able to do so, in which'
|
||||
echo 'case the generated debugging scripts provide good starting points.'
|
||||
echo "Go on and modify them at will. \`./debug-NN --help' gives usage"
|
||||
echo 'information. Now, failed tests will be executed again, verbosely.'
|
||||
for at_group in $at_failed_list; do
|
||||
./debug-$at_group.sh
|
||||
done
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
divert[]dnl
|
||||
])# AT_INIT
|
||||
|
||||
|
||||
|
||||
# AT_SETUP(DESCRIPTION)
|
||||
# ---------------------
|
||||
# Start a group of related tests, all to be executed in the same subshell.
|
||||
# The group is testing what DESCRIPTION says.
|
||||
AT_DEFINE([AT_SETUP],
|
||||
[AT_DEFINE([AT_ordinal], AT_EVAL(AT_ordinal + 1))
|
||||
pushdef([AT_group_description], [$1])
|
||||
pushdef([AT_data_files], )
|
||||
pushdef([AT_data_expout], )
|
||||
pushdef([AT_data_experr], )
|
||||
if $at_stop_on_error && test -n "$at_failed_list"; then :; else
|
||||
divert(1)[]dnl
|
||||
echo AT_LINE > at-check-line
|
||||
echo AT_LINE > at-setup-line
|
||||
if $at_verbose; then
|
||||
echo 'testing AT_group_description'
|
||||
echo $at_n " $at_c"
|
||||
fi
|
||||
if $at_verbose; then
|
||||
echo "AT_ordinal. $srcdir/AT_LINE..."
|
||||
else
|
||||
echo $at_n "substr(AT_ordinal. $srcdir/AT_LINE , 0, 30)[]$at_c"
|
||||
fi
|
||||
if test -z "$at_skip_mode"; then
|
||||
(
|
||||
[#] Snippet (d[]AT_ordinal[](
|
||||
[#] Testing AT_group_description
|
||||
[#] Snippet )d[]AT_ordinal[])
|
||||
[#] Snippet (s[]AT_ordinal[](
|
||||
[#] starting from `AT_LINE'.
|
||||
$at_traceon
|
||||
])
|
||||
|
||||
|
||||
# AT_CLEANUP(FILES)
|
||||
# -----------------
|
||||
# Complete a group of related tests, recursively remove those FILES
|
||||
# created within the test. There is no need to list stdout, stderr,
|
||||
# nor files created with AT_DATA.
|
||||
AT_DEFINE([AT_CLEANUP],
|
||||
$at_traceoff
|
||||
[[#] Snippet )s[]AT_ordinal[])
|
||||
)
|
||||
at_status=$?
|
||||
$at_verbose &&
|
||||
echo $at_n " AT_ordinal. $srcdir/`cat at-setup-line`: $at_c"
|
||||
case $at_status in
|
||||
0) echo ok
|
||||
;;
|
||||
77) echo "ignored near \``cat at-check-line`'"
|
||||
at_ignore_count=`expr $at_ignore_count + 1`
|
||||
;;
|
||||
*) echo "FAILED near \``cat at-check-line`'"
|
||||
at_failed_list="$at_failed_list AT_ordinal"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo 'ignored (skipped)'
|
||||
at_ignore_count=`expr $at_ignore_count + 1`
|
||||
fi
|
||||
at_test_count=AT_ordinal
|
||||
if $at_stop_on_error && test -n "$at_failed_list"; then :; else
|
||||
divert(0)[]dnl
|
||||
[#] Snippet (c[]AT_ordinal[](
|
||||
|
||||
rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr
|
||||
[#] Snippet )c[]AT_ordinal[])
|
||||
undivert(1)[]dnl
|
||||
rm ifelse([AT_data_files$1], , [-f], [-rf[]AT_data_files[]ifelse($1, , , [ $1])]) stdout stderr[]AT_data_expout[]AT_data_experr
|
||||
fi
|
||||
fi
|
||||
popdef([AT_data_experr])
|
||||
popdef([AT_data_expout])
|
||||
popdef([AT_data_files])
|
||||
popdef([AT_group_description])[]dnl
|
||||
])# AT_CLEANUP
|
||||
|
||||
|
||||
# AT_DATA(FILE, CONTENTS)
|
||||
# -----------------------
|
||||
# Initialize an input data FILE with given CONTENTS, which should end with
|
||||
# an end of line.
|
||||
# This macro is not robust to active symbols in CONTENTS *on purpose*.
|
||||
# If you don't want CONTENT to be evaluated, quote it twice.
|
||||
AT_DEFINE([AT_DATA],
|
||||
[AT_DEFINE([AT_data_files], AT_data_files[ ]$1)
|
||||
cat >$1 <<'_ATEOF'
|
||||
$2[]_ATEOF
|
||||
])
|
||||
|
||||
|
||||
# AT_CHECK(COMMANDS, [STATUS], STDOUT, STDERR)
|
||||
# --------------------------------------------
|
||||
# Execute a test by performing given shell COMMANDS. These commands
|
||||
# should normally exit with STATUS, while producing expected STDOUT and
|
||||
# STDERR contents. The special word `expout' for STDOUT means that file
|
||||
# `expout' contents has been set to the expected stdout. The special word
|
||||
# `experr' for STDERR means that file `experr' contents has been set to
|
||||
# the expected stderr.
|
||||
# STATUS is not checked if it is empty.
|
||||
# STDOUT and STDERR can be the special value `ignore', in which case
|
||||
# their content is not checked.
|
||||
AT_DEFINE([AT_CHECK],
|
||||
[$at_traceoff
|
||||
$at_verbose && echo "$srcdir/AT_LINE: patsubst([$1], [\([\"`$]\)], \\\1)"
|
||||
echo AT_LINE > at-check-line
|
||||
$at_check_stds && exec 5>&1 6>&2 1>stdout 2>stderr
|
||||
$at_traceon
|
||||
$1
|
||||
ifelse([$2], [], [],
|
||||
[at_status=$?
|
||||
if test $at_status != $2; then
|
||||
$at_verbose && echo "Exit code was $at_status, expected $2" >&6
|
||||
dnl Maybe there was an important message to read before it died.
|
||||
$at_verbose && $at_check_stds && cat stderr >&6
|
||||
dnl Preserve exit code 77.
|
||||
test $at_status = 77 && exit 77
|
||||
exit 1
|
||||
fi
|
||||
])dnl
|
||||
$at_traceoff
|
||||
if $at_check_stds; then
|
||||
dnl Restore stdout to fd1 and stderr to fd2.
|
||||
exec 1>&5 2>&6
|
||||
dnl If not verbose, neutralize the output of diff.
|
||||
$at_verbose || exec 1>/dev/null 2>/dev/null
|
||||
at_failed=false;
|
||||
AT_CASE([$4],
|
||||
ignore, [$at_verbose && cat stderr;:],
|
||||
experr, [AT_DEFINE([AT_data_experr], [ experr])dnl
|
||||
$at_diff experr stderr || at_failed=:],
|
||||
[], [$at_diff empty stderr || at_failed=:],
|
||||
[echo $at_n "patsubst([$4], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stderr || at_failed=:])
|
||||
AT_CASE([$3],
|
||||
ignore, [$at_verbose && cat stdout;:],
|
||||
expout, [AT_DEFINE([AT_data_expout], [ expout])dnl
|
||||
$at_diff expout stdout || at_failed=:],
|
||||
[], [$at_diff empty stdout || at_failed=:],
|
||||
[echo $at_n "patsubst([$3], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stdout || at_failed=:])
|
||||
if $at_failed; then
|
||||
exit 1
|
||||
else
|
||||
:
|
||||
fi
|
||||
fi
|
||||
$at_traceon
|
||||
])# AT_CHECK
|
||||
|
||||
|
||||
divert(0)dnl
|
||||
@@ -1,10 +0,0 @@
|
||||
# @configure_input@ -*- shell-script -*-
|
||||
# Configurable variable values for Bison test suite.
|
||||
# Copyright 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# We need a C compiler.
|
||||
CC='@CC@'
|
||||
CFLAGS='@CFLAGS@'
|
||||
|
||||
# We need `config.h'.
|
||||
CPPFLAGS="-I $top_builddir @CPPFLAGS@"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user