Compare commits

..
51 Commits
Author SHA1 Message Date
Akim Demaille 8c7d6a3de8 . 2001-08-15 08:56:45 +00:00
Akim Demaille e795bd7376 (compute_header_macro): Unconstify the result. 2001-08-15 08:53:15 +00:00
Akim Demaille 7cae438bd8 po/POTFILES.in: Complete it even more. 2001-08-15 08:49:20 +00:00
Akim Demaille c427611526 po/POTFILES.in: Complete. 2001-08-15 08:47:15 +00:00
Akim Demaille 45f8dd1ec5 Version 1.28c. 2001-08-15 08:44:16 +00:00
Akim Demaille e5aa395b38 More cvsignore. 2001-08-15 08:43:44 +00:00
Akim Demaille 0b8afb7723 * src/reader.c (readgram): Indent output macro YYSTYPE.
(packsymbols): Likewise.
(output_token_defines): Likewise.
* src/files.c: Standardize.
(compute_header_macro): New.
(defines_obstack_save): New. Use compute_header_macro.
(output_files): Update. Use defines_obstack_save.
2001-08-15 08:40:19 +00:00
Akim Demaille 683e29a634 Regen. 2001-08-15 08:38:25 +00:00
Akim Demaille f0130d39ff Formatting changes. 2001-08-15 08:32:42 +00:00
Akim Demaille f9a8293a3f * doc/bison.texinfo (Table of Symbols): Document
YYSTACK_USE_ALLOCA.
2001-08-15 08:25:10 +00:00
Akim Demaille 150ca7a72e * missing: Update from CVS Automake.
* config/config.guess, config/config.sub, config/texinfo.tex:
Update from gnu.org.
2001-08-15 08:09:19 +00:00
Akim Demaille 0a3b9e5fb5 Makefile.maint (CVS): New var. 2001-08-15 08:08:56 +00:00
Akim Demaille 69b5cec495 * Makefile.maint: Sync with CVS Autoconf. 2001-08-15 07:56:58 +00:00
Pascal Bart f2b5126e47 Apply GNU Free Documentation License to manual. 2001-08-14 14:13:16 +00:00
Marc Autret 4ecbf79698 Turn on %{source,header}_extension features.
* src/lex.c (percent_table): Un-CPP out header_extension and
source_extension.
* src/files.c (compute_exts_from_gf): Compare pointers with NULL.
(compute_exts_from_src): Remove conditions. It restores priorities
between options.
2001-08-14 11:28:48 +00:00
Marc Autret 95fb566259 * src/files.c (compute_base_names): Add extensions computing when
`--file-prefix' used.
Standardize function calls.
2001-08-14 10:38:12 +00:00
Marc Autret 78d09da9a5 * src/bison.simple (YYSTACK_USE_ALLOCA): Changed to allow users
defining it (defined but null disables alloca).
2001-08-13 21:37:22 +00:00
Marc Autret 5a009f2c4c * src/bison.simple (_yy_memcpy): CPP reformat. 2001-08-13 21:10:10 +00:00
Pascal Bart 1e41465a20 * tests/atconfig.in (CPPFLAGS): Fix. 2001-08-13 19:30:26 +00:00
Akim Demaille 79282c6c57 alloca.c, alloca.h and allocate.c are really to be removed. 2001-08-13 14:54:50 +00:00
Akim Demaille fabd3b431d Typos and Copyright. 2001-08-13 14:51:15 +00:00
Akim Demaille ec0926311c Update. 2001-08-13 14:49:18 +00:00
Pascal Bart b02deb443c Add unlink GPL file 2001-08-10 17:32:25 +00:00
Pascal Bart c67a198d15 Add GPL in an include file 2001-08-10 17:21:49 +00:00
Marc Autret 09a6de7e50 * src/print_graph.h: Fix.
* src/reader.c (read_declarations): Use parse_header_extension_decl ().
2001-08-10 10:44:44 +00:00
Akim Demaille b77b9ee0a3 * src/system.h: Provide default declarations for stpcpy, strndup,
and strnlen.
2001-08-10 09:35:50 +00:00
Akim Demaille a940e84e29 Regen. 2001-08-10 09:35:01 +00:00
Marc Autret 6f42a3e682 * doc/bison.texinfo (Locations): Update @$ stuff. 2001-08-10 08:40:02 +00:00
Marc Autret f1c63ceddc * doc/bison.texinfo (Locations): Update @$ stuff. 2001-08-10 08:16:14 +00:00
Marc Autret 3e259915e1 * doc/bison.texinfo (Locations): Update @$ stuff. 2001-08-09 22:35:26 +00:00
Marc Autret ca96bc2d17 * src/bison.simple (YYLLOC_DEFAULT): Update.
(yyparse): Adjust.
2001-08-09 19:59:29 +00:00
Marc Autret fd6b609da9 Adjust 2001-08-09 09:59:08 +00:00
Akim Demaille b6de699170 Add. 2001-08-09 09:59:03 +00:00
Akim Demaille 459ff06402 Regen. 2001-08-09 09:39:49 +00:00
Akim Demaille 4e8ef709e6 Update. 2001-08-09 06:57:09 +00:00
Marc Autret 08a161353c Update. 2001-08-08 23:16:44 +00:00
Marc Autret fdc6758b79 doc/bison.texinfo: Change @samp{$<@dots{}>} to @samp{$<@dots{}>@var{n}} in Section Actions in Mid-Rule. 2001-08-08 21:55:36 +00:00
Marc Autret 957d4dbf16 ChangeLog: Adjust. 2001-08-08 21:23:04 +00:00
Marc Autret 600cad3b84 VCG updates 2001-08-08 20:31:21 +00:00
Akim Demaille 0eca3194d6 More cvsignore. 2001-08-07 13:06:08 +00:00
Akim Demaille 976e528f02 * tests/atconfig.in (CPPFLAGS): Fix. 2001-08-07 13:03:20 +00:00
Akim Demaille 20e8e5cadf * src/print_graph.c (quote): New.
(print_core): Use it.
2001-08-07 08:18:32 +00:00
Akim Demaille c4b661269e * src/vcg.c (complain.h): Include it.
Unepitaize `return' invocations.
[NDEBUG] (main): Remove.
* src/vcg.h (node_t, edge_t, graph_t): Constify the char * memebers.
* src/files.c (open_files): Initialize graph_obstack.
* src/print_graph.c (print_actions): CPP out useless code.
(print_core): Don't output the last `n' in labels.
Use `quote'.
* src/files.c (output_files): Output the VCG file.
* src/main.c (main): Invoke print_graph ();
2001-08-07 07:58:43 +00:00
Akim Demaille ea4e548a4a PO Update. 2001-08-06 10:23:28 +00:00
Akim Demaille 3e3da79762 * src/print_graph.c (print_actions): CPP out useless code.
* src/vcg.c (complain.h): Include it.
Unepitaize `return' invocations.
* src/vcg.c [NDEBUG] (main): Remove.
2001-08-06 09:50:38 +00:00
Akim Demaille 78348431f2 PO Update. 2001-08-06 09:28:14 +00:00
Akim Demaille 22c2cbc078 Automaton VCG graph output.
Using option ``-g'' or long option ``--graph'', you can generate
a gram_filename.vcg file containing a VCG description of the LALR (1)
automaton of your grammar.
* src/main.c: Call to print_graph() function.
* src/getargs.h: Update.
* src/getargs.c (options): Update to catch `-g' and `--graph' options.
(graph_flag): New flag.
(longopts): Update.
(getargs): Add case `g'.
* src/files.c (graph_obstack): New obstack struct.
(open_files): Initialize new obstack.
(output_files): Saves graph_obstack if required.
* src/files.h (graph_obstack): New extern declaration.
* src/Makefile.am: Add new source files.
2001-08-06 09:22:33 +00:00
Akim Demaille ce4d5ce009 * src/print_graph.c, src/print_graph.h (graph): New.
* src/vcg.h: New file.
* src/vcg.c: New file, VCG graph handling.
2001-08-06 09:05:53 +00:00
Akim Demaille 7333d40316 Add of %source_extension and %header_extension which specify
the source or/and the header output file extension.
* src/files.c (compute_base_names): Remove initialisation of
src_extension and header_extension.
(compute_exts_from_gf): Update.
(compute_exts_from_src): Update.
(output_files): Update.
* src/reader.c (parse_header_extension_decl): New.
(parse_source_extension_decl): New.
(read_declarations): New case statements for the new tokens.
* src/lex.c (percent_table): Add entries for %source_extension
and %header_extension.
* src/lex.h (token_e): New tokens tok_hdrext and tok_srcext.
2001-08-06 08:51:41 +00:00
Akim Demaille 8416323152 * configure.in: Bump to 1.28c.
* doc/bison.texinfo: Texinfo thingies.
2001-08-06 08:35:21 +00:00
Akim Demaille 8303fc422a * tests/atconfig.in (CPPFLAGS): Add.
* tests/calc.at (AT_CHECK): Use CPPFLAGS.
2001-08-04 14:00:09 +00:00
71 changed files with 5672 additions and 1500 deletions
+5 -2
View File
@@ -4,5 +4,8 @@ config.h
config.log
config.status
stamp-h
bison-*.tar.gz
patches update-log
bison-*
patches
*.patch *.log log patches applied
*.prj
releases
+188
View File
@@ -1,3 +1,191 @@
2001-08-15 Akim Demaille <[email protected]>
Version 1.28c.
2001-08-15 Marc Autret <[email protected]>
* src/reader.c (readgram): Indent output macro YYSTYPE.
(packsymbols): Likewise.
(output_token_defines): Likewise.
* src/files.c: Standardize.
(compute_header_macro): New.
(defines_obstack_save): New. Use compute_header_macro.
(output_files): Update. Use defines_obstack_save.
2001-08-15 Akim Demaille <[email protected]>
* doc/bison.texinfo (Table of Symbols): Document
YYSTACK_USE_ALLOCA.
2001-08-15 Akim Demaille <[email protected]>
* missing: Update from CVS Automake.
* config/config.guess, config/config.sub, config/texinfo.tex:
Update from gnu.org.
2001-08-15 Akim Demaille <[email protected]>
* Makefile.maint: Sync with CVS Autoconf.
2001-08-14 Pascal Bart <[email protected]>
* doc/bison.texinfo: Include GNU Free Documentation License from
`fdl.texi'.
* doc/fdl.texi: Add to package.
2001-08-14 Marc Autret <[email protected]>
Turn on %{source,header}_extension features.
* src/lex.c (percent_table): Un-CPP out header_extension and
source_extension.
* src/files.c (compute_exts_from_gf): Compare pointers with NULL.
(compute_exts_from_src): Remove conditions. It restores priorities
between options.
2001-08-14 Marc Autret <[email protected]>
* src/files.c (compute_base_names): Add extensions computing when
`--file-prefix' used.
Standardize function calls.
2001-08-13 Marc Autret <[email protected]>
* src/bison.simple (YYSTACK_USE_ALLOCA): Changed to allow users
defining it (defined but null disables alloca).
2001-08-13 Marc Autret <[email protected]>
* src/bison.simple (_yy_memcpy): CPP reformat.
2001-08-13 Pascal Bart <[email protected]>
* tests/atconfig.in (CPPFLAGS): Fix.
2001-08-10 Pascal Bart <[email protected]>
* doc/bison.texinfo: Include GNU General Public License from
`gpl.texi'.
* doc/gpl.texi: Add to package.
2001-08-10 Marc Autret <[email protected]>
* src/print_graph.h: Fix.
* src/reader.c (read_declarations): Use parse_header_extension_decl ().
2001-08-10 Akim Demaille <[email protected]>
* src/system.h: Provide default declarations for stpcpy, strndup,
and strnlen.
2001-08-10 Robert Anisko <[email protected]>
* doc/bison.texinfo (Locations): Update @$ stuff.
2001-08-09 Robert Anisko <[email protected]>
* src/bison.simple (YYLLOC_DEFAULT): Update.
(yyparse): Adjust.
2001-08-08 Marc Autret <[email protected]>
* doc/bison.texinfo: Change @samp{$<@dots{}>} to
@samp{$<@dots{}>@var{n}} in Section Actions in Mid-Rule.
Reported by Fabrice Bauzac.
2001-08-08 Marc Autret <[email protected]>
* src/vcg_default.h: Use NULL instead of 0 to initialize pointers.
* src/vcg.c (output_node): Fix.
* src/vcg.h: Cleanup.
* src/print_graph.c: Add comments.
(node_output_size): New global variable. Simplify the formatting of
the VCG graph output.
(print_actions): Unused code is now used. It notifies the final state
and no action states in the VCG graph. It also give the reduce actions.
The `shift and goto' edges are red and the `go to state' edges are
blue.
Get the current node name and node_obstack by argument.
(node_obstack): New variable.
(print_state): Manage node_obstack.
(print_core): Use node_obstack given by argument.
A node is not only computed here but in print_actions also.
(print_graph): CPP out useless code instead of commenting it.
2001-08-07 Pascal Bart <[email protected]>
* tests/atconfig.in (CPPFLAGS): Fix.
2001-08-07 Akim Demaille <[email protected]>
* src/print_graph.c (quote): New.
(print_core): Use it.
2001-08-06 Akim Demaille <[email protected]>, Marc Autret <[email protected]>
* src/vcg.c (complain.h): Include it.
Unepitaize `return' invocations.
[NDEBUG] (main): Remove.
* src/vcg.h (node_t, edge_t, graph_t): Constify the char * members.
* src/files.c (open_files): Initialize graph_obstack.
* src/print_graph.c (print_actions): CPP out useless code.
(print_core): Don't output the last `\n' in labels.
Use `quote'.
* src/files.c (output_files): Output the VCG file.
* src/main.c (main): Invoke print_graph ();
2001-08-06 Marc Autret <[email protected]>
Automaton VCG graph output.
Using option ``-g'' or long option ``--graph'', you can generate
a gram_filename.vcg file containing a VCG description of the LALR (1)
automaton of your grammar.
* src/main.c: Call to print_graph() function.
* src/getargs.h: Update.
* src/getargs.c (options): Update to catch `-g' and `--graph' options.
(graph_flag): New flag.
(longopts): Update.
(getargs): Add case `g'.
* src/files.c (graph_obstack): New obstack struct.
(open_files): Initialize new obstack.
(output_files): Saves graph_obstack if required.
* src/files.h (graph_obstack): New extern declaration.
* src/Makefile.am: Add new source files.
2001-08-06 Marc Autret <[email protected]>
* src/print_graph.c, src/print_graph.h (graph): New.
* src/vcg.h: New file.
* src/vcg.c: New file, VCG graph handling.
2001-08-06 Marc Autret <[email protected]>
Add of %source_extension and %header_extension which specify
the source or/and the header output file extension.
* src/files.c (compute_base_names): Remove initialisation of
src_extension and header_extension.
(compute_exts_from_gf): Update.
(compute_exts_from_src): Update.
(output_files): Update.
* src/reader.c (parse_header_extension_decl): New.
(parse_source_extension_decl): New.
(read_declarations): New case statements for the new tokens.
* src/lex.c (percent_table): Add entries for %source_extension
and %header_extension.
* src/lex.h (token_e): New tokens tok_hdrext and tok_srcext.
2001-08-06 Marc Autret <[email protected]>
* configure.in: Bump to 1.28c.
* doc/bison.texinfo: Texinfo thingies.
2001-08-04 Pascal Bart <[email protected]>
* tests/atconfig.in (CPPFLAGS): Add.
* tests/calc.at (AT_CHECK): Use CPPFLAGS.
2001-08-03 Akim Demaille <[email protected]>
Version 1.28b.
+1 -1
View File
@@ -122,7 +122,7 @@ CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
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
config.hin configure configure.in missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+36 -18
View File
@@ -2,6 +2,31 @@
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
# CPPI, Bison, and Autoconf.
## Copyright 2001 Free Software Foundation, Inc.
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.
# 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
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
@@ -71,19 +96,18 @@ copyright-check:
# Sanity checks with the CVS repository.
cvs-tag-check:
echo $(this-cvs-tag); \
if cvs -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
exit 1; \
else :; fi
cvs-diff-check:
cvs diff | grep -v '^?' >cvs-diffs; \
if grep . cvs-diff >/dev/null; then \
echo "Some files are locally modified:" >&2; \
cat cvs-diffs >&2; \
exit 1; \
else \
if $(CVS) diff >cvs-diffs; then \
rm cvs-diffs; \
else \
echo "Some files are locally modified:" 1>&2; \
cat cvs-diffs; \
exit 1; \
fi
cvs-check: cvs-diff-check cvs-tag-check
@@ -93,18 +117,12 @@ maintainer-distcheck: changelog-check
$(MAKE) my-distcheck
# 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)
# 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: cvs-check maintainer-distcheck
cvs update po
cvs tag -c $(this-cvs-tag)
$(CVS) update po
$(CVS) tag -c $(this-cvs-tag)
$(MAKE) dist
# Use this to make sure we don't run these programs when building
@@ -204,7 +222,7 @@ announcement: NEWS ChangeLog $(rel-files)
echo; \
echo ChangeLog entries:; \
find . -name ChangeLog -maxdepth 2 \
| xargs cvs diff -up -r$(prev-cvs-tag) -rHEAD \
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
| sed -n 's/^+//p' \
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
@@ -248,7 +266,7 @@ 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 \
$(CVS) -d $(automake_repo) co -p automake/lib/$$f > $$f.t \
&& $(move_if_change) $$f.t $$f; \
done
@@ -273,5 +291,5 @@ alpha: local-check
ln $(rel-files) $(release_archive_dir)
chmod a-w $(rel-files)
echo $(VERSION) > $(prev_version_file)
cvs ci -m. $(prev_version_file)
$(CVS) ci -m. $(prev_version_file)
@$(emit-rsync-commands)
+6 -4
View File
@@ -1,9 +1,11 @@
Bison News
----------
Changes in version 1.28b:
Changes in version 1.28c:
* the input and the output files has automatically a similar extension.
* The Bison manual is now distributed under the terms of the GNU FDL.
* The input and the output files has automatically a similar extension.
* Russian translation added.
@@ -21,8 +23,8 @@ Changes in version 1.28b:
of the #line lines with path names including backslashes.
* New directives.
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose', and
`%debug'.
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
`%debug', `%source_extension' and `%header_extension'.
Changes in version 1.28:
+3
View File
@@ -1,8 +1,10 @@
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]
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]
@@ -10,6 +12,7 @@ Laurent Mascherpa [email protected]
Marc Autret [email protected]
Neil Booth [email protected]
Noah Friedman [email protected]
Pascal Bart [email protected]
Paul Eggert [email protected]
Piotr Gackiewicz [email protected]
Richard Stallman [email protected]
+1
View File
@@ -1 +1,2 @@
Makefile
*.t
+17 -4
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
timestamp='2001-07-12'
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
@@ -227,6 +227,9 @@ EOF
2-307)
UNAME_MACHINE="alphaev67"
;;
2-1307)
UNAME_MACHINE="alphaev68"
;;
esac
fi
rm -f $dummy.s $dummy
@@ -778,6 +781,9 @@ EOF
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
exit 0 ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
exit 0 ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -786,7 +792,7 @@ EOF
PCA57) UNAME_MACHINE=alphapca56 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
@@ -993,8 +999,8 @@ EOF
echo ns32k-sni-sysv
fi
exit 0 ;;
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <[email protected]>
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <[email protected]>
echo i586-unisys-sysv4
exit 0 ;;
*:UNIX_System_V:4*:FTX*)
@@ -1006,6 +1012,10 @@ EOF
# From [email protected].
echo i860-stratus-sysv4
exit 0 ;;
*:VOS:*:*)
# From [email protected].
echo hppa1.1-stratus-vos
exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
@@ -1098,6 +1108,9 @@ EOF
*:ITS:*:*)
echo pdp10-unknown-its
exit 0 ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
+83 -48
View File
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
timestamp='2001-06-08'
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
@@ -223,26 +223,35 @@ esac
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
| arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
| pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 \
| x86 | ppcbe | mipsbe | mipsle | shbe | shle \
| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
| hppa64 \
| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
| alphaev6[78] \
| we32k | ns16k | clipper | i370 | sh | sh[34] \
| powerpc | powerpcle \
| 1750a | dsp16xx | pdp10 | pdp11 \
| mips16 | mips64 | mipsel | mips64el \
| mips64orion | mips64orionel | mipstx39 | mipstx39el \
| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
| mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \
| sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
| v850 | c4x \
| thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
| pj | pjl | h8500 | z8k)
1750a | 580 \
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| c4x | clipper \
| d10v | d30v | dsp16xx \
| fr30 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| m32r | m68000 | m68k | m88k | mcore \
| mips16 | mips64 | mips64el | mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el | mips64vr4300 \
| mips64vr4300el | mips64vr5000 | mips64vr5000el \
| mipsbe | mipsel | mipsle | mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| ns16k | ns32k \
| openrisc \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
| s390 | s390x \
| sh | sh[34] | sh[34]eb | shbe | shle \
| sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
| strongarm \
| tahoe | thumb | tic80 | tron \
| v850 \
| we32k \
| x86 | xscale \
| z8k)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12)
@@ -265,31 +274,43 @@ case $basic_machine in
exit 1
;;
# Recognize the basic CPU types with company name.
# FIXME: clean up the formatting here.
vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
| arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
| power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
| xmp-* | ymp-* \
| x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
| hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
| hppa2.0n-* | hppa64-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
| alphaev6[78]-* \
| we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
| clipper-* | orion-* \
| sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \
| powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
| mips16-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* \
| mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
| mipstx39-* | mipstx39el-* | mcore-* \
| f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
| [cjt]90-* \
| m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
| thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
| bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
580-* \
| a29k-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alphapca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armv*-* \
| bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c54x-* \
| clipper-* | cray2-* | cydra-* \
| d10v-* | d30v-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
| m32r-* \
| m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | mcore-* \
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipsel-* \
| mipsle-* | mipstx39-* | mipstx39el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
| s390-* | s390x-* \
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
| sparc-* | sparc64-* | sparc86x-* | sparclite-* \
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \
| t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
| v850-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
| ymp-* \
| z8k-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -735,6 +756,16 @@ case $basic_machine in
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
@@ -946,7 +977,7 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
sh3 | sh4)
sh3 | sh4 | sh3eb | sh4eb)
basic_machine=sh-unknown
;;
sparc | sparcv9 | sparcv9b)
@@ -1035,7 +1066,8 @@ case $os in
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1359,6 +1391,9 @@ case $basic_machine in
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
-vos*)
vendor=stratus
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
+1 -1
View File
@@ -1 +1 @@
1.28
1.28c
+8 -4
View File
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2001-06-21.10}
\def\texinfoversion{2001-07-25.07}
%
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
% 2000, 01 Free Software Foundation, Inc.
@@ -1614,6 +1614,10 @@ where each line of input produces a line of output.}
\oldpage
\endgroup
%
% Need this before the \...aftertitlepage checks so that if they are
% in effect the toc pages will come out with page numbers.
\HEADINGSon
%
% If they want short, they certainly want long too.
\ifsetshortcontentsaftertitlepage
\shortcontents
@@ -1629,8 +1633,6 @@ where each line of input produces a line of output.}
\fi
%
\ifpdf \pdfmakepagedesttrue \fi
%
\HEADINGSon
}
\def\finishtitlepage{%
@@ -2392,13 +2394,15 @@ width0pt\relax} \fi
%
\def\ignore{\doignore{ignore}}
% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text.
% Also ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu,
% @documentdescription, and @direntry text.
%
\def\ifinfo{\doignore{ifinfo}}
\def\ifhtml{\doignore{ifhtml}}
\def\ifnottex{\doignore{ifnottex}}
\def\html{\doignore{html}}
\def\menu{\doignore{menu}}
\def\documentdescription{\doignore{documentdescription}}
\def\direntry{\doignore{direntry}}
% @dircategory CATEGORY -- specify a category of the dir file
Vendored
+10 -10
View File
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by Autoconf 2.52 for bison 1.28b.
# Generated by Autoconf 2.52 for bison 1.28c.
#
# Report bugs to <[email protected]>.
#
@@ -184,8 +184,8 @@ mandir='${prefix}/man'
# Identity of this package.
PACKAGE_NAME='bison'
PACKAGE_TARNAME='bison'
PACKAGE_VERSION='1.28b'
PACKAGE_STRING='bison 1.28b'
PACKAGE_VERSION='1.28c'
PACKAGE_STRING='bison 1.28c'
PACKAGE_BUGREPORT='[email protected]'
ac_prev=
@@ -602,7 +602,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<EOF
\`configure' configures bison 1.28b to adapt to many kinds of systems.
\`configure' configures bison 1.28c to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -668,7 +668,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bison 1.28b:";;
short | recursive ) echo "Configuration of bison 1.28c:";;
esac
cat <<\EOF
@@ -739,7 +739,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\EOF
bison configure 1.28b
bison configure 1.28c
generated by GNU Autoconf 2.52
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -754,7 +754,7 @@ cat >&5 <<EOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by bison $as_me 1.28b, which was
It was created by bison $as_me 1.28c, which was
generated by GNU Autoconf 2.52. Invocation command line was
$ $0 $@
@@ -1167,7 +1167,7 @@ fi
PACKAGE=bison
VERSION=1.28b
VERSION=1.28c
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ { echo "$as_me:1173: error: source directory already configured; run \"make distclean\" there first" >&5
@@ -7262,7 +7262,7 @@ EOF
cat >>$CONFIG_STATUS <<EOF
ac_cs_version="\\
bison config.status 1.28b
bison config.status 1.28c
configured by $0, generated by GNU Autoconf 2.52,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -7345,7 +7345,7 @@ cat >&5 << _ACEOF
## Running config.status. ##
## ----------------------- ##
This file was extended by $as_me (bison 1.28b) 2.52, executed with
This file was extended by $as_me (bison 1.28c) 2.52, executed with
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
+2 -2
View File
@@ -1,8 +1,8 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
AC_INIT(bison, 1.28b, [email protected])
AC_INIT(bison, 1.28c, [email protected])
AC_CONFIG_AUX_DIR(config)
AM_INIT_AUTOMAKE(bison, 1.28b)
AM_INIT_AUTOMAKE(bison, 1.28c)
AM_CONFIG_HEADER(config.h:config.hin)
# Initialize the test suite.
+1
View File
@@ -3,6 +3,7 @@ AUTOMAKE_OPTIONS = 1.4
info_TEXINFOS = bison.texinfo
man_MANS = bison.1
bison_TEXINFOS = gpl.texi fdl.texi
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
+5 -3
View File
@@ -98,6 +98,7 @@ AUTOMAKE_OPTIONS = 1.4
info_TEXINFOS = bison.texinfo
man_MANS = bison.1
bison_TEXINFOS = gpl.texi fdl.texi
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
@@ -114,7 +115,8 @@ man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = Makefile.am Makefile.in mdate-sh stamp-vti version.texi
DIST_COMMON = $(bison_TEXINFOS) Makefile.am Makefile.in stamp-vti \
version.texi
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
@@ -155,8 +157,8 @@ distclean-vti:
maintainer-clean-vti:
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
bison.info: bison.texinfo version.texi
bison.dvi: bison.texinfo version.texi
bison.info: bison.texinfo version.texi $(bison_TEXINFOS)
bison.dvi: bison.texinfo version.texi $(bison_TEXINFOS)
DVIPS = dvips
+105 -103
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -30,110 +30,112 @@ instead of in the original English.

Indirect:
bison.info-1: 1307
bison.info-2: 50189
bison.info-3: 99814
bison.info-4: 149692
bison.info-5: 196961
bison.info-1: 1313
bison.info-2: 50357
bison.info-3: 99982
bison.info-4: 148180
bison.info-5: 190964

Tag Table:
(Indirect)
Node: Top1307
Node: Introduction8543
Node: Conditions9818
Node: Copying11282
Node: Concepts30472
Node: Language and Grammar31551
Node: Grammar in Bison36567
Node: Semantic Values38491
Node: Semantic Actions40592
Node: Locations Overview41781
Node: Bison Parser43228
Node: Stages45540
Node: Grammar Layout46823
Node: Examples48080
Node: RPN Calc49215
Node: Rpcalc Decls50189
Node: Rpcalc Rules51776
Node: Rpcalc Input53576
Node: Rpcalc Line55037
Node: Rpcalc Expr56152
Node: Rpcalc Lexer58097
Node: Rpcalc Main60669
Node: Rpcalc Error61067
Node: Rpcalc Gen62075
Node: Rpcalc Compile63224
Node: Infix Calc64099
Node: Simple Error Recovery66806
Node: Multi-function Calc68692
Node: Mfcalc Decl70258
Node: Mfcalc Rules72281
Node: Mfcalc Symtab73661
Node: Exercises80034
Node: Grammar File80540
Node: Grammar Outline81388
Node: C Declarations82122
Node: Bison Declarations82702
Node: Grammar Rules83114
Node: C Code83574
Node: Symbols84504
Node: Rules89585
Node: Recursion91224
Node: Semantics92943
Node: Value Type94037
Node: Multiple Types94709
Node: Actions95726
Node: Action Types98511
Node: Mid-Rule Actions99814
Node: Locations105383
Node: Location Type106048
Node: Actions and Locations106606
Node: Location Default Action107770
Node: Declarations108977
Node: Token Decl110296
Node: Precedence Decl112309
Node: Union Decl113860
Node: Type Decl114704
Node: Expect Decl115610
Node: Start Decl117156
Node: Pure Decl117534
Node: Decl Summary119211
Node: Multiple Parsers124594
Node: Interface126088
Node: Parser Function126960
Node: Lexical127795
Node: Calling Convention129201
Node: Token Values131972
Node: Token Positions133121
Node: Pure Calling134006
Node: Error Reporting136938
Node: Action Features139060
Node: Algorithm142355
Node: Look-Ahead144648
Node: Shift/Reduce146780
Node: Precedence149692
Node: Why Precedence150343
Node: Using Precedence152208
Node: Precedence Examples153176
Node: How Precedence153877
Node: Contextual Precedence155026
Node: Parser States156817
Node: Reduce/Reduce158060
Node: Mystery Conflicts161621
Node: Stack Overflow165007
Node: Error Recovery166380
Node: Context Dependency171516
Node: Semantic Tokens172364
Node: Lexical Tie-ins175381
Node: Tie-in Recovery176929
Node: Debugging179101
Node: Invocation182402
Node: Bison Options183658
Node: Environment Variables187092
Node: Option Cross Key187940
Node: VMS Invocation188784
Node: Table of Symbols189568
Node: Glossary196961
Node: Index203251
Node: Top1313
Node: Introduction8698
Node: Conditions9973
Node: Copying11437
Node: Concepts30640
Node: Language and Grammar31719
Node: Grammar in Bison36735
Node: Semantic Values38659
Node: Semantic Actions40760
Node: Locations Overview41949
Node: Bison Parser43396
Node: Stages45708
Node: Grammar Layout46991
Node: Examples48248
Node: RPN Calc49383
Node: Rpcalc Decls50357
Node: Rpcalc Rules51944
Node: Rpcalc Input53744
Node: Rpcalc Line55205
Node: Rpcalc Expr56320
Node: Rpcalc Lexer58265
Node: Rpcalc Main60837
Node: Rpcalc Error61235
Node: Rpcalc Gen62243
Node: Rpcalc Compile63392
Node: Infix Calc64267
Node: Simple Error Recovery66974
Node: Multi-function Calc68860
Node: Mfcalc Decl70426
Node: Mfcalc Rules72449
Node: Mfcalc Symtab73829
Node: Exercises80202
Node: Grammar File80708
Node: Grammar Outline81556
Node: C Declarations82290
Node: Bison Declarations82870
Node: Grammar Rules83282
Node: C Code83742
Node: Symbols84672
Node: Rules89753
Node: Recursion91392
Node: Semantics93111
Node: Value Type94205
Node: Multiple Types94877
Node: Actions95894
Node: Action Types98679
Node: Mid-Rule Actions99982
Node: Locations105552
Node: Location Type106200
Node: Actions and Locations106758
Node: Location Default Action108914
Node: Declarations110377
Node: Token Decl111696
Node: Precedence Decl113709
Node: Union Decl115260
Node: Type Decl116104
Node: Expect Decl117010
Node: Start Decl118556
Node: Pure Decl118934
Node: Decl Summary120611
Node: Multiple Parsers125994
Node: Interface127488
Node: Parser Function128360
Node: Lexical129195
Node: Calling Convention130601
Node: Token Values133372
Node: Token Positions134521
Node: Pure Calling135406
Node: Error Reporting138338
Node: Action Features140460
Node: Algorithm143755
Node: Look-Ahead146048
Node: Shift/Reduce148180
Node: Precedence151092
Node: Why Precedence151743
Node: Using Precedence153608
Node: Precedence Examples154576
Node: How Precedence155277
Node: Contextual Precedence156426
Node: Parser States158217
Node: Reduce/Reduce159460
Node: Mystery Conflicts163021
Node: Stack Overflow166407
Node: Error Recovery167780
Node: Context Dependency172916
Node: Semantic Tokens173764
Node: Lexical Tie-ins176781
Node: Tie-in Recovery178329
Node: Debugging180501
Node: Invocation183802
Node: Bison Options185054
Node: Environment Variables188488
Node: Option Cross Key189336
Node: VMS Invocation190180
Node: Table of Symbols190964
Node: Glossary198603
Node: Copying This Manual204907
Node: GNU Free Documentation License205116
Node: Index224981

End Tag Table
+15 -11
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -31,7 +31,7 @@ instead of in the original English.

File: bison.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
This manual documents version 1.28a of Bison.
This manual documents version 1.28c of Bison.
* Menu:
@@ -55,6 +55,7 @@ Reference sections:
* Invocation:: How to run Bison (to produce the parser source file).
* Table of Symbols:: All the keywords of the Bison language are explained.
* Glossary:: Basic concepts are explained.
* Copying This Manual:: License for copying this manual.
* Index:: Cross-references to the text.
--- The Detailed Node Listing ---
@@ -195,6 +196,10 @@ Invoking Bison
* Option Cross Key:: Alphabetical list of long options.
* VMS Invocation:: Bison command syntax on VMS.
Copying This Manual
* GNU Free Documentation License:: License for copying this manual.

File: bison.info, Node: Introduction, Next: Conditions, Prev: Top, Up: Top
@@ -223,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.28a of Bison.
This edition corresponds to version 1.28c of Bison.

File: bison.info, Node: Conditions, Next: Copying, Prev: Introduction, Up: Top
@@ -263,8 +268,9 @@ GNU GENERAL PUBLIC LICENSE
**************************
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -552,8 +558,8 @@ modification follow.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
=============================================
Appendix: How to Apply These Terms to Your New Programs
=======================================================
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -566,7 +572,7 @@ convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
Copyright (C) 19YY NAME OF AUTHOR
Copyright (C) YYYY NAME OF AUTHOR
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
@@ -580,8 +586,7 @@ the "copyright" line and a pointer to where the full notice is found.
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.
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper
mail.
@@ -590,8 +595,7 @@ mail.
this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'.
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
+1 -1
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
+62 -104
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -52,7 +52,7 @@ N to use in `$N'.
set its value with an assignment to `$$', and actions later in the rule
can refer to the value using `$N'. Since there is no symbol to name
the action, there is no way to declare a data type for the value in
advance, so you must use the `$<...>' construct to specify a data type
advance, so you must use the `$<...>N' construct to specify a data type
each time you refer to this value.
There is no way to set the value of the entire rule with a mid-rule
@@ -165,7 +165,7 @@ Tracking Locations
Though grammar rules and semantic actions are enough to write a fully
functional parser, it can be useful to process some additionnal
informations, especially locations of tokens and groupings.
informations, especially symbol locations.
The way locations are handled is defined by providing a data type,
and actions to take when rules are matched.
@@ -213,19 +213,47 @@ elements being matched. The location of the Nth component of the right
hand side is `@N', while the location of the left hand side grouping is
`@$'.
Here is a simple example using the default data type for locations:
Here is a basic example using the default data type for locations:
exp: ...
| exp '+' exp
| exp '/' exp
{
@$.first_column = @1.first_column;
@$.first_line = @1.first_line;
@$.last_column = @3.last_column;
@$.last_line = @3.last_line;
$$ = $1 + $3;
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);
}
}
In the example above, there is no need to set the beginning of `@$'. The
output parser always sets `@$' to `@1' before executing the C code of a
given action, whether you provide a processing for locations or not.
As for semantic values, there is a default action for locations that
is run each time a rule is matched. It sets the beginning of `@$' to the
beginning of the first symbol, and the end of `@$' to the end of the
last symbol.
With this default action, the location tracking can be fully
automatic. The example above simply rewrites this way:
exp: ...
| 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);
}
}

File: bison.info, Node: Location Default Action, Prev: Actions and Locations, Up: Locations
@@ -235,26 +263,35 @@ Default Action for Locations
Actually, actions are not the best place to compute locations. Since
locations are much more general than semantic values, there is room in
the output parser to define a default action to take for each rule. The
`YYLLOC_DEFAULT' macro is called each time a rule is matched, before
the associated action is run.
the output parser to redefine the default action to take for each rule.
The `YYLLOC_DEFAULT' macro is called each time a rule is matched,
before the associated action is run.
This macro takes two parameters, the first one being the location of
the grouping (the result of the computation), and the second one being
the location of the last element matched. Of course, before
`YYLLOC_DEFAULT' is run, the result is set to the location of the first
component matched.
Most of the time, this macro is general enough to suppress location
dedicated code from semantic actions.
By default, this macro computes a location that ranges from the
beginning of the first element to the end of the last element. It is
defined this way:
The `YYLLOC_DEFAULT' macro takes three parameters. The first one is
the location of the grouping (the result of the computation). The
second one is an array holding locations of all right hand side
elements of the rule being matched. The last one is the size of the
right hand side rule.
#define YYLLOC_DEFAULT(Current, Last) \
Current.last_line = Last.last_line; \
Current.last_column = Last.last_column;
By default, it is defined this way:
Most of the time, the default action for locations is general enough to
suppress location dedicated code from most actions.
#define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.last_line = Rhs[N].last_line; \
Current.last_column = Rhs[N].last_column;
When defining `YYLLOC_DEFAULT', you should consider that:
* All arguments are free of side-effects. However, only the first
one (the result) should be modified by `YYLLOC_DEFAULT'.
* Before `YYLLOC_DEFAULT' is executed, the output parser sets `@$'
to `@1'.
* For consistency with semantic actions, valid indexes for the
location array range from 1 to N.

File: bison.info, Node: Declarations, Next: Multiple Parsers, Prev: Locations, Up: Grammar File
@@ -1241,82 +1278,3 @@ 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
Shift/Reduce Conflicts
======================
Suppose we are parsing a language which has if-then and if-then-else
statements, with a pair of rules like this:
if_stmt:
IF expr THEN stmt
| IF expr THEN stmt ELSE stmt
;
Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
specific keyword tokens.
When the `ELSE' token is read and becomes the look-ahead token, the
contents of the stack (assuming the input is valid) are just right for
reduction by the first rule. But it is also legitimate to shift the
`ELSE', because that would lead to eventual reduction by the second
rule.
This situation, where either a shift or a reduction would be valid,
is called a "shift/reduce conflict". Bison is designed to resolve
these conflicts by choosing to shift, unless otherwise directed by
operator precedence declarations. To see the reason for this, let's
contrast it with the other alternative.
Since the parser prefers to shift the `ELSE', the result is to attach
the else-clause to the innermost if-statement, making these two inputs
equivalent:
if x then if y then win (); else lose;
if x then do; if y then win (); else lose; end;
But if the parser chose to reduce when possible rather than shift,
the result would be to attach the else-clause to the outermost
if-statement, making these two inputs equivalent:
if x then if y then win (); else lose;
if x then do; if y then win (); end; else lose;
The conflict exists because the grammar as written is ambiguous:
either parsing of the simple nested if-statement is legitimate. The
established convention is that these ambiguities are resolved by
attaching the else-clause to the innermost if-statement; this is what
Bison accomplishes by choosing to shift rather than reduce. (It would
ideally be cleaner to write an unambiguous grammar, but that is very
hard to do in this case.) This particular ambiguity was first
encountered in the specifications of Algol 60 and is called the
"dangling `else'" ambiguity.
To avoid warnings from Bison about predictable, legitimate
shift/reduce conflicts, use the `%expect N' declaration. There will be
no warning as long as the number of shift/reduce conflicts is exactly N.
*Note Suppressing Conflict Warnings: Expect Decl.
The definition of `if_stmt' above is solely to blame for the
conflict, but the conflict does not actually appear without additional
rules. Here is a complete Bison input file that actually manifests the
conflict:
%token IF THEN ELSE variable
%%
stmt: expr
| if_stmt
;
if_stmt:
IF expr THEN stmt
| IF expr THEN stmt ELSE stmt
;
expr: variable
;
+84 -212
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -28,6 +28,85 @@ 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: Shift/Reduce, Next: Precedence, Prev: Look-Ahead, Up: Algorithm
Shift/Reduce Conflicts
======================
Suppose we are parsing a language which has if-then and if-then-else
statements, with a pair of rules like this:
if_stmt:
IF expr THEN stmt
| IF expr THEN stmt ELSE stmt
;
Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
specific keyword tokens.
When the `ELSE' token is read and becomes the look-ahead token, the
contents of the stack (assuming the input is valid) are just right for
reduction by the first rule. But it is also legitimate to shift the
`ELSE', because that would lead to eventual reduction by the second
rule.
This situation, where either a shift or a reduction would be valid,
is called a "shift/reduce conflict". Bison is designed to resolve
these conflicts by choosing to shift, unless otherwise directed by
operator precedence declarations. To see the reason for this, let's
contrast it with the other alternative.
Since the parser prefers to shift the `ELSE', the result is to attach
the else-clause to the innermost if-statement, making these two inputs
equivalent:
if x then if y then win (); else lose;
if x then do; if y then win (); else lose; end;
But if the parser chose to reduce when possible rather than shift,
the result would be to attach the else-clause to the outermost
if-statement, making these two inputs equivalent:
if x then if y then win (); else lose;
if x then do; if y then win (); end; else lose;
The conflict exists because the grammar as written is ambiguous:
either parsing of the simple nested if-statement is legitimate. The
established convention is that these ambiguities are resolved by
attaching the else-clause to the innermost if-statement; this is what
Bison accomplishes by choosing to shift rather than reduce. (It would
ideally be cleaner to write an unambiguous grammar, but that is very
hard to do in this case.) This particular ambiguity was first
encountered in the specifications of Algol 60 and is called the
"dangling `else'" ambiguity.
To avoid warnings from Bison about predictable, legitimate
shift/reduce conflicts, use the `%expect N' declaration. There will be
no warning as long as the number of shift/reduce conflicts is exactly N.
*Note Suppressing Conflict Warnings: Expect Decl.
The definition of `if_stmt' above is solely to blame for the
conflict, but the conflict does not actually appear without additional
rules. Here is a complete Bison input file that actually manifests the
conflict:
%token IF THEN ELSE variable
%%
stmt: expr
| if_stmt
;
if_stmt:
IF expr THEN stmt
| IF expr THEN stmt ELSE stmt
;
expr: variable
;

File: bison.info, Node: Precedence, Next: Contextual Precedence, Prev: Shift/Reduce, Up: Algorithm
@@ -867,10 +946,12 @@ manipulate filenames like `-o' or `-d'.
For example :
bison -d INFILE.YXX
will produce `infile.tab.cxx' and `infile.tab.hxx'. and
will produce `infile.tab.cxx' and `infile.tab.hxx'. and
bison -d INFILE.Y -o OUTPUT.C++
will produce `output.c++' and `outfile.h++'.
will produce `output.c++' and `outfile.h++'.
* Menu:
@@ -1056,212 +1137,3 @@ is equivalent to the following command under POSIX.
In the above example, the output file would instead be named
`foo_tab.c'.

File: bison.info, Node: Table of Symbols, Next: Glossary, Prev: Invocation, Up: Top
Bison Symbols
*************
`error'
A token name reserved for error recovery. This token may be used
in grammar rules so as to allow the Bison parser to recognize an
error in the grammar without halting the process. In effect, a
sentence containing an error may be recognized as valid. On a
parse error, the token `error' becomes the current look-ahead
token. Actions corresponding to `error' are then executed, and
the look-ahead token is reset to the token that originally caused
the violation. *Note Error Recovery::.
`YYABORT'
Macro to pretend that an unrecoverable syntax error has occurred,
by making `yyparse' return 1 immediately. The error reporting
function `yyerror' is not called. *Note The Parser Function
`yyparse': Parser Function.
`YYACCEPT'
Macro to pretend that a complete utterance of the language has been
read, by making `yyparse' return 0 immediately. *Note The Parser
Function `yyparse': Parser Function.
`YYBACKUP'
Macro to discard a value from the parser stack and fake a
look-ahead token. *Note Special Features for Use in Actions:
Action Features.
`YYERROR'
Macro to pretend that a syntax error has just been detected: call
`yyerror' and then perform normal error recovery if possible
(*note Error Recovery::), or (if recovery is impossible) make
`yyparse' return 1. *Note Error Recovery::.
`YYERROR_VERBOSE'
Macro that you define with `#define' in the Bison declarations
section to request verbose, specific error message strings when
`yyerror' is called.
`YYINITDEPTH'
Macro for specifying the initial size of the parser stack. *Note
Stack Overflow::.
`YYLEX_PARAM'
Macro for specifying an extra argument (or list of extra
arguments) for `yyparse' to pass to `yylex'. *Note Calling
Conventions for Pure Parsers: Pure Calling.
`YYLTYPE'
Macro for the data type of `yylloc'; a structure with four
members. *Note Data Types of Locations: Location Type.
`yyltype'
Default value for YYLTYPE.
`YYMAXDEPTH'
Macro for specifying the maximum size of the parser stack. *Note
Stack Overflow::.
`YYPARSE_PARAM'
Macro for specifying the name of a parameter that `yyparse' should
accept. *Note Calling Conventions for Pure Parsers: Pure Calling.
`YYRECOVERING'
Macro whose value indicates whether the parser is recovering from a
syntax error. *Note Special Features for Use in Actions: Action
Features.
`YYSTYPE'
Macro for the data type of semantic values; `int' by default.
*Note Data Types of Semantic Values: Value Type.
`yychar'
External integer variable that contains the integer value of the
current look-ahead token. (In a pure parser, it is a local
variable within `yyparse'.) Error-recovery rule actions may
examine this variable. *Note Special Features for Use in Actions:
Action Features.
`yyclearin'
Macro used in error-recovery rule actions. It clears the previous
look-ahead token. *Note Error Recovery::.
`yydebug'
External integer variable set to zero by default. If `yydebug' is
given a nonzero value, the parser will output information on input
symbols and parser action. *Note Debugging Your Parser: Debugging.
`yyerrok'
Macro to cause parser to recover immediately to its normal mode
after a parse error. *Note Error Recovery::.
`yyerror'
User-supplied function to be called by `yyparse' on error. The
function receives one argument, a pointer to a character string
containing an error message. *Note The Error Reporting Function
`yyerror': Error Reporting.
`yylex'
User-supplied lexical analyzer function, called with no arguments
to get the next token. *Note The Lexical Analyzer Function
`yylex': Lexical.
`yylval'
External variable in which `yylex' should place the semantic value
associated with a token. (In a pure parser, it is a local
variable within `yyparse', and its address is passed to `yylex'.)
*Note Semantic Values of Tokens: Token Values.
`yylloc'
External variable in which `yylex' should place the line and column
numbers associated with a token. (In a pure parser, it is a local
variable within `yyparse', and its address is passed to `yylex'.)
You can ignore this variable if you don't use the `@' feature in
the grammar actions. *Note Textual Positions of Tokens: Token
Positions.
`yynerrs'
Global variable which Bison increments each time there is a parse
error. (In a pure parser, it is a local variable within
`yyparse'.) *Note The Error Reporting Function `yyerror': Error
Reporting.
`yyparse'
The parser function produced by Bison; call this function to start
parsing. *Note The Parser Function `yyparse': Parser Function.
`%debug'
Equip the parser for debugging. *Note Decl Summary::.
`%defines'
Bison declaration to create a header file meant for the scanner.
*Note Decl Summary::.
`%left'
Bison declaration to assign left associativity to token(s). *Note
Operator Precedence: Precedence Decl.
`%no_lines'
Bison declaration to avoid generating `#line' directives in the
parser file. *Note Decl Summary::.
`%nonassoc'
Bison declaration to assign non-associativity to token(s). *Note
Operator Precedence: Precedence Decl.
`%prec'
Bison declaration to assign a precedence to a specific rule.
*Note Context-Dependent Precedence: Contextual Precedence.
`%pure_parser'
Bison declaration to request a pure (reentrant) parser. *Note A
Pure (Reentrant) Parser: Pure Decl.
`%right'
Bison declaration to assign right associativity to token(s).
*Note Operator Precedence: Precedence Decl.
`%start'
Bison declaration to specify the start symbol. *Note The
Start-Symbol: Start Decl.
`%token'
Bison declaration to declare token(s) without specifying
precedence. *Note Token Type Names: Token Decl.
`%token_table'
Bison declaration to include a token name table in the parser file.
*Note Decl Summary::.
`%type'
Bison declaration to declare nonterminals. *Note Nonterminal
Symbols: Type Decl.
`%union'
Bison declaration to specify several possible data types for
semantic values. *Note The Collection of Value Types: Union Decl.
These are the punctuation and delimiters used in Bison input:
`%%'
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.
`%{ %}'
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.
`/*...*/'
Comment delimiters, as in C.
`:'
Separates a rule's result from its components. *Note Syntax of
Grammar Rules: Rules.
`;'
Terminates a rule. *Note Syntax of Grammar Rules: Rules.
`|'
Separates alternate rules for the same result nonterminal. *Note
Syntax of Grammar Rules: Rules.
+614 -3
View File
@@ -8,7 +8,7 @@ END-INFO-DIR-ENTRY
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000 Free Software Foundation, Inc.
2000, 2001 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
@@ -29,7 +29,222 @@ included in translations approved by the Free Software Foundation
instead of in the original English.

File: bison.info, Node: Glossary, Next: Index, Prev: Table of Symbols, Up: Top
File: bison.info, Node: Table of Symbols, Next: Glossary, Prev: Invocation, Up: Top
Bison Symbols
*************
`error'
A token name reserved for error recovery. This token may be used
in grammar rules so as to allow the Bison parser to recognize an
error in the grammar without halting the process. In effect, a
sentence containing an error may be recognized as valid. On a
parse error, the token `error' becomes the current look-ahead
token. Actions corresponding to `error' are then executed, and
the look-ahead token is reset to the token that originally caused
the violation. *Note Error Recovery::.
`YYABORT'
Macro to pretend that an unrecoverable syntax error has occurred,
by making `yyparse' return 1 immediately. The error reporting
function `yyerror' is not called. *Note The Parser Function
`yyparse': Parser Function.
`YYACCEPT'
Macro to pretend that a complete utterance of the language has been
read, by making `yyparse' return 0 immediately. *Note The Parser
Function `yyparse': Parser Function.
`YYBACKUP'
Macro to discard a value from the parser stack and fake a
look-ahead token. *Note Special Features for Use in Actions:
Action Features.
`YYERROR'
Macro to pretend that a syntax error has just been detected: call
`yyerror' and then perform normal error recovery if possible
(*note Error Recovery::), or (if recovery is impossible) make
`yyparse' return 1. *Note Error Recovery::.
`YYERROR_VERBOSE'
Macro that you define with `#define' in the Bison declarations
section to request verbose, specific error message strings when
`yyerror' is called.
`YYINITDEPTH'
Macro for specifying the initial size of the parser stack. *Note
Stack Overflow::.
`YYLEX_PARAM'
Macro for specifying an extra argument (or list of extra
arguments) for `yyparse' to pass to `yylex'. *Note Calling
Conventions for Pure Parsers: Pure Calling.
`YYLTYPE'
Macro for the data type of `yylloc'; a structure with four
members. *Note Data Types of Locations: Location Type.
`yyltype'
Default value for YYLTYPE.
`YYMAXDEPTH'
Macro for specifying the maximum size of the parser stack. *Note
Stack Overflow::.
`YYPARSE_PARAM'
Macro for specifying the name of a parameter that `yyparse' should
accept. *Note Calling Conventions for Pure Parsers: Pure Calling.
`YYRECOVERING'
Macro whose value indicates whether the parser is recovering from a
syntax error. *Note Special Features for Use in Actions: Action
Features.
`YYSTACK_USE_ALLOCA'
Macro used to control the use of `alloca'. If defined to `0', the
parser will not use `alloca' but `malloc' when trying to grow its
internal stacks. Do _not_ define `YYSTACK_USE_ALLOCA' to anything
else.
`YYSTYPE'
Macro for the data type of semantic values; `int' by default.
*Note Data Types of Semantic Values: Value Type.
`yychar'
External integer variable that contains the integer value of the
current look-ahead token. (In a pure parser, it is a local
variable within `yyparse'.) Error-recovery rule actions may
examine this variable. *Note Special Features for Use in Actions:
Action Features.
`yyclearin'
Macro used in error-recovery rule actions. It clears the previous
look-ahead token. *Note Error Recovery::.
`yydebug'
External integer variable set to zero by default. If `yydebug' is
given a nonzero value, the parser will output information on input
symbols and parser action. *Note Debugging Your Parser: Debugging.
`yyerrok'
Macro to cause parser to recover immediately to its normal mode
after a parse error. *Note Error Recovery::.
`yyerror'
User-supplied function to be called by `yyparse' on error. The
function receives one argument, a pointer to a character string
containing an error message. *Note The Error Reporting Function
`yyerror': Error Reporting.
`yylex'
User-supplied lexical analyzer function, called with no arguments
to get the next token. *Note The Lexical Analyzer Function
`yylex': Lexical.
`yylval'
External variable in which `yylex' should place the semantic value
associated with a token. (In a pure parser, it is a local
variable within `yyparse', and its address is passed to `yylex'.)
*Note Semantic Values of Tokens: Token Values.
`yylloc'
External variable in which `yylex' should place the line and column
numbers associated with a token. (In a pure parser, it is a local
variable within `yyparse', and its address is passed to `yylex'.)
You can ignore this variable if you don't use the `@' feature in
the grammar actions. *Note Textual Positions of Tokens: Token
Positions.
`yynerrs'
Global variable which Bison increments each time there is a parse
error. (In a pure parser, it is a local variable within
`yyparse'.) *Note The Error Reporting Function `yyerror': Error
Reporting.
`yyparse'
The parser function produced by Bison; call this function to start
parsing. *Note The Parser Function `yyparse': Parser Function.
`%debug'
Equip the parser for debugging. *Note Decl Summary::.
`%defines'
Bison declaration to create a header file meant for the scanner.
*Note Decl Summary::.
`%left'
Bison declaration to assign left associativity to token(s). *Note
Operator Precedence: Precedence Decl.
`%no_lines'
Bison declaration to avoid generating `#line' directives in the
parser file. *Note Decl Summary::.
`%nonassoc'
Bison declaration to assign non-associativity to token(s). *Note
Operator Precedence: Precedence Decl.
`%prec'
Bison declaration to assign a precedence to a specific rule.
*Note Context-Dependent Precedence: Contextual Precedence.
`%pure_parser'
Bison declaration to request a pure (reentrant) parser. *Note A
Pure (Reentrant) Parser: Pure Decl.
`%right'
Bison declaration to assign right associativity to token(s).
*Note Operator Precedence: Precedence Decl.
`%start'
Bison declaration to specify the start symbol. *Note The
Start-Symbol: Start Decl.
`%token'
Bison declaration to declare token(s) without specifying
precedence. *Note Token Type Names: Token Decl.
`%token_table'
Bison declaration to include a token name table in the parser file.
*Note Decl Summary::.
`%type'
Bison declaration to declare nonterminals. *Note Nonterminal
Symbols: Type Decl.
`%union'
Bison declaration to specify several possible data types for
semantic values. *Note The Collection of Value Types: Union Decl.
These are the punctuation and delimiters used in Bison input:
`%%'
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.
`%{ %}'
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.
`/*...*/'
Comment delimiters, as in C.
`:'
Separates a rule's result from its components. *Note Syntax of
Grammar Rules: Rules.
`;'
Terminates a rule. *Note Syntax of Grammar Rules: Rules.
`|'
Separates alternate rules for the same result nonterminal. *Note
Syntax of Grammar Rules: Rules.

File: bison.info, Node: Glossary, Next: Copying This Manual, Prev: Table of Symbols, Up: Top
Glossary
********
@@ -195,7 +410,402 @@ Terminal symbol
Grammar.

File: bison.info, Node: Index, Prev: Glossary, Up: Top
File: bison.info, Node: Copying This Manual, Next: Index, Prev: Glossary, Up: Top
Copying This Manual
*******************
* Menu:
* GNU Free Documentation License:: License for copying this manual.

File: bison.info, Node: GNU Free Documentation License, Up: Copying This Manual
GNU Free Documentation License
==============================
Version 1.1, March 2000
Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
written document "free" in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense.
It complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for
free software, because free software needs free documentation: a
free program should come with manuals providing the same freedoms
that the software does. But this License is not limited to
software manuals; it can be used for any textual work, regardless
of subject matter or whether it is published as a printed book.
We recommend this License principally for works whose purpose is
instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The "Document", below, refers to
any such manual or work. Any member of the public is a licensee,
and is addressed as "you".
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter
section of the Document that deals exclusively with the
relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains
nothing that could fall directly within that overall subject.
(For example, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.)
The relationship could be a matter of historical connection with
the subject or with related matters, or of legal, commercial,
philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose
titles are designated, as being those of Invariant Sections, in
the notice that says that the Document is released under this
License.
The "Cover Texts" are certain short passages of text that are
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
that says that the Document is released under this License.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly
and straightforwardly with generic text editors or (for images
composed of pixels) generic paint programs or (for drawings) some
widely available drawing editor, and that is suitable for input to
text formatters or for automatic translation to a variety of
formats suitable for input to text formatters. A copy made in an
otherwise Transparent file format whose markup has been designed
to thwart or discourage subsequent modification by readers is not
Transparent. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format,
SGML or XML using a publicly available DTD, and
standard-conforming simple HTML designed for human modification.
Opaque formats include PostScript, PDF, proprietary formats that
can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the
material this License requires to appear in the title page. For
works in formats which do not have any title page as such, "Title
Page" means the text near the most prominent appearance of the
work's title, preceding the beginning of the body of the text.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License
applies to the Document are reproduced in all copies, and that you
add no other conditions whatsoever to those of this License. You
may not use technical measures to obstruct or control the reading
or further copying of the copies you make or distribute. However,
you may accept compensation in exchange for copies. If you
distribute a large enough number of copies you must also follow
the conditions in section 3.
You may also lend copies, under the same conditions stated above,
and you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than
100, and the Document's license notice requires Cover Texts, you
must enclose the copies in covers that carry, clearly and legibly,
all these Cover Texts: Front-Cover Texts on the front cover, and
Back-Cover Texts on the back cover. Both covers must also clearly
and legibly identify you as the publisher of these copies. The
front cover must present the full title with all words of the
title equally prominent and visible. You may add other material
on the covers in addition. Copying with changes limited to the
covers, as long as they preserve the title of the Document and
satisfy these conditions, can be treated as verbatim copying in
other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque copy, or
state in or with each Opaque copy a publicly-accessible
computer-network location containing a complete Transparent copy
of the Document, free of added material, which the general
network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the
latter option, you must take reasonably prudent steps, when you
begin distribution of Opaque copies in quantity, to ensure that
this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you
distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of
the Document well before redistributing any large number of
copies, to give them a chance to provide you with an updated
version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document
under the conditions of sections 2 and 3 above, provided that you
release the Modified Version under precisely this License, with
the Modified Version filling the role of the Document, thus
licensing distribution and modification of the Modified Version to
whoever possesses a copy of it. In addition, you must do these
things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title
distinct from that of the Document, and from those of
previous versions (which should, if there were any, be listed
in the History section of the Document). You may use the
same title as a previous version if the original publisher of
that version gives permission.
B. List on the Title Page, as authors, one or more persons or
entities responsible for authorship of the modifications in
the Modified Version, together with at least five of the
principal authors of the Document (all of its principal
authors, if it has less than five).
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license
notice giving the public permission to use the Modified
Version under the terms of this License, in the form shown in
the Addendum below.
G. Preserve in that license notice the full lists of Invariant
Sections and required Cover Texts given in the Document's
license notice.
H. Include an unaltered copy of this License.
I. Preserve the section entitled "History", and its title, and
add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on
the Title Page. If there is no section entitled "History" in
the Document, create one stating the title, year, authors,
and publisher of the Document as given on its Title Page,
then add an item describing the Modified Version as stated in
the previous sentence.
J. Preserve the network location, if any, given in the Document
for public access to a Transparent copy of the Document, and
likewise the network locations given in the Document for
previous versions it was based on. These may be placed in
the "History" section. You may omit a network location for a
work that was published at least four years before the
Document itself, or if the original publisher of the version
it refers to gives permission.
K. In any section entitled "Acknowledgments" or "Dedications",
preserve the section's title, and preserve in the section all
the substance and tone of each of the contributor
acknowledgments and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section
titles.
M. Delete any section entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section as "Endorsements" or to
conflict in title with any Invariant Section.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no
material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do this,
add their titles to the list of Invariant Sections in the Modified
Version's license notice. These titles must be distinct from any
other section titles.
You may add a section entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text
has been approved by an organization as the authoritative
definition of a standard.
You may add a passage of up to five words as a Front-Cover Text,
and a passage of up to 25 words as a Back-Cover Text, to the end
of the list of Cover Texts in the Modified Version. Only one
passage of Front-Cover Text and one of Back-Cover Text may be
added by (or through arrangements made by) any one entity. If the
Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may
replace the old one, on explicit permission from the previous
publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this
License give permission to use their names for publicity for or to
assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under
this License, under the terms defined in section 4 above for
modified versions, provided that you include in the combination
all of the Invariant Sections of all of the original documents,
unmodified, and list them all as Invariant Sections of your
combined work in its license notice.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name
but different contents, make the title of each such section unique
by adding at the end of it, in parentheses, the name of the
original author or publisher of that section if known, or else a
unique number. Make the same adjustment to the section titles in
the list of Invariant Sections in the license notice of the
combined work.
In the combination, you must combine any sections entitled
"History" in the various original documents, forming one section
entitled "History"; likewise combine any sections entitled
"Acknowledgments", and any sections entitled "Dedications". You
must delete all sections entitled "Endorsements."
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other
documents released under this License, and replace the individual
copies of this License in the various documents with a single copy
that is included in the collection, provided that you follow the
rules of this License for verbatim copying of each of the
documents in all other respects.
You may extract a single document from such a collection, and
distribute it individually under this License, provided you insert
a copy of this License into the extracted document, and follow
this License in all other respects regarding verbatim copying of
that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
a storage or distribution medium, does not as a whole count as a
Modified Version of the Document, provided no compilation
copyright is claimed for the compilation. Such a compilation is
called an "aggregate", and this License does not apply to the
other self-contained works thus compiled with the Document, on
account of their being thus compiled, if they are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one
quarter of the entire aggregate, the Document's Cover Texts may be
placed on covers that surround only the Document within the
aggregate. Otherwise they must appear on covers around the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
4. Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License provided that you also include the
original English version of this License. In case of a
disagreement between the translation and the original English
version of this License, the original English version will prevail.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided for under this License. Any other
attempt to copy, modify, sublicense or distribute the Document is
void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of
the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
`http://www.gnu.org/copyleft/'.
Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered
version of this License "or any later version" applies to it, you
have the option of following the terms and conditions either of
that specified version or of any later version that has been
published (not as a draft) by the Free Software Foundation. If
the Document does not specify a version number of this License,
you may choose any version ever published (not as a draft) by the
Free Software Foundation.
ADDENDUM: How to use this License for your documents
----------------------------------------------------
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
If you have no Invariant Sections, write "with no Invariant Sections"
instead of saying which ones are invariant. If you have no Front-Cover
Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
LIST"; likewise for Back-Cover Texts.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License, to
permit their use in free software.

File: bison.info, Node: Index, Prev: Copying This Manual, Up: Top
Index
*****
@@ -285,6 +895,7 @@ Index
* error reporting routine: Rpcalc Error.
* examples, simple: Examples.
* exercises: Exercises.
* FDL, GNU Free Documentation License: GNU Free Documentation License.
* file format: Grammar Layout.
* finite-state machine: Parser States.
* formal grammar: Grammar in Bison.
+122 -425
View File
@@ -46,7 +46,8 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the Bison parser generator.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999, 2000
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000, 2001
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -88,7 +89,7 @@ instead of in the original English.
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998,
1999, 2000
1999, 2000, 2001
Free Software Foundation, Inc.
@sp 2
@@ -155,6 +156,7 @@ Reference sections:
* Invocation:: How to run Bison (to produce the parser source file).
* Table of Symbols:: All the keywords of the Bison language are explained.
* Glossary:: Basic concepts are explained.
* Copying This Manual:: License for copying this manual.
* Index:: Cross-references to the text.
--- The Detailed Node Listing ---
@@ -294,6 +296,11 @@ Invoking Bison
in alphabetical order by short options.
* Option Cross Key:: Alphabetical list of long options.
* VMS Invocation:: Bison command syntax on VMS.
Copying This Manual
* GNU Free Documentation License:: License for copying this manual.
@end menu
@node Introduction, Conditions, Top, Top
@@ -350,398 +357,7 @@ encourage people to make other software free. So we decided to make the
practical conditions for using Bison match the practical conditions for
using the other GNU tools.
@node Copying, Concepts, Conditions, Top
@unnumbered GNU GENERAL PUBLIC LICENSE
@center Version 2, June 1991
@display
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@unnumberedsec Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software---to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
@iftex
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@end iftex
@ifinfo
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@end ifinfo
@enumerate 0
@item
This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The ``Program'', below,
refers to any such program or work, and a ``work based on the Program''
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term ``modification''.) Each licensee is addressed as ``you''.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
@item
You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
@item
You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
@enumerate a
@item
You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
@item
You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
@item
If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
@end enumerate
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
@item
You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
@enumerate a
@item
Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
@item
Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
@item
Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
@end enumerate
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
@item
You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
@item
You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
@item
Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
@item
If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
@item
If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
@item
The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and ``any
later version'', you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
@item
If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
@iftex
@heading NO WARRANTY
@end iftex
@ifinfo
@center NO WARRANTY
@end ifinfo
@item
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
@item
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
@end enumerate
@iftex
@heading END OF TERMS AND CONDITIONS
@end iftex
@ifinfo
@center END OF TERMS AND CONDITIONS
@end ifinfo
@page
@unnumberedsec How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the ``copyright'' line and a pointer to where the full notice is found.
@smallexample
@var{one line to give the program's name and a brief idea of what it does.}
Copyright (C) 19@var{yy} @var{name of author}
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.
@end smallexample
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
@smallexample
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@end smallexample
The hypothetical commands @samp{show w} and @samp{show c} should show
the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than @samp{show w} and
@samp{show c}; they could even be mouse-clicks or menu items---whatever
suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a ``copyright disclaimer'' for the program, if
necessary. Here is a sample; alter the names:
@smallexample
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
@var{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
@end smallexample
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
@include gpl.texi
@node Concepts, Examples, Copying, Top
@chapter The Concepts of Bison
@@ -2730,8 +2346,8 @@ The mid-rule action can also have a semantic value. The action can set
its value with an assignment to @code{$$}, and actions later in the rule
can refer to the value using @code{$@var{n}}. Since there is no symbol
to name the action, there is no way to declare a data type for the value
in advance, so you must use the @samp{$<@dots{}>} construct to specify a
data type each time you refer to this value.
in advance, so you must use the @samp{$<@dots{}>@var{n}} construct to
specify a data type each time you refer to this value.
There is no way to set the value of the entire rule with a mid-rule
action, because assignments to @code{$$} do not have that effect. The
@@ -2877,7 +2493,9 @@ actually does to implement mid-rule actions.
Though grammar rules and semantic actions are enough to write a fully
functional parser, it can be useful to process some additionnal informations,
especially locations of tokens and groupings.
especially symbol locations.
@c (terminal or not) ?
The way locations are handled is defined by providing a data type, and actions
to take when rules are matched.
@@ -2927,24 +2545,55 @@ The location of the @var{n}th component of the right hand side is
@code{@@@var{n}}, while the location of the left hand side grouping is
@code{@@$}.
Here is a simple example using the default data type for locations:
Here is a basic example using the default data type for locations:
@example
@group
exp: @dots{}
| exp '+' exp
| exp '/' exp
@{
@@$.first_column = @@1.first_column;
@@$.first_line = @@1.first_line;
@@$.last_column = @@3.last_column;
@@$.last_line = @@3.last_line;
$$ = $1 + $3;
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);
@}
@}
@end group
@end example
@noindent
In the example above, there is no need to set the beginning of @code{@@$}. The
output parser always sets @code{@@$} to @code{@@1} before executing the C
code of a given action, whether you provide a processing for locations or not.
As for semantic values, there is a default action for locations that is
run each time a rule is matched. It sets the beginning of @code{@@$} to the
beginning of the first symbol, and the end of @code{@@$} to the end of the
last symbol.
With this default action, the location tracking can be fully automatic. The
example above simply rewrites this way:
@example
@group
exp: @dots{}
| 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);
@}
@}
@end group
@end example
@node Location Default Action, , Actions and Locations, Locations
@subsection Default Action for Locations
@@ -2952,34 +2601,43 @@ code of a given action, whether you provide a processing for locations or not.
Actually, actions are not the best place to compute locations. Since locations
are much more general than semantic values, there is room in the output parser
to define a default action to take for each rule. The @code{YYLLOC_DEFAULT}
macro is called each time a rule is matched, before the associated action is
run.
to redefine the default action to take for each rule. The
@code{YYLLOC_DEFAULT} macro is called each time a rule is matched, before the
associated action is run.
@c Documentation for the old (?) YYLLOC_DEFAULT
Most of the time, this macro is general enough to suppress location
dedicated code from semantic actions.
This macro takes two parameters, the first one being the location of the
grouping (the result of the computation), and the second one being the
location of the last element matched. Of course, before @code{YYLLOC_DEFAULT}
is run, the result is set to the location of the first component matched.
The @code{YYLLOC_DEFAULT} macro takes three parameters. The first one is
the location of the grouping (the result of the computation). The second one
is an array holding locations of all right hand side elements of the rule
being matched. The last one is the size of the right hand side rule.
By default, this macro computes a location that ranges from the beginning of
the first element to the end of the last element. It is defined this way:
By default, it is defined this way:
@example
@group
#define YYLLOC_DEFAULT(Current, Last) \
Current.last_line = Last.last_line; \
Current.last_column = Last.last_column;
#define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.last_line = Rhs[N].last_line; \
Current.last_column = Rhs[N].last_column;
@end group
@end example
@c not Documentation for the old (?) YYLLOC_DEFAULT
When defining @code{YYLLOC_DEFAULT}, you should consider that:
@noindent
@itemize @bullet
@item
All arguments are free of side-effects. However, only the first one (the
result) should be modified by @code{YYLLOC_DEFAULT}.
Most of the time, the default action for locations is general enough to
suppress location dedicated code from most actions.
@item
Before @code{YYLLOC_DEFAULT} is executed, the output parser sets @code{@@$}
to @code{@@1}.
@item
For consistency with semantic actions, valid indexes for the location array
range from 1 to @var{n}.
@end itemize
@node Declarations, Multiple Parsers, Locations, Grammar File
@section Bison Declarations
@@ -3387,6 +3045,21 @@ This output file is essential if you wish to put the definition of
be able to refer to token type codes and the variable
@code{yylval}. @xref{Token Values, ,Semantic Values of Tokens}.@refill
@c @item %source_extension
@c Specify the extension of the parser output file.
@c
@c For example, a grammar file named @file{foo.yy} and containing a
@c @code{%source_extension .cpp} directive will produce a parser file
@c named @file{foo.tab.cpp}
@c
@c @item %header_extension
@c Specify the extension of the parser header file generated when
@c @code{%define} or @samp{-d} are used.
@c
@c For example, a garmmar file named @file{foo.ypp} and containing a
@c @code{%header_extension .hh} directive will produce a header file
@c named @file{foo.tab.hh}
@item %verbose
Write an extra output file containing verbose descriptions of the
parser states and what is done for each type of look-ahead token in
@@ -5081,7 +4754,7 @@ Here @var{infile} is the grammar file name, which usually ends in
with @samp{.tab.c}. Thus, the @samp{bison foo.y} filename yields
@file{foo.tab.c}, and the @samp{bison hack/foo.y} filename yields
@file{hack/foo.tab.c}. It's is also possible, in case you are writting
C++ code instead of C in your grammar file, to name it @file{foo.ypp}
C++ code instead of C in your grammar file, to name it @file{foo.ypp}
or @file{foo.y++}. Then, the output files will take an extention like
the given one as input (repectively @file{foo.tab.cpp} and @file{foo.tab.c++}).
This feature takes effect with all options that manipulate filenames like
@@ -5092,14 +4765,15 @@ For example :
@example
bison -d @var{infile.yxx}
@end example
@noindent
will produce @file{infile.tab.cxx} and @file{infile.tab.hxx}. and
@example
bison -d @var{infile.y} -o @var{output.c++}
@end example
@noindent
will produce @file{output.c++} and @file{outfile.h++}.
@refill
@menu
* Bison Options:: All the options described in detail,
@@ -5393,6 +5067,12 @@ accept. @xref{Pure Calling,, Calling Conventions for Pure Parsers}.
Macro whose value indicates whether the parser is recovering from a
syntax error. @xref{Action Features, ,Special Features for Use in Actions}.
@item YYSTACK_USE_ALLOCA
Macro used to control the use of @code{alloca}. If defined to @samp{0},
the parser will not use @code{alloca} but @code{malloc} when trying to
grow its internal stacks. Do @emph{not} define @code{YYSTACK_USE_ALLOCA}
to anything else.
@item YYSTYPE
Macro for the data type of semantic values; @code{int} by default.
@xref{Value Type, ,Data Types of Semantic Values}.
@@ -5456,6 +5136,14 @@ Equip the parser for debugging. @xref{Decl Summary}.
Bison declaration to create a header file meant for the scanner.
@xref{Decl Summary}.
@c @item %source_extension
@c Bison declaration to specify the generated parser output file extension.
@c @xref{Decl Summary}.
@c
@c @item %header_extension
@c Bison declaration to specify the generated parser header file extension
@c if required. @xref{Decl Summary}.
@item %left
Bison declaration to assign left associativity to token(s).
@xref{Precedence Decl, ,Operator Precedence}.
@@ -5528,7 +5216,7 @@ Separates alternate rules for the same result nonterminal.
@xref{Rules, ,Syntax of Grammar Rules}.
@end table
@node Glossary, Index, Table of Symbols, Top
@node Glossary, Copying This Manual, Table of Symbols, Top
@appendix Glossary
@cindex glossary
@@ -5689,7 +5377,16 @@ grammatically indivisible. The piece of text it represents is a token.
@xref{Language and Grammar, ,Languages and Context-Free Grammars}.
@end table
@node Index, , Glossary, Top
@node Copying This Manual, Index, Glossary, Top
@appendix Copying This Manual
@menu
* GNU Free Documentation License:: License for copying this manual.
@end menu
@include fdl.texi
@node Index, , Copying This Manual, Top
@unnumbered Index
@printindex cp
+403
View File
@@ -0,0 +1,403 @@
@node GNU Free Documentation License
@appendixsec GNU Free Documentation License
@cindex FDL, GNU Free Documentation License
@center Version 1.1, March 2000
@display
Copyright @copyright{} 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@enumerate 0
@item
PREAMBLE
The purpose of this License is to make a manual, textbook, or other
written document @dfn{free} in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without
modifying it, either commercially or noncommercially. Secondarily,
this License preserves for the author and publisher a way to get
credit for their work, while not being considered responsible for
modifications made by others.
This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
@item
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work that contains a
notice placed by the copyright holder saying it can be distributed
under the terms of this License. The ``Document'', below, refers to any
such manual or work. Any member of the public is a licensee, and is
addressed as ``you''.
A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A ``Secondary Section'' is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (For example, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.
The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.
A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, whose contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup has been designed to thwart or discourage
subsequent modification by readers is not Transparent. A copy that is
not ``Transparent'' is called ``Opaque''.
Examples of suitable formats for Transparent copies include plain
@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
@acronym{SGML} or @acronym{XML} using a publicly available
@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
for human modification. Opaque formats include PostScript,
@acronym{PDF}, proprietary formats that can be read and edited only by
proprietary word processors, @acronym{SGML} or @acronym{XML} for which
the @acronym{DTD} and/or processing tools are not generally available,
and the machine-generated @acronym{HTML} produced by some word
processors for output purposes only.
The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
@item
VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
@item
COPYING IN QUANTITY
If you publish printed copies of the Document numbering more than 100,
and the Document's license notice requires Cover Texts, you must enclose
the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a publicly-accessible computer-network location containing a complete
Transparent copy of the Document, free of added material, which the
general network-using public has access to download anonymously at no
charge using public-standard network protocols. If you use the latter
option, you must take reasonably prudent steps, when you begin
distribution of Opaque copies in quantity, to ensure that this
Transparent copy will remain thus accessible at the stated location
until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to
the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
@item
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
@enumerate A
@item
Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
@item
List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has less than five).
@item
State on the Title page the name of the publisher of the
Modified Version, as the publisher.
@item
Preserve all the copyright notices of the Document.
@item
Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
@item
Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
@item
Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
@item
Include an unaltered copy of this License.
@item
Preserve the section entitled ``History'', and its title, and add to
it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
@item
Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
@item
In any section entitled ``Acknowledgments'' or ``Dedications'',
preserve the section's title, and preserve in the section all the
substance and tone of each of the contributor acknowledgments
and/or dedications given therein.
@item
Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
@item
Delete any section entitled ``Endorsements''. Such a section
may not be included in the Modified Version.
@item
Do not retitle any existing section as ``Endorsements''
or to conflict in title with any Invariant Section.
@end enumerate
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties---for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
@item
COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections entitled ``History''
in the various original documents, forming one section entitled
``History''; likewise combine any sections entitled ``Acknowledgments'',
and any sections entitled ``Dedications''. You must delete all sections
entitled ``Endorsements.''
@item
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
@item
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, does not as a whole count as a Modified Version
of the Document, provided no compilation copyright is claimed for the
compilation. Such a compilation is called an ``aggregate'', and this
License does not apply to the other self-contained works thus compiled
with the Document, on account of their being thus compiled, if they
are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one quarter
of the entire aggregate, the Document's Cover Texts may be placed on
covers that surround only the Document within the aggregate.
Otherwise they must appear on covers around the whole aggregate.
@item
TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License provided that you also include the
original English version of this License. In case of a disagreement
between the translation and the original English version of this
License, the original English version will prevail.
@item
TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
@item
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{http://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
@end enumerate
@page
@appendixsubsec ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
@smallexample
@group
Copyright (C) @var{year} @var{your name}.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being @var{list their titles}, with the
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
@end group
@end smallexample
If you have no Invariant Sections, write ``with no Invariant Sections''
instead of saying which ones are invariant. If you have no
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
+392
View File
@@ -0,0 +1,392 @@
@node Copying, Concepts, Conditions, Top
@unnumbered GNU GENERAL PUBLIC LICENSE
@center Version 2, June 1991
@c This file is intended to be included in another file.
@display
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@unnumberedsec Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software---to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
@iftex
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@end iftex
@ifinfo
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@end ifinfo
@enumerate 0
@item
This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The ``Program'', below,
refers to any such program or work, and a ``work based on the Program''
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term ``modification''.) Each licensee is addressed as ``you''.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
@item
You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
@item
You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
@enumerate a
@item
You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
@item
You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
@item
If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
@end enumerate
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
@item
You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
@enumerate a
@item
Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
@item
Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
@item
Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
@end enumerate
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
@item
You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
@item
You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
@item
Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
@item
If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
@item
If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
@item
The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and ``any
later version'', you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
@item
If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
@iftex
@heading NO WARRANTY
@end iftex
@ifinfo
@center NO WARRANTY
@end ifinfo
@item
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
@item
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
@end enumerate
@iftex
@heading END OF TERMS AND CONDITIONS
@end iftex
@ifinfo
@center END OF TERMS AND CONDITIONS
@end ifinfo
@page
@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the ``copyright'' line and a pointer to where the full notice is found.
@smallexample
@var{one line to give the program's name and a brief idea of what it does.}
Copyright (C) @var{yyyy} @var{name of author}
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.
@end smallexample
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
@smallexample
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@end smallexample
The hypothetical commands @samp{show w} and @samp{show c} should show
the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than @samp{show w} and
@samp{show c}; they could even be mouse-clicks or menu items---whatever
suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a ``copyright disclaimer'' for the program, if
necessary. Here is a sample; alter the names:
@example
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
@var{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
@end example
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
-92
View File
@@ -1,92 +0,0 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
# written by Ulrich Drepper <[email protected]>, June 1995
#
# 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.
# Prevent date giving response in another language.
LANG=C
export LANG
LC_ALL=C
export LC_ALL
LC_TIME=C
export LC_TIME
# Get the extended ls output of the file or directory.
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
if ls -L /dev/null 1>/dev/null 2>&1; then
set - x`ls -L -l -d $1`
else
set - x`ls -l -d $1`
fi
# The month is at least the fourth argument
# (3 shifts here, the next inside the loop).
shift
shift
shift
# Find the month. Next argument is day, followed by the year or time.
month=
until test $month
do
shift
case $1 in
Jan) month=January; nummonth=1;;
Feb) month=February; nummonth=2;;
Mar) month=March; nummonth=3;;
Apr) month=April; nummonth=4;;
May) month=May; nummonth=5;;
Jun) month=June; nummonth=6;;
Jul) month=July; nummonth=7;;
Aug) month=August; nummonth=8;;
Sep) month=September; nummonth=9;;
Oct) month=October; nummonth=10;;
Nov) month=November; nummonth=11;;
Dec) month=December; nummonth=12;;
esac
done
day=$2
# Here we have to deal with the problem that the ls output gives either
# the time of day or the year.
case $3 in
*:*) set `date`; eval year=\$$#
case $2 in
Jan) nummonthtod=1;;
Feb) nummonthtod=2;;
Mar) nummonthtod=3;;
Apr) nummonthtod=4;;
May) nummonthtod=5;;
Jun) nummonthtod=6;;
Jul) nummonthtod=7;;
Aug) nummonthtod=8;;
Sep) nummonthtod=9;;
Oct) nummonthtod=10;;
Nov) nummonthtod=11;;
Dec) nummonthtod=12;;
esac
# For the first six month of the year the time notation can also
# be used for files modified in the last year.
if (expr $nummonth \> $nummonthtod) > /dev/null;
then
year=`expr $year - 1`
fi;;
*) year=$3;;
esac
# The result.
echo $day $month $year
+3 -3
View File
@@ -1,3 +1,3 @@
@set UPDATED 1 August 2001
@set EDITION 1.28a
@set VERSION 1.28a
@set UPDATED 15 August 2001
@set EDITION 1.28c
@set VERSION 1.28c
+3 -3
View File
@@ -1,3 +1,3 @@
@set UPDATED 1 August 2001
@set EDITION 1.28a
@set VERSION 1.28a
@set UPDATED 15 August 2001
@set EDITION 1.28c
@set VERSION 1.28c
+58 -20
View File
@@ -1,6 +1,6 @@
#! /bin/sh
# commit version 0.9.3
# clcommit version 0.9.5
# Copyright (C) 1999, 2000, Free Software Foundation
@@ -9,7 +9,7 @@
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
# Originally by Gary V. Vaughan <[email protected]>
# Heavily modified by Alexandre Oliva <oliva@dcc.unicamp.br>
# Pretty much rewritten by Alexandre Oliva <aoliva@redhat.com>
# This scripts eases checking in changes to CVS-maintained projects
# with ChangeLog files. It will check that there have been no
@@ -30,23 +30,26 @@
# are checked in, unless `-n' was specified, in which case nothing is
# checked in.
# usage: commit [-v] [-h] [-f] [-l] [-n] [-q] [-z N] [-C ChangeLog_file]
# [-m msg|-F msg_file] [--] [file|dir ...]
# usage: clcommit [-v] [-h] [-f] [-l] [-n] [-q] [-z N] [-C ChangeLog_file]
# [-m msg|-F msg_file|-1] [--] [file|dir ...]
# -f --fast don't check (unless *followed* by -n), and just
# --force display commit message instead of running $PAGER
# -f --force don't check (unless *followed* by -n), and just
# display commit message instead of running $PAGER
# -l --local don't descend into subdirectories
# -m msg --message=msg set commit message
# --msg=msg same as -m
# -F file --file=file read commit message from file
# -1 --first extract first entry from ChangeLog, no cvs diff
# -C file --changelog=file extract commit message from specified ChangeLog
# --fast same as --force --first
# -n --dry-run don't commit anything
# -q --quiet run cvs in quiet mode
# -zN --compress=N set compression level (0-9, 0=none, 9=max)
# -v --version print version information
# -h,-? --help print short or long help message
name=commit
name=clcommit
: ${CVS=cvs}
cvsopt=
updateopt=
commitopt=
@@ -54,6 +57,7 @@ dry_run=false
commit=:
update=:
log_file="${TMPDIR-/tmp}/commitlog.$$"
first=false
rm -f "$log_file"
trap 'rm -f "$log_file"; exit 1' 1 2 15
@@ -65,7 +69,12 @@ while $main_repeat; do
repeat="test $# -gt 0"
while $repeat; do
case "$1" in
-f|--force|--fast)
--fast)
shift
set fnord --force --first ${1+"$@"}
shift
;;
-f|--force)
update=false
PAGER=cat
shift
@@ -80,8 +89,8 @@ while $repeat; do
echo "$name: missing argument for $1" >&2
break
fi
if test -f "$log_file"; then
echo "$name: you can have at most one of -m and -F" >&2
if $first || test -f "$log_file"; then
echo "$name: you can have at most one of -m, -F and -1" >&2
break
fi
shift
@@ -89,8 +98,8 @@ while $repeat; do
shift
;;
-F|--file)
if test -f "$log_file"; then
echo "$name: you can have at most one of -m and -F" >&2
if $first || test -f "$log_file"; then
echo "$name: you can have at most one of -m, -F and -1" >&2
break
fi
if test $# = 1; then
@@ -103,6 +112,14 @@ while $repeat; do
fi
shift
;;
-1|--first)
if test -f "$log_File"; then
echo "$name: you can have at most one of -m, -F and -1" >&2
break
fi
first=:
shift
;;
-C|--[cC]hange[lL]og)
if test $# = 1; then
echo "$name: missing argument for $1" >&2
@@ -114,6 +131,7 @@ while $repeat; do
break
fi
ChangeLog="$1"
shift
;;
-n|--dry-run)
commit=false
@@ -124,6 +142,10 @@ while $repeat; do
cvsopt="$cvsopt -q"
shift
;;
-v|--verbose)
cvsopt="$cvsopt -t"
shift
;;
-z|--compress)
if test $# = 1; then
echo "$name: missing argument for $1" >&2
@@ -185,7 +207,7 @@ $repeat && break
$update && \
if echo "$name: checking for conflicts..." >&2
(cvs $cvsopt -q -n update $updateopt ${1+"$@"} 2>/dev/null \
($CVS $cvsopt -q -n update $updateopt ${1+"$@"} 2>/dev/null \
| while read line; do
echo "$line"
echo "$line" >&3
@@ -211,9 +233,24 @@ if test ! -f "$log_file"; then
fi
echo "$name: checking commit message..." >&2
cvs $cvsopt diff -u $ChangeLog \
| while read line; do
if $first; then
skipping=:
sed 's,^,+,' < ${ChangeLog-ChangeLog} |
while read line; do
case "$line" in
"+2"*) if $skipping; then skipping=false; else break; fi;;
"+ "*)
echo "$name: *** Warning: lines should start with tabs, not spaces; ignoring line:" >&2
echo "$line" | sed 's/^.//' >&2;;
"+ "*)
$skipping || echo "$line" ;;
esac
done |
sed 's,^\+ ,,' > "$log_file" || break
else
$CVS $cvsopt diff -u ${ChangeLog-ChangeLog} |
while read line; do
case $line in
"--- "*) :;;
"-"*)
echo "$name: *** Warning: the following line in ChangeLog diff is suspicious:" >&2
@@ -224,9 +261,10 @@ if test ! -f "$log_file"; then
"+") echo;;
"+ "*) echo "$line";;
esac
done \
| sed -e 's,\+ ,,' -e '/./p' -e '/./d' -e '1d' -e '$d' > "$log_file" \
|| break
done |
sed -e 's,\+ ,,' -e '/./p' -e '/./d' -e '1d' -e '$d' > "$log_file" \
|| break
fi
# The sed script above removes "+TAB" from the beginning of a line, then
# deletes the first and/or the last line, when they happen to be empty
fi
@@ -237,7 +275,7 @@ if grep '[^ ]' < "$log_file" > /dev/null; then :; else
fi
if grep '^$' < "$log_file" > /dev/null; then
echo "$name: *** Warning: blank lines should not appear within a commit messages." >&2
echo "$name: *** Warning: blank lines should not appear within commit messages." >&2
echo "$name: *** They should be used to separate distinct commits." >&2
fi
@@ -249,7 +287,7 @@ sleep 1 # give the user some time for a ^C
# zeroed it out. If s/he did, it was probably intentional.
if $commit; then
cvs $cvsopt commit $commitopt -F $log_file ${1+"$@"} || break
$CVS $cvsopt commit $commitopt -F $log_file ${1+"$@"} || break
fi
main_repeat=false
+1
View File
@@ -0,0 +1 @@
Makefile
+1 -1
View File
@@ -18,5 +18,5 @@ libbison_a_SOURCES = \
quote.h quote.c quotearg.h quotearg.c \
xalloc.h xmalloc.c xstrdup.c
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_LIBADD = @LIBOBJS@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
+7 -7
View File
@@ -108,7 +108,7 @@ EXTRA_DIST = malloc.c realloc.c
libbison_a_SOURCES = error.c error.h getopt.h getopt.c getopt1.c obstack.h obstack.c quote.h quote.c quotearg.h quotearg.c xalloc.h xmalloc.c xstrdup.c
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_LIBADD = @LIBOBJS@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
CONFIG_HEADER = ../config.h
@@ -128,18 +128,18 @@ CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in alloca.c ansi2knr.1 ansi2knr.c \
memchr.c stpcpy.c strndup.c strnlen.c strspn.c
DIST_COMMON = Makefile.am Makefile.in ansi2knr.1 ansi2knr.c memchr.c \
stpcpy.c strndup.c strnlen.c strspn.c
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
DEP_FILES = .deps/alloca.P .deps/error.P .deps/getopt.P .deps/getopt1.P \
.deps/memchr.P .deps/obstack.P .deps/quote.P .deps/quotearg.P \
.deps/stpcpy.P .deps/strndup.P .deps/strnlen.P .deps/strspn.P \
.deps/xmalloc.P .deps/xstrdup.P
DEP_FILES = .deps/error.P .deps/getopt.P .deps/getopt1.P .deps/memchr.P \
.deps/obstack.P .deps/quote.P .deps/quotearg.P .deps/stpcpy.P \
.deps/strndup.P .deps/strnlen.P .deps/strspn.P .deps/xmalloc.P \
.deps/xstrdup.P
SOURCES = $(libbison_a_SOURCES)
OBJECTS = $(libbison_a_OBJECTS)
+101 -8
View File
@@ -1,7 +1,7 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
# Franc,ois Pinard <[email protected]>, 1996.
# 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
@@ -18,11 +18,37 @@
# 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)
@@ -35,6 +61,7 @@ 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'
@@ -43,13 +70,15 @@ 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 - GNU libit 0.0"
echo "missing 0.3 - GNU automake"
;;
-*)
@@ -61,7 +90,7 @@ Supported PROGRAM values:
aclocal)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acinclude.m4' or \`configure.in'. You might want
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
@@ -70,7 +99,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
autoconf)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`configure.in'. You might want to install the
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
@@ -79,10 +108,10 @@ WARNING: \`$1' is missing on your system. You should only need it if
autoheader)
echo 1>&2 "\
WARNING: \`$1' is missing on your system. You should only need it if
you modified \`acconfig.h' or \`configure.in'. You might want
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
@@ -98,7 +127,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
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.in'.
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 |
@@ -159,7 +188,32 @@ WARNING: \`$1' is missing on your system. You should only need it if
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
@@ -175,6 +229,45 @@ 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
+41
View File
@@ -0,0 +1,41 @@
2001-08-03 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.39.
* cat-id-tbl.c: Remove file.
2001-07-14 gettextize <[email protected]>
* Makefile.in.in: Upgrade to gettext-0.10.38.
* cat-id-tbl.c: Remove file.
* stamp-cat-id: Remove file.
2000-11-02 Akim Demaille <[email protected]>
* POTFILES.in: Adjust.
1999-07-26 Jesse Thilo <[email protected]>
* po/ru.po: Added Russian translation.
1999-06-14 Jesse Thilo <[email protected]>
* po/POTFILES.in: Got rid of version.c.
1999-04-18 Jesse Thilo <[email protected]>
* po/de.po, po/es.po, po/fr.po, po/nl.po, po/POTFILES.in:
Adjusted paths to reflect directory reorganization.
1999-03-23 Jesse Thilo <[email protected]>
* po/.cvsignore: Added i18n support.
1999-03-15 Jesse Thilo <[email protected]>
* po/es.po, po/fr.po, po/nl.po, po/de.po:
Added PO files from Translation Project.
1999-02-05 Jesse Thilo <[email protected]>
* po/Makefile.in.in, po/POTFILES.in:
Add `po' directory skeleton.
+2 -3
View File
@@ -4,17 +4,16 @@ src/conflicts.c
src/derives.c
src/files.c
src/getargs.c
# src/gram.c
src/lalr.c
src/lex.c
src/main.c
src/nullable.c
src/output.c
src/print.c
src/print_graph.c
src/reader.c
src/reduce.c
# src/symtab.c
# src/warshall.c
src/vcg.c
lib/error.c
lib/getopt.c
BIN
View File
Binary file not shown.
+106 -45
View File
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-08-03 11:38+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"
@@ -129,33 +129,33 @@ msgstr ""
msgid "%s derives"
msgstr "%s leitet ab"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr ""
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr ""
#: src/getargs.c:89
#: 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 ""
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -163,7 +163,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
#: src/getargs.c:102
#: src/getargs.c:104
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -175,7 +175,7 @@ msgid ""
" -k, --token-table include a table of token names\n"
msgstr ""
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -184,44 +184,44 @@ msgid ""
" -o, --output-file=FILE leave output to FILE\n"
msgstr ""
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: keine Grammatik-Datei angegeben\n"
#: src/getargs.c:237
#: 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"
@@ -276,7 +276,7 @@ msgstr "unerwarteter Typname"
msgid "use \"...\" for multi-character literal tokens"
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
#: src/main.c:104
#: src/main.c:108
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interner Fehler, %s\n"
@@ -377,6 +377,16 @@ msgstr " auf der linken Seite:"
msgid " on right:"
msgstr " auf der rechten Seite:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $default\treduziere mit Regel %d (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Überspringe Zeichen bis zum nächsten \\n"
@@ -437,7 +447,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "Symbol %s noch einmal definiert"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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"
@@ -452,7 +462,7 @@ msgstr "
msgid "multiple %s declarations"
msgstr "mehr als eine %start Deklaration"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "ungültige %start Deklaration"
@@ -481,7 +491,7 @@ msgstr "unzul
msgid "unexpected item: %s"
msgstr "unerwartetes Symbol: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "»{« hat kein Gegenstück"
@@ -501,105 +511,115 @@ 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:951
#: 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:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "keine Eingabe-Grammatik"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "unbekanntes Zeichen: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "unbeendeter %%guard Fall"
#: src/reader.c:1296
#: 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:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
#: src/reader.c:1334
#: 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:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "zwei @prec Anweisungen nacheinander"
#: src/reader.c:1444
#: 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:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "Zwei Aktionen am Ende einer Regel"
#: src/reader.c:1467
#: src/reader.c:1504
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
#: src/reader.c:1473
#: 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:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "ungültige Eingabe: %s"
#: src/reader.c:1525
#: 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:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:1552
#: 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:1657
#: 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:1669
#: 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:1720
#: 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:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr "das Startsymbol %s ist undefiniert"
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "das Startsymbol %s ist ein Token"
@@ -700,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"
@@ -801,9 +865,6 @@ msgstr ""
#~ msgid "unmatched right brace (`}')"
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#~ msgid "multiple %union declarations"
#~ msgstr "erneute %union Definition"
#~ msgid "unterminated comment at end of file"
#~ msgstr "unbeendeter Kommentar am Dateiende"
+106 -45
View File
@@ -30,7 +30,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.25\n"
"POT-Creation-Date: 2001-08-03 11:38+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"
@@ -192,33 +192,33 @@ msgstr ""
msgid "%s derives"
msgstr "%s deriva"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr ""
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr ""
#: src/getargs.c:89
#: 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 ""
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -226,7 +226,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
#: src/getargs.c:102
#: src/getargs.c:104
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -238,7 +238,7 @@ msgid ""
" -k, --token-table include a table of token names\n"
msgstr ""
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -247,47 +247,47 @@ msgid ""
" -o, --output-file=FILE leave output to FILE\n"
msgstr ""
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: 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:233
#: 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:237
#: 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"
@@ -344,7 +344,7 @@ msgstr "nombre de tipo sin terminar"
msgid "use \"...\" for multi-character literal tokens"
msgstr "use \"...\" para terminales literales multicarácter"
#: src/main.c:104
#: src/main.c:108
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n"
@@ -454,6 +454,16 @@ msgstr " en la izquierda:"
msgid " on right:"
msgstr " en la derecha:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\terror (no asociativo)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $default\treduce usando la regla %d (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Saltando al siguiente \\n"
@@ -514,7 +524,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "redefinido el símbolo %s"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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"
@@ -529,7 +539,7 @@ msgstr "`%s' no es v
msgid "multiple %s declarations"
msgstr "múltiples declaraciones de %start"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "declaración de %start no válida"
@@ -568,7 +578,7 @@ msgid "unexpected item: %s"
msgstr "ítem inesperado: %s"
# Cambio el orden y el sexo. Ahora está "en español". sv
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "`{' desemparejada"
@@ -594,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:951
#: 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:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "no hay gramática de entrada"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "carácter desconocido: %s"
@@ -612,93 +632,93 @@ 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:1129
#: src/reader.c:1166
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "cláusula %%guard sin terminar"
#: src/reader.c:1296
#: 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:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "la gramática comienza con una barra vertical"
#: src/reader.c:1334
#: 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:1436
#: 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:1444
#: 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:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "dos acciones al final de una regla"
#: src/reader.c:1467
#: 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:1473
#: 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:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "entrada no válida: %s"
#: src/reader.c:1525
#: 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:1528
#: 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:1552
#: 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:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s"
#: src/reader.c:1669
#: 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:1720
#: 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:1733
#: 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:1735
#: 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"
@@ -811,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"
@@ -936,9 +1000,6 @@ msgstr ""
#~ msgid "unmatched right brace (`}')"
#~ msgstr "llave derecha (`}') desemparejada"
#~ 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"
BIN
View File
Binary file not shown.
+106 -45
View File
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-08-03 11:38+0200\n"
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
"PO-Revision-Date: 2000-04-11 22:19+02:00\n"
"Last-Translator: Toomas Soome <[email protected]>\n"
"Language-Team: Estonian <[email protected]>\n"
@@ -135,27 +135,27 @@ msgstr ""
msgid "%s derives"
msgstr "%s derives"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "Kasuta: %s [VÕTI]...FAIL\n"
#: src/getargs.c:89
#: 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"
@@ -163,7 +163,7 @@ msgstr ""
"Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n"
"ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n"
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -175,7 +175,7 @@ msgstr ""
" -V, --version esita versiooniinfo ja lõpeta töö\n"
" -y, --yacc emuleeri POSIX yacc\n"
#: src/getargs.c:102
#: src/getargs.c:104
#, fuzzy
msgid ""
"Parser:\n"
@@ -195,7 +195,7 @@ msgstr ""
" -r, --raw sümbolite number alates 3\n"
" -k, --token-table lisa ka sümbolite nimede tabel\n"
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -209,44 +209,44 @@ msgstr ""
" -b, --file-prefix=PREFIKS kasuta väljundfailide nimedes PREFIKSit\n"
" -o, --output-file=FAIL jäta väljund FAILi\n"
#: src/getargs.c:122
#: src/getargs.c:124
msgid "Report bugs to <[email protected]>.\n"
msgstr "Teatage palun vigadest aadressil <[email protected]>.\n"
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: puudub grammatikafail\n"
#: src/getargs.c:237
#: src/getargs.c:243
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
@@ -299,7 +299,7 @@ msgstr "l
msgid "use \"...\" for multi-character literal tokens"
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
#: src/main.c:104
#: src/main.c:108
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: sisemine viga: %s\n"
@@ -400,6 +400,16 @@ msgstr " vasakul:"
msgid " on right:"
msgstr " paremal:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Liigun järgmisele \\n"
@@ -460,7 +470,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "sümbol %s on uuesti defineeritud"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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 tüübi uuesti deklareerimine"
@@ -475,7 +485,7 @@ msgstr "`%s' ei ole %s sees lubatud"
msgid "multiple %s declarations"
msgstr "korduvad %start deklaratsioonid"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "vigane %start deklaratsioon"
@@ -504,7 +514,7 @@ msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
msgid "unexpected item: %s"
msgstr "ootamatu element: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "puudub `{'"
@@ -524,102 +534,112 @@ msgstr "tundmatu element %s, eeldasin identifikaatorit"
msgid "expected string constant instead of %s"
msgstr "eeldasin %s asemel sõnekonstanti"
#: src/reader.c:951
#: src/reader.c:887
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "korduvad %union deklaratsioonid"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "korduvad %union deklaratsioonid"
#: src/reader.c:988
#, c-format
msgid "unrecognized: %s"
msgstr "tundmatu: %s"
#: src/reader.c:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "sisendgrammatikat pole"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "tundmatu sümbol: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, c-format
msgid "unterminated %guard clause"
msgstr "lõpetamata %guard klausel"
#: src/reader.c:1296
#: src/reader.c:1333
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
#: src/reader.c:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "grammatika algab püstkriipsuga"
#: src/reader.c:1334
#: src/reader.c:1371
#, c-format
msgid "rule given for %s, which is a token"
msgstr "%s jaoks on antud reegel, aga see on märk"
#: src/reader.c:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "kaks @prec ühel real"
#: src/reader.c:1444
#: src/reader.c:1481
#, fuzzy, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%guard on määratud, aga %semantic_parser ei ole"
#: src/reader.c:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "kaks tegevust ühe reegli lõpus"
#: src/reader.c:1467
#: src/reader.c:1504
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
#: src/reader.c:1473
#: src/reader.c:1510
msgid "empty rule for typed nonterminal, and no action"
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
#: src/reader.c:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "vigane sisend: %s"
#: src/reader.c:1525
#: src/reader.c:1562
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
#: src/reader.c:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "sisendgrammatikas pole reegleid"
#: src/reader.c:1552
#: src/reader.c:1589
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
"reeglid"
#: src/reader.c:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "%s ja %s omavad konfliktseid prioriteete"
#: src/reader.c:1669
#: src/reader.c:1706
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
#: src/reader.c:1720
#: src/reader.c:1757
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
#: src/reader.c:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr "stardisümbol %s ei ole defineeritud"
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "stardisümbol %s on märk"
@@ -720,6 +740,50 @@ msgstr ""
"redutseeritud %s defineerib %d terminali%s, %d mitteterminali%s ja %d reeglit"
"%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"
@@ -815,9 +879,6 @@ msgstr ""
#~ msgid "$%s is invalid"
#~ msgstr "$%s on vigane"
#~ msgid "multiple %union declarations"
#~ msgstr "korduvad %union deklaratsioonid"
#~ msgid "unterminated comment at end of file"
#~ msgstr "lõpetamata kommentaar faili lõpus"
BIN
View File
Binary file not shown.
+108 -48
View File
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-08-03 11:38+0200\n"
"PO-Revision-Date: 1996-03-19 20:05 EST\n"
"POT-Creation-Date: 2001-08-15 10:53+0200\n"
"PO-Revision-Date: 2001-08-06 11:28+0200\n"
"Last-Translator: Dominique Boucher <[email protected]>\n"
"Language-Team: French <[email protected]>\n"
"MIME-Version: 1.0\n"
@@ -27,9 +27,8 @@ msgid "warning: "
msgstr ""
#: src/complain.c:242 src/complain.c:283
#, fuzzy
msgid "fatal error: "
msgstr "erreur fatale: %s\n"
msgstr "erreur fatale: "
#: src/conflicts.c:49
#, c-format
@@ -136,33 +135,33 @@ msgstr ""
msgid "%s derives"
msgstr "%s dérive"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr ""
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr ""
#: src/getargs.c:89
#: 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 ""
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -170,7 +169,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
#: src/getargs.c:102
#: src/getargs.c:104
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -182,7 +181,7 @@ msgid ""
" -k, --token-table include a table of token names\n"
msgstr ""
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -191,44 +190,44 @@ msgid ""
" -o, --output-file=FILE leave output to FILE\n"
msgstr ""
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: grammaire manquante\n"
#: src/getargs.c:237
#: src/getargs.c:243
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: paramètres supplémentaires ignorés après «%s»\n"
@@ -282,7 +281,7 @@ msgstr "le nom de type ne se termine pas"
msgid "use \"...\" for multi-character literal tokens"
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
#: src/main.c:104
#: src/main.c:108
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "erreur interne, %s\n"
@@ -383,6 +382,16 @@ msgstr "
msgid " on right:"
msgstr " à droite:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\terreur (non-associatif)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $défaut\tréduction par la règle %d (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Saut jusqu'au prochain \\n"
@@ -443,7 +452,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "symbole %s redéfini"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1268
#, c-format
msgid "type redeclaration for %s"
msgstr "redéclaration du type de %s"
@@ -458,7 +467,7 @@ msgstr "`%s' n'est pas valide dans %s"
msgid "multiple %s declarations"
msgstr "multiples déclarations %start"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "la déclaration %start n'est pas valide"
@@ -488,7 +497,7 @@ msgstr ""
msgid "unexpected item: %s"
msgstr "item inattendu: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "accolade ouvrante `{' non appariée"
@@ -508,102 +517,112 @@ msgstr "item %s non reconnu, un identificateur est attendu"
msgid "expected string constant instead of %s"
msgstr "chaîne de caractères constante attendue plutôt que %s"
#: src/reader.c:951
#: src/reader.c:887
#, fuzzy, c-format
msgid "multiple %%header_extension declarations"
msgstr "multiples déclarations %union"
#: src/reader.c:902
#, fuzzy, c-format
msgid "multiple %%source_extension declarations"
msgstr "multiples déclarations %union"
#: src/reader.c:988
#, c-format
msgid "unrecognized: %s"
msgstr "non reconnu: %s"
#: src/reader.c:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "aucune grammaire en entrée"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "caractère inconnu: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "clause %%guard non terminée"
#: src/reader.c:1296
#: src/reader.c:1333
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
#: src/reader.c:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "la grammaire débute par une barre verticale"
#: src/reader.c:1334
#: src/reader.c:1371
#, c-format
msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "deux @prec de suite"
#: src/reader.c:1444
#: src/reader.c:1481
#, fuzzy, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
#: src/reader.c:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "deux actions à la fin d'une même règle"
#: src/reader.c:1467
#: src/reader.c:1504
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
#: src/reader.c:1473
#: src/reader.c:1510
msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "entrée non valide: %s"
#: src/reader.c:1525
#: src/reader.c:1562
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (terminaux et catégories); maximum de %s"
#: src/reader.c:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles"
#: src/reader.c:1552
#: src/reader.c:1589
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
"de règle"
#: src/reader.c:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "les priorités pour %s et %s entrent en conflit"
#: src/reader.c:1669
#: src/reader.c:1706
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "les valeurs d'association de %s et %s entrent en conflit"
#: src/reader.c:1720
#: src/reader.c:1757
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "les terminaux %s et %s se sont vus assigner le nombre %s"
#: src/reader.c:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr "le symbole de départ %s n'est pas défini"
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "le symbole de départ %s est un terminal"
@@ -704,6 +723,50 @@ msgstr ""
"la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
"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"
@@ -805,9 +868,6 @@ msgstr ""
#~ msgid "unmatched right brace (`}')"
#~ msgstr "accolade fermante `}' non appariée"
#~ msgid "multiple %union declarations"
#~ msgstr "multiples déclarations %union"
#~ msgid "unterminated comment at end of file"
#~ msgstr "le commentaire ne se termine pas avant la fin du fichier"
BIN
View File
Binary file not shown.
+106 -45
View File
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.28\n"
"POT-Creation-Date: 2001-08-03 11:38+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"
@@ -135,33 +135,33 @@ msgstr ""
msgid "%s derives"
msgstr "%s は以下から派生"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr ""
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr ""
#: src/getargs.c:89
#: 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 ""
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -169,7 +169,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
#: src/getargs.c:102
#: src/getargs.c:104
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -181,7 +181,7 @@ msgid ""
" -k, --token-table include a table of token names\n"
msgstr ""
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -190,44 +190,44 @@ msgid ""
" -o, --output-file=FILE leave output to FILE\n"
msgstr ""
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: 文法ファイルが指定されていません\n"
#: src/getargs.c:237
#: src/getargs.c:243
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n"
@@ -281,7 +281,7 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens"
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
#: src/main.c:104
#: src/main.c:108
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: 内部エラー: %s\n"
@@ -382,6 +382,16 @@ msgstr "
msgid " on right:"
msgstr " 右辺:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tエラー (非結合)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " 次の \\n にスキップ"
@@ -442,7 +452,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "シンボル %s が再定義されました"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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 の型が再定義されました"
@@ -457,7 +467,7 @@ msgstr "%2$s
msgid "multiple %s declarations"
msgstr "複数の %start が宣言されました"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "無効な %start が宣言されました"
@@ -486,7 +496,7 @@ msgstr "̵
msgid "unexpected item: %s"
msgstr "予期せぬアイテム: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "対応のない `{' です"
@@ -506,102 +516,112 @@ msgstr "ǧ
msgid "expected string constant instead of %s"
msgstr "ここでは %s ではなく文字列定数が期待されます"
#: src/reader.c:951
#: 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:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "文法の入力が無い"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "未知の文字: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "閉じられていない %%guard 節です"
#: src/reader.c:1296
#: src/reader.c:1333
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
#: src/reader.c:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "文法は縦棒 (|) で始めます"
#: src/reader.c:1334
#: src/reader.c:1371
#, c-format
msgid "rule given for %s, which is a token"
msgstr "%s に規則が与えられ、それはトークンとなります"
#: src/reader.c:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "@prec のもの二つが同列になっています"
#: src/reader.c:1444
#: src/reader.c:1481
#, fuzzy, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%%guard がありますが %%semantic_parser が指定されていません"
#: src/reader.c:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "一つの規則の終りに二つの動作を指定しています"
#: src/reader.c:1467
#: src/reader.c:1504
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
#: src/reader.c:1473
#: src/reader.c:1510
msgid "empty rule for typed nonterminal, and no action"
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
#: src/reader.c:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "無効な入力: %s"
#: src/reader.c:1525
#: src/reader.c:1562
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
#: src/reader.c:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "入力した文法に規則が定義されていません"
#: src/reader.c:1552
#: 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:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "先行している %s と %s で競合が生じています"
#: src/reader.c:1669
#: src/reader.c:1706
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "非結合値 %s と %s で競合が生じています"
#: src/reader.c:1720
#: src/reader.c:1757
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
#: src/reader.c:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr "開始シンボル %s は定義されていません"
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "開始シンボル %s はトークンです"
@@ -702,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"
@@ -877,9 +941,6 @@ msgstr ""
#~ msgid "unterminated comment in `%{' definition"
#~ msgstr "`%{' 定義 に閉じられていないコメントがあります"
#~ msgid "multiple %union declarations"
#~ msgstr "複数の %union 宣言です"
#~ msgid "unterminated comment at end of file"
#~ msgstr "ファイル末尾に閉じられていないコメントがあります"
BIN
View File
Binary file not shown.
+108 -45
View File
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2001-08-03 11:38+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"
@@ -135,33 +135,33 @@ msgstr ""
msgid "%s derives"
msgstr "%s afgeleiden"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr ""
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr ""
#: src/getargs.c:89
#: 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 ""
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -169,7 +169,7 @@ msgid ""
" -y, --yacc emulate POSIX yacc\n"
msgstr ""
#: src/getargs.c:102
#: src/getargs.c:104
msgid ""
"Parser:\n"
" -S, --skeleton=FILE specify the skeleton to use\n"
@@ -181,7 +181,7 @@ msgid ""
" -k, --token-table include a table of token names\n"
msgstr ""
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -190,44 +190,44 @@ msgid ""
" -o, --output-file=FILE leave output to FILE\n"
msgstr ""
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: geen grammatica bestand gegeven\n"
#: src/getargs.c:237
#: src/getargs.c:243
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argumenten genegeerd na '%s'\n"
@@ -281,7 +281,7 @@ msgstr "niet getermineerd type naam"
msgid "use \"...\" for multi-character literal tokens"
msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
#: src/main.c:104
#: src/main.c:108
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interne fout, %s\n"
@@ -382,6 +382,18 @@ msgstr " links:"
msgid " on right:"
msgstr " rechts:"
#: src/print_graph.c:174
#, c-format
msgid "%-4s\terror (nonassociative)"
msgstr ""
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr ""
" $default\treduce using rule %d (%s)\n"
"\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " Verder naar volgende \\n"
@@ -442,7 +454,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "symbool %s opnieuw gedefinieerd"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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"
@@ -457,7 +469,7 @@ msgstr "`%s' is onjuist in %s"
msgid "multiple %s declarations"
msgstr "meerdere %start declaraties"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "onjuiste %start declaratie"
@@ -486,7 +498,7 @@ msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
msgid "unexpected item: %s"
msgstr "onbekend item: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "niet overeenkomstige `{'"
@@ -506,103 +518,113 @@ 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:951
#: 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:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "geen invoer grammatica"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "onbekend karakter: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "niet getermineerde %%guard voorwaarde"
#: src/reader.c:1296
#: 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:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "grammatica start met een verticale bar"
#: src/reader.c:1334
#: 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:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "twee @prec's in een regel"
#: src/reader.c:1444
#: 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:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "twee akties aan het einde van een regel"
#: src/reader.c:1467
#: 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:1473
#: 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:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "ongeldige invoer: %s"
#: src/reader.c:1525
#: 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:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "geen regels voor invoer grammatica"
#: src/reader.c:1552
#: 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:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s"
#: src/reader.c:1669
#: 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:1720
#: src/reader.c:1757
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr ""
#: src/reader.c:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr ""
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "het start symbool %s is een token"
@@ -703,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"
@@ -804,9 +870,6 @@ msgstr ""
#~ msgid "unmatched right brace (`}')"
#~ msgstr "niet overeenkomstig rechter haakje (`}')"
#~ msgid "multiple %union declarations"
#~ msgstr "meerdere %union declaraties"
#~ msgid "unterminated comment at end of file"
#~ msgstr "niet getermineerd commentaar aan einde van bestand"
BIN
View File
Binary file not shown.
+106 -45
View File
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.28a\n"
"POT-Creation-Date: 2001-08-03 11:38+0200\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"
@@ -136,27 +136,27 @@ msgstr ""
msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ"
#: src/files.c:98
#: src/files.c:130
#, c-format
msgid "cannot open file `%s'"
msgstr ""
#: src/files.c:117
#: src/files.c:149
msgid "cannot close file"
msgstr ""
#. Some efforts were made to ease the translators' task, please
#. continue.
#: src/getargs.c:81
#: src/getargs.c:83
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n"
#: src/getargs.c:85
#: src/getargs.c:87
#, c-format
msgid "Usage: %s [OPTION]... FILE\n"
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n"
#: src/getargs.c:89
#: 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"
@@ -165,7 +165,7 @@ msgstr ""
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
"ÁÒÇÕÍÅÎÔÏ×.\n"
#: src/getargs.c:95
#: src/getargs.c:97
msgid ""
"Operation modes:\n"
" -h, --help display this help and exit\n"
@@ -177,7 +177,7 @@ msgstr ""
" -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
#: src/getargs.c:102
#: src/getargs.c:104
#, fuzzy
msgid ""
"Parser:\n"
@@ -197,7 +197,7 @@ msgstr ""
" -r, --raw ÎÕÍÅÒÏ×ÁÔØ ÌÅËÓÅÍÙ, ÎÁÞÉÎÁÑ Ó 3\n"
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
#: src/getargs.c:114
#: src/getargs.c:116
msgid ""
"Output:\n"
" -d, --defines also produce a header file\n"
@@ -211,44 +211,44 @@ msgstr ""
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
#: src/getargs.c:122
#: 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:136
#: src/getargs.c:138
#, c-format
msgid "bison (GNU Bison) %s"
msgstr ""
#: src/getargs.c:141
#: src/getargs.c:143
msgid ""
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
msgstr ""
#: src/getargs.c:145
#: 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:202 src/lex.c:633
#: src/getargs.c:208 src/lex.c:635
#, c-format
msgid "`%s' is no longer supported"
msgstr ""
#: src/getargs.c:226
#: src/getargs.c:232
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
#: src/getargs.c:233
#: src/getargs.c:239
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
#: src/getargs.c:237
#: src/getargs.c:243
#, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
@@ -301,7 +301,7 @@ msgstr "
msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
#: src/main.c:104
#: src/main.c:108
#, c-format
msgid "%s: internal error: %s\n"
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
@@ -402,6 +402,16 @@ msgstr "
msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:"
#: src/print_graph.c:174
#, fuzzy, c-format
msgid "%-4s\terror (nonassociative)"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
#: src/print_graph.c:187
#, fuzzy, c-format
msgid "$default\treduce using rule %d (%s)"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/reader.c:79
msgid " Skipping to next \\n"
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
@@ -462,7 +472,7 @@ msgstr ""
msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:534 src/reader.c:613 src/reader.c:674 src/reader.c:1231
#: 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"
@@ -477,7 +487,7 @@ msgstr "`%s'
msgid "multiple %s declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start"
#: src/reader.c:563 src/reader.c:1209
#: src/reader.c:563 src/reader.c:1246
#, fuzzy, c-format
msgid "invalid %s declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
@@ -506,7 +516,7 @@ msgstr "
msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:759 src/reader.c:1035 src/reader.c:1106
#: src/reader.c:759 src/reader.c:1072 src/reader.c:1143
#, fuzzy, c-format
msgid "unmatched %s"
msgstr "ÎÅÐÁÒÎÁÑ `{'"
@@ -526,101 +536,111 @@ msgstr "
msgid "expected string constant instead of %s"
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
#: src/reader.c:951
#: 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:956
#: src/reader.c:993
msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:961
#: src/reader.c:998
#, c-format
msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:1129
#: src/reader.c:1166
#, c-format
msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
#: src/reader.c:1296
#: src/reader.c:1333
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
#: src/reader.c:1303
#: src/reader.c:1340
msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1334
#: src/reader.c:1371
#, c-format
msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:1436
#: src/reader.c:1473
msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1444
#: src/reader.c:1481
#, fuzzy, c-format
msgid "%%guard present but %%semantic_parser not specified"
msgstr "%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %semantic_parser ÎÅ ÚÁÄÁÎ"
#: src/reader.c:1453
#: src/reader.c:1490
msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1467
#: src/reader.c:1504
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:1473
#: src/reader.c:1510
msgid "empty rule for typed nonterminal, and no action"
msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1517
#: src/reader.c:1554
#, c-format
msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1525
#: src/reader.c:1562
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
#: src/reader.c:1528
#: src/reader.c:1565
msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1552
#: 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:1657
#: src/reader.c:1694
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1669
#: src/reader.c:1706
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1720
#: src/reader.c:1757
#, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
#: src/reader.c:1733
#: src/reader.c:1770
#, c-format
msgid "the start symbol %s is undefined"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
#: src/reader.c:1735
#: src/reader.c:1772
#, c-format
msgid "the start symbol %s is a token"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
@@ -721,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"
@@ -809,9 +873,6 @@ msgstr ""
msgid "'"
msgstr ""
#~ msgid "multiple %union declarations"
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
#~ msgid "unterminated comment at end of file"
#~ msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
+1
View File
@@ -2,3 +2,4 @@
.deps
Makefile
bison
*.log
+3 -2
View File
@@ -14,7 +14,7 @@ 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
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
EXTRA_bison_SOURCES = vmsgetargs.c
@@ -22,7 +22,8 @@ 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
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
vcg.h vcg_defaults.h print_graph.h
pkgdata_DATA = bison.simple bison.hairy
+13 -7
View File
@@ -103,12 +103,12 @@ LDADD = @INTLLIBS@ ../lib/libbison.a
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
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
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
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
pkgdata_DATA = bison.simple bison.hairy
@@ -126,7 +126,7 @@ ANSI2KNR = ../lib/ansi2knr
bison_OBJECTS = LR0$U.o closure$U.o complain$U.o conflicts$U.o \
derives$U.o files$U.o getargs$U.o gram$U.o lalr$U.o lex$U.o main$U.o \
nullable$U.o output$U.o print$U.o reader$U.o reduce$U.o symtab$U.o \
warshall$U.o
warshall$U.o vcg$U.o print_graph$U.o
bison_LDADD = $(LDADD)
bison_DEPENDENCIES = ../lib/libbison.a
bison_LDFLAGS =
@@ -148,8 +148,9 @@ GZIP_ENV = --best
DEP_FILES = .deps/LR0.P .deps/closure.P .deps/complain.P \
.deps/conflicts.P .deps/derives.P .deps/files.P .deps/getargs.P \
.deps/gram.P .deps/lalr.P .deps/lex.P .deps/main.P .deps/nullable.P \
.deps/output.P .deps/print.P .deps/reader.P .deps/reduce.P \
.deps/symtab.P .deps/vmsgetargs.P .deps/warshall.P
.deps/output.P .deps/print.P .deps/print_graph.P .deps/reader.P \
.deps/reduce.P .deps/symtab.P .deps/vcg.P .deps/vmsgetargs.P \
.deps/warshall.P
SOURCES = $(bison_SOURCES) $(EXTRA_bison_SOURCES)
OBJECTS = $(bison_OBJECTS)
@@ -255,6 +256,8 @@ output_.c: output.c $(ANSI2KNR)
$(CPP) $(DEFS) $(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
print_.c: print.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/print.c; then echo $(srcdir)/print.c; else echo print.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > print_.c
print_graph_.c: print_graph.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/print_graph.c; then echo $(srcdir)/print_graph.c; else echo print_graph.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > print_graph_.c
reader_.c: reader.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reader.c; then echo $(srcdir)/reader.c; else echo reader.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > reader_.c
reduce_.c: reduce.c $(ANSI2KNR)
@@ -269,14 +272,17 @@ strspn_.c: strspn.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/strspn.c; then echo $(srcdir)/strspn.c; else echo strspn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strspn_.c
symtab_.c: symtab.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/symtab.c; then echo $(srcdir)/symtab.c; else echo symtab.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > symtab_.c
vcg_.c: vcg.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vcg.c; then echo $(srcdir)/vcg.c; else echo vcg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > vcg_.c
vmsgetargs_.c: vmsgetargs.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vmsgetargs.c; then echo $(srcdir)/vmsgetargs.c; else echo vmsgetargs.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > vmsgetargs_.c
warshall_.c: warshall.c $(ANSI2KNR)
$(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/warshall.c; then echo $(srcdir)/warshall.c; else echo warshall.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > warshall_.c
LR0_.o alloca_.o closure_.o complain_.o conflicts_.o derives_.o \
files_.o getargs_.o gram_.o lalr_.o lex_.o main_.o memchr_.o \
nullable_.o output_.o print_.o reader_.o reduce_.o stpcpy_.o strndup_.o \
strnlen_.o strspn_.o symtab_.o vmsgetargs_.o warshall_.o : $(ANSI2KNR)
nullable_.o output_.o print_.o print_graph_.o reader_.o reduce_.o \
stpcpy_.o strndup_.o strnlen_.o strspn_.o symtab_.o vcg_.o \
vmsgetargs_.o warshall_.o : $(ANSI2KNR)
install-pkgdataDATA: $(pkgdata_DATA)
@$(NORMAL_INSTALL)
View File
View File
+16 -29
View File
@@ -1,7 +1,7 @@
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line
/* Skeleton output parser for bison,
Copyright 1984, 1989, 1990, 2000 Free Software Foundation, Inc.
Copyright 1984, 1989, 1990, 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
@@ -30,14 +30,14 @@
#ifndef YYSTACK_USE_ALLOCA
# ifdef alloca
# define YYSTACK_USE_ALLOCA
# define YYSTACK_USE_ALLOCA 1
# else /* alloca not defined */
# ifdef __GNUC__
# define YYSTACK_USE_ALLOCA
# define YYSTACK_USE_ALLOCA 1
# define alloca __builtin_alloca
# else /* not GNU C. */
# if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
# define YYSTACK_USE_ALLOCA
# define YYSTACK_USE_ALLOCA 1
# include <alloca.h>
# else /* not sparc */
/* We think this test detects Watcom and Microsoft C. */
@@ -55,13 +55,13 @@
namespace. So I turned it off. rms, 2 May 1997. */
/* #include <malloc.h> */
#pragma alloca
# define YYSTACK_USE_ALLOCA
# define YYSTACK_USE_ALLOCA 1
# else /* not MSDOS, or __TURBOC__, or _AIX */
# if 0
/* [email protected] says this works for HPUX 9.05 and up, and on
HPUX 10. Eventually we can turn this on. */
# ifdef __hpux
# define YYSTACK_USE_ALLOCA
# define YYSTACK_USE_ALLOCA 1
# define alloca __builtin_alloca
# endif /* __hpux */
# endif
@@ -72,7 +72,7 @@
# endif /* alloca not defined */
#endif /* YYSTACK_USE_ALLOCA not defined */
#ifdef YYSTACK_USE_ALLOCA
#if YYSTACK_USE_ALLOCA
# define YYSTACK_ALLOC alloca
#else
# define YYSTACK_ALLOC malloc
@@ -119,9 +119,9 @@ while (0)
its range to the last symbol. */
#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Last) \
Current.last_line = Last.last_line; \
Current.last_column = Last.last_column;
# define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.last_line = Rhs[N].last_line; \
Current.last_column = Rhs[N].last_column;
#endif
@@ -185,40 +185,27 @@ int yydebug;
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
# define __yy_memcpy(To, From, Count) __builtin_memcpy (To, From, Count)
#else /* not GNU C or C++ */
# ifndef __cplusplus
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
# ifndef __cplusplus
__yy_memcpy (to, from, count)
char *to;
char *from;
const char *from;
unsigned int count;
{
register char *f = from;
register char *t = to;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
# else /* __cplusplus */
/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems. */
static void
__yy_memcpy (char *to, char *from, unsigned int count)
__yy_memcpy (char *to, const char *from, unsigned int count)
# endif
{
register const char *f = from;
register char *t = to;
register char *f = from;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
# endif
#endif
#line
@@ -592,7 +579,7 @@ yyreduce:
/* Similarly for the default location. Let the user run additional
commands if for instance locations are ranges. */
yyloc = yylsp[1-yylen];
YYLLOC_DEFAULT (yyloc, yylsp[0]);
YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
#endif
#if YYDEBUG
+120 -39
View File
@@ -1,5 +1,5 @@
/* Open and close files for bison,
Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -34,10 +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_file_prefix = NULL; /* for -b. */
char *spec_name_prefix = NULL; /* for -p. */
char *infile = NULL;
char *attrsfile = NULL;
@@ -45,12 +46,12 @@ char *attrsfile = NULL;
static char *base_name = NULL;
static char *short_base_name = NULL;
/* C source file extension (the parser source). */
static const char *src_extension = NULL;
/* Header file extension (if option ``-d'' is specified). */
static const char *header_extension = NULL;
/* C source file extension (the parser source). */
const char *src_extension = NULL;
/* Header file extension (if option ``-d'' is specified). */
const char *header_extension = NULL;
/*--------------------------.
| Is SUFFIX ending STRING? |
`--------------------------*/
@@ -83,6 +84,37 @@ stringappend (const char *string1, const char *string2)
return res;
}
/*---------------------------------------------------------------.
| Computes the macro name used to avoid double inclusion in the |
| header of the parser and store it in header_macro_name. |
`---------------------------------------------------------------*/
static char *
compute_header_macro (void)
{
int ite;
char *macro_name;
macro_name = XMALLOC (char,
strlen (base_name) +
strlen (header_extension) + 1);
stpcpy (macro_name, base_name);
strcat (macro_name, header_extension);
for (ite = 0; macro_name[ite]; ite++)
if (macro_name[ite] == '.')
macro_name[ite] = '_';
else
{
if (islower (macro_name[ite]))
macro_name[ite] -= ('a' - 'A');
}
return macro_name;
}
/*-----------------------------------------------------------------.
| Try to open file NAME with mode MODE, and print an error message |
| if fails. |
@@ -132,6 +164,25 @@ obstack_save (struct obstack *obs, const char *filename)
xfclose (out);
}
/*---------------------------------------------------------------------.
| Output double inclusion protection macros and saves defines_obstack |
`---------------------------------------------------------------------*/
static void
defines_obstack_save (const char *filename)
{
FILE *out = xfopen (filename, "w");
size_t size = obstack_object_size (&defines_obstack);
char *macro_name = compute_header_macro ();
fprintf (out, "#ifndef %s\n", macro_name);
fprintf (out, "# define %s\n\n", macro_name);
fwrite (obstack_finish (&defines_obstack), 1, size, out);
fprintf (out, "\n#endif /* not %s */\n", macro_name);
free (macro_name);
xfclose (out);
}
/*------------------------------------------------------------------.
| Return the path to the skeleton which locaction might be given in |
@@ -159,16 +210,16 @@ skeleton_find (const char *envvar, const char *skeleton_name)
return res;
}
/*----------------------------------------------------------------.
| Compute BASE_NAME, SHORT_BASE_NAME and output files extensions. |
`----------------------------------------------------------------*/
/* Replace all characters FROM by TO in the string IN.
and returns a new allocated string. */
and returns a new allocated string. */
static char *
tr(const char *in, char from, char to)
tr (const char *in, char from, char to)
{
char *temp;
char *out;
@@ -184,12 +235,12 @@ tr(const char *in, char from, char to)
return (temp);
}
/* Gets the extension index in FILENAME. Returns 0 if fails to
find an extension. */
/* Gets the extension index in FILENAME. Returns 0 if fails to
find an extension. */
static int
get_extension_index(const char *filename)
get_extension_index (const char *filename)
{
int len;
int len;
len = strlen (filename);
@@ -207,21 +258,34 @@ get_extension_index(const char *filename)
/* Computes extensions from the grammar file extension. */
static void
compute_exts_from_gf(const char *ext)
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. */
static void
compute_exts_from_src(const char *ext)
compute_exts_from_src (const char *ext)
{
src_extension = xstrdup(ext);
header_extension = tr(ext, 'c', 'h');
header_extension = tr(header_extension, 'C', 'H');
/* We use this function when the user specifies `-o' or `--output',
so the extenions must be computed unconditionally from the file name
given by this option. */
src_extension = xstrdup (ext);
header_extension = tr (ext, 'c', 'h');
header_extension = tr (header_extension, 'C', 'H');
}
/* FIXME: Should use xstrndup. */
@@ -233,10 +297,6 @@ compute_base_names (void)
size_t short_base_length;
size_t ext_index;
/* Set default extensions */
src_extension = ".c";
header_extension = ".h";
/* If --output=foo.c was specified (SPEC_OUTFILE == foo.c),
BASE_NAME and SHORT_BASE_NAME are `foo'.
@@ -254,14 +314,15 @@ compute_base_names (void)
base_length = strlen (spec_outfile);
ext_index = get_extension_index (spec_outfile);
/* if the initial segment of extension contains 'c' or a 'C', I assume
that it is a C or C++ source file */
/* If the initial segment of extension contains 'c' or a 'C', I assume
that it is a C or C++ source file. */
if (ext_index)
ext_index = (strspn(spec_outfile + ext_index + 1, "cC")) ? ext_index : 0;
ext_index =
(strspn (spec_outfile + ext_index + 1, "cC")) ? ext_index : 0;
if (ext_index)
{
base_length -= strlen (spec_outfile + ext_index);
compute_exts_from_src(spec_outfile + ext_index);
compute_exts_from_src (spec_outfile + ext_index);
}
base_name = strndup (spec_outfile, base_length);
@@ -288,6 +349,15 @@ compute_base_names (void)
strlen (short_base_name) + strlen (EXT_TAB) + 1);
stpcpy (stpcpy (base_name, short_base_name), EXT_TAB);
/* Computes the extensions from the garmmar file name. */
ext_index = get_extension_index (infile);
/* If the initial segment of extension contains a 'y' or a 'Y', I assume
that it is a yacc or bison grammar file. */
if (ext_index)
ext_index = (strspn (infile + ext_index + 1, "yY")) ? ext_index : 0;
if (ext_index)
compute_exts_from_gf (infile + ext_index);
return;
}
@@ -304,14 +374,14 @@ compute_base_names (void)
base_length = strlen (name_base);
ext_index = get_extension_index (name_base);
/* if the initial segment of extension contains a 'y' or a 'Y', I assume
that it is a yacc or bison grammar file */
/* If the initial segment of extension contains a 'y' or a 'Y', I assume
that it is a yacc or bison grammar file. */
if (ext_index)
ext_index = (strspn(name_base + ext_index + 1, "yY")) ? ext_index : 0;
ext_index = (strspn (name_base + ext_index + 1, "yY")) ? ext_index : 0;
if (ext_index)
{
base_length -= strlen (name_base + ext_index);
compute_exts_from_gf(name_base + ext_index);
compute_exts_from_gf (name_base + ext_index);
}
short_base_length = base_length;
@@ -342,6 +412,7 @@ open_files (void)
obstack_init (&defines_obstack);
obstack_init (&guard_obstack);
obstack_init (&output_obstack);
obstack_init (&graph_obstack);
}
@@ -357,6 +428,12 @@ output_files (void)
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);
@@ -366,11 +443,11 @@ output_files (void)
if (spec_outfile)
obstack_save (&table_obstack, spec_outfile);
else
obstack_save (&table_obstack, stringappend (base_name, src_extension));
obstack_save (&table_obstack, stringappend (base_name, src_extension));
/* Output the header file if wanted. */
if (defines_flag)
obstack_save (&defines_obstack, stringappend (base_name, header_extension));
defines_obstack_save (stringappend (base_name, header_extension));
/* If we output only the table, dump the actions in ACTFILE. */
if (no_parser_flag)
@@ -393,5 +470,9 @@ output_files (void)
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));
obstack_save (&output_obstack,
stringappend (short_base_name, EXT_OUTPUT));
if (graph_flag)
obstack_save (&graph_obstack, stringappend (short_base_name, ".vcg"));
}
+5
View File
@@ -56,10 +56,15 @@ 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;
extern const char *src_extension;
extern const char *header_extension;
void open_files PARAMS((void));
void output_files PARAMS((void));
+7 -1
View File
@@ -34,11 +34,12 @@ int token_table_flag = 0;
int verbose_flag = 0;
int statistics_flag = 0;
int yacc_flag = 0; /* for -y */
int graph_flag = 0;
const char *skeleton = NULL;
extern char *program_name;
const char *shortopts = "yvdhrltknVo:b:p:S:";
const char *shortopts = "yvgdhrltknVo:b:p:S:";
static struct option longopts[] =
{
/* Operation modes. */
@@ -63,6 +64,7 @@ static struct option longopts[] =
{"verbose", no_argument, 0, 'v'},
{"file-prefix", required_argument, 0, 'b'},
{"output-file", required_argument, 0, 'o'},
{"graph", no_argument, 0, 'g'},
/* Hidden. */
{"statistics", no_argument, &statistics_flag, 1},
@@ -178,6 +180,10 @@ getargs (int argc, char *argv[])
version (stdout);
exit (0);
case 'g':
graph_flag = 1;
break;
case 'v':
verbose_flag = 1;
break;
+1
View File
@@ -34,6 +34,7 @@ extern int no_parser_flag; /* for -n */
extern int statistics_flag;
extern int token_table_flag; /* for -k */
extern int verbose_flag; /* for -v */
extern int graph_flag; /* for -g */
extern int yacc_flag; /* for -y */
void getargs PARAMS ((int argc, char *argv[]));
+2
View File
@@ -552,6 +552,8 @@ struct percent_table_struct percent_table[] =
{ "file_prefix", &spec_file_prefix, tok_setopt }, /* -b */
{ "name_prefix", &spec_name_prefix, tok_setopt }, /* -p */
#endif
{ "header_extension", NULL, tok_hdrext},
{ "source_extension", NULL, tok_srcext},
{ "verbose", &verbose_flag, tok_noop }, /* -v */
{ "debug", &debug_flag, tok_noop }, /* -t */
{ "semantic_parser", &semantic_parser, tok_noop },
+2
View File
@@ -47,6 +47,8 @@ typedef enum token_e
tok_number,
tok_expect,
tok_thong,
tok_hdrext,
tok_srcext,
tok_noop,
tok_setopt,
tok_illegal,
+4
View File
@@ -33,6 +33,7 @@
#include "print.h"
#include "LR0.h"
#include "conflicts.h"
#include "print_graph.h"
/* The name this program was run with, for messages. */
char *program_name;
@@ -83,6 +84,9 @@ main (int argc, char *argv[])
/* Print information about results, if requested. */
print_results ();
/* Output the VCG graph. */
print_graph ();
/* Output the tables and the parser to ftable. In file output. */
output ();
+3 -3
View File
@@ -1,5 +1,5 @@
/* Output the generated parsing program for bison,
Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -293,7 +293,7 @@ output_token_translations (void)
{
obstack_sgrow (&table_obstack, "\
\n\
/* YYRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */\n");
if (translations)
{
@@ -304,7 +304,7 @@ output_token_translations (void)
max_user_token_number, nsyms);
output_short_or_char_table (&table_obstack,
"YYRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX",
"YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX",
ntokens < 127 ? "char" : "short",
"yytranslate", token_translations,
0, 1, max_user_token_number + 1);
+291
View File
@@ -0,0 +1,291 @@
/* Output a VCG description on generated parser, for 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 "system.h"
#include "xalloc.h"
#include "files.h"
#include "gram.h"
#include "LR0.h"
#include "lalr.h"
#include "conflicts.h"
#include "complain.h"
#include "getargs.h"
#include "state.h"
#include "reader.h"
#include "obstack.h"
#include "print_graph.h"
#include "vcg.h"
#include "quotearg.h"
static graph_t graph;
static unsigned node_output_size = 0;
/* Return an unambiguous printable representated, allocated in slot 0,
for NAME, suitable for C strings. */
static char const *
quote (char const *name)
{
return quotearg_n_style (0, escape_quoting_style, name);
}
/* This part will construct the label of nodes. */
static void
print_core (int state, struct obstack *node_obstack)
{
int i;
int k;
int rule;
core *statep;
short *sp;
short *sp1;
statep = state_table[state];
k = statep->nitems;
if (k == 0)
return;
for (i = 0; i < k; i++)
{
if (i)
obstack_sgrow (node_obstack, "\\n");
sp1 = sp = ritem + statep->items[i];
while (*sp > 0)
sp++;
rule = -(*sp);
obstack_fgrow1 (node_obstack, "%d: ", rule);
obstack_fgrow1 (node_obstack, " %s -> ", quote (tags[rlhs[rule]]));
for (sp = ritem + rrhs[rule]; sp < sp1; sp++)
obstack_fgrow1 (node_obstack, "%s ", quote (tags[*sp]));
obstack_1grow (node_obstack, '.');
while (*sp > 0)
obstack_fgrow1 (node_obstack, " %s", quote (tags[*sp++]));
}
}
/* Output in graph_obstack edges specifications in incidence with current
node. */
static void
print_actions (int state, const char *node_name, struct obstack *node_obstack)
{
int i;
int k;
int state1;
int symbol;
shifts *shiftp;
errs *errp;
reductions *redp;
int rule;
static char buff[10];
edge_t edge;
shiftp = shift_table[state];
redp = reduction_table[state];
errp = err_table[state];
if (!shiftp && !redp)
{
if (final_state == state)
obstack_sgrow (node_obstack, "$default: accept");
else
obstack_sgrow (node_obstack, "NO ACTIONS");
return;
}
if (shiftp)
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1];
if (ISVAR (symbol))
break;
{
new_edge (&edge);
if (state > state1)
edge.type = back_edge;
open_edge (&edge, &graph_obstack);
/* The edge source is the current node. */
edge.sourcename = node_name;
sprintf (buff, "%d", state1);
edge.targetname = buff;
edge.color = (symbol == 0) ? red : blue;
/* FIXME: Be aware that quote uses static memory. The string
must be output immediately (which is the case here). */
edge.label = tags[symbol] ? quote (tags[symbol]) : NULL;
output_edge (&edge, &graph_obstack);
close_edge (&graph_obstack);
}
}
}
else
{
i = 0;
k = 0;
}
if (errp)
{
int j, nerrs;
nerrs = errp->nerrs;
for (j = 0; j < nerrs; j++)
{
if (!errp->errs[j])
continue;
symbol = errp->errs[j];
/* If something has been added in the NODE_OBSTACK after
the declaration of the label, then we need a `\n'. */
if (obstack_object_size (node_obstack) > node_output_size)
obstack_sgrow (node_obstack, "\\n");
obstack_fgrow1 (node_obstack, _("%-4s\terror (nonassociative)"),
tags[symbol]);
}
if (j > 0)
obstack_sgrow (node_obstack, "\\n");
}
if (consistent[state] && redp)
{
rule = redp->rules[0];
symbol = rlhs[rule];
if (obstack_object_size (node_obstack) > node_output_size)
obstack_sgrow (node_obstack, "\\n");
obstack_fgrow2 (node_obstack, _("$default\treduce using rule %d (%s)"),
rule, tags[symbol]);
}
if (i < k)
{
for (; i < k; i++)
{
if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1];
new_edge (&edge);
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, &graph_obstack);
close_edge (&graph_obstack);
}
}
}
/* Output in GRAPH_OBSTACK the current node specifications and edges
which go out from that node. */
static void
print_state (int state)
{
static char name[10];
struct obstack node_obstack;
node_t node;
obstack_init (&node_obstack);
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. */
obstack_sgrow (&node_obstack, "\t\tlabel:\t\""); /* Open Label */
/* Keep the size of NODE_OBSTACK before computing the label. It is
useful to format the label. */
node_output_size = obstack_object_size (&node_obstack);
/* Compute the labels of nodes on the fly. */
print_core (state, &node_obstack);
/* Compute edges and additionnal parts of node label. */
print_actions (state, node.title, &node_obstack);
obstack_sgrow (&node_obstack, "\"\n"); /* Close Label. */
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);
}
void
print_graph (void)
{
int i;
if (!graph_flag)
return;
new_graph (&graph);
#if 0
graph.smanhattan_edges = yes;
graph.manhattan_edges = yes;
#endif
graph.display_edge_labels = yes;
graph.layoutalgorithm = 0;
graph.port_sharing = no;
graph.finetuning = yes;
graph.straight_phase = yes;
graph.priority_phase = yes;
graph.splines = yes;
graph.crossing_weight = median;
/* Output graph options. */
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, &graph_obstack);
}
+26
View File
@@ -0,0 +1,26 @@
/* Output a VCG description on generated parser, for bison,
Copyright 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. */
#ifndef PRINT_GRAPH_H_
# define PRINT_GRAPH_H_
void print_graph PARAMS ((void));
#endif /* !PRINT_GRAPH_H_ */
+43 -6
View File
@@ -874,6 +874,35 @@ parse_thong_decl (void)
nsyms--;
}
/*------------------------------------------.
| 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 |
@@ -944,6 +973,14 @@ 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_noop:
break;
@@ -1538,9 +1575,9 @@ readgram (void)
"#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");
# ifndef YYSTYPE\n\
# define YYSTYPE int\n\
# endif\n");
}
/* Report any undefined symbols and consider them nonterminals. */
@@ -1597,11 +1634,11 @@ output_token_defines (struct obstack *oout)
if (c != '\0')
continue;
obstack_fgrow2 (oout, "#define\t%s\t%d\n",
obstack_fgrow2 (oout, "# define\t%s\t%d\n",
symbol,
(translations ? bp->user_token_number : bp->value));
if (semantic_parser)
obstack_fgrow2 (oout, "#define\tT%s\t%d\n", symbol, bp->value);
obstack_fgrow2 (oout, "# define\tT%s\t%d\n", symbol, bp->value);
}
obstack_1grow (oout, '\n');
@@ -1756,7 +1793,7 @@ packsymbols (void)
/* don't make these for dummy nonterminals made by gensym. */
if (*tags[i] != '@')
obstack_fgrow2 (&defines_obstack,
"#define\tNT%s\t%d\n", tags[i], i);
"# define\tNT%s\t%d\n", tags[i], i);
}
#if 0
/* `fdefines' is now a temporary file, so we need to copy its
+20
View File
@@ -73,6 +73,26 @@ extern int errno;
# define PARAMS(p) ()
#endif
/*---------------------.
| Missing prototypes. |
`---------------------*/
#if !HAVE_DECL_STPCPY
char *stpcpy PARAMS ((char *dest, const char *src));
#endif
#if !HAVE_DECL_STRNDUP
char *strndup PARAMS ((const char *s, size_t size));
#endif
#if !HAVE_DECL_STRNLEN
size_t strnlen PARAMS ((const char *s, size_t maxlen));
#endif
/*-----------------.
| GCC extensions. |
`-----------------*/
+836
View File
@@ -0,0 +1,836 @@
/* VCG description handler for 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 "system.h"
#include "vcg.h"
#include "vcg_defaults.h"
#include "xalloc.h"
#include "complain.h"
/* Initialize a graph with the default values. */
void
new_graph (graph_t *g)
{
g->title = G_TITLE;
g->label = G_LABEL;
g->infos[0] = G_INFOS1;
g->infos[1] = G_INFOS2;
g->infos[2] = G_INFOS3;
g->color = G_COLOR;
g->textcolor = G_TEXTCOLOR;
g->bordercolor = G_BORDERCOLOR;
g->width = G_WIDTH;
g->height = G_HEIGHT;
g->borderwidth = G_BORDERWIDTH;
g->x = G_X;
g->y = G_Y;
g->folding = G_FOLDING;
g->shrink = G_SHRINK;
g->stretch = G_STRETCH;
g->textmode = G_TEXTMODE;
g->shape = G_SHAPE;
g->xmax = G_XMAX; /* Not output. */
g->ymax = G_YMAX; /* Not output. */
g->xbase = G_XBASE;
g->ybase = G_YBASE;
g->xspace = G_XSPACE;
g->yspace = G_YSPACE;
g->xlspace = G_XLSPACE; /* Not output. */
g->xraster = G_XRASTER;
g->yraster = G_YRASTER;
g->xlraster = G_XLRASTER;
g->hidden = G_HIDDEN; /* No default value. */
g->classname = G_CLASSNAME; /* No class name association. */
g->layoutalgorithm = G_LAYOUTALGORITHM;
g->layout_downfactor = G_LAYOUT_DOWNFACTOR;
g->layout_upfactor = G_LAYOUT_UPFACTOR;
g->layout_nearfactor = G_LAYOUT_NEARFACTOR;
g->layout_splinefactor = G_LAYOUT_SPLINEFACTOR;
g->late_edge_labels = G_LATE_EDGE_LABELS;
g->display_edge_labels = G_DISPLAY_EDGE_LABELS;
g->dirty_edge_labels = G_DIRTY_EDGE_LABELS;
g->finetuning = G_FINETUNING;
g->ignore_singles = G_IGNORE_SINGLES;
g->straight_phase = G_STRAIGHT_PHASE;
g->priority_phase = G_PRIORITY_PHASE;
g->manhattan_edges = G_MANHATTAN_EDGES;
g->smanhattan_edges = G_SMANHATTAN_EDGES;
g->near_edges = G_NEAR_EDGES;
g->orientation = G_ORIENTATION;
g->node_alignement = G_NODE_ALIGNEMENT;
g->port_sharing = G_PORT_SHARING;
g->arrow_mode = G_ARROW_MODE;
g->treefactor = G_TREEFACTOR;
g->spreadlevel = G_SPREADLEVEL;
g->crossing_weight = G_CROSSING_WEIGHT;
g->crossing_phase2 = G_CROSSING_PHASE2;
g->crossing_optimization = G_CROSSING_OPTIMIZATION;
g->view = G_VIEW;
g->edges = G_EDGES;
g->nodes = G_NODES;
g->splines = G_SPLINES;
g->bmax = G_BMAX;
g->cmin = G_CMIN;
g->cmax = G_CMAX;
g->pmin = G_PMIN;
g->pmax = G_PMAX;
g->rmin = G_RMIN;
g->rmax = G_RMAX;
g->smax = G_SMAX;
g->node_list = G_NODE_LIST;
g->edge_list = G_EDGE_LIST;
new_edge(&g->edge);
new_node(&g->node);
}
/* Initialize a node with the defalut values. */
void
new_node (node_t *node)
{
node->title = N_TITLE;
node->label = N_LABEL;
node->locx = N_LOCX; /* Default unspcified. */
node->locy = N_LOCY; /* Default unspcified. */
node->vertical_order = N_VERTICAL_ORDER; /* Default unspcified. */
node->horizontal_order = N_HORIZONTAL_ORDER; /* Default unspcified. */
node->width = N_WIDTH; /* We assume that we can't define it now. */
node->height = N_HEIGHT; /* Also. */
node->shrink = N_SHRINK;
node->stretch = N_STRETCH;
node->folding = N_FOLDING; /* No explicit default value. */
node->shape = N_SHAPE;
node->textmode = N_TEXTMODE;
node->borderwidth = N_BORDERWIDTH;
node->color = N_COLOR;
node->textcolor = N_TEXTCOLOR;
node->bordercolor = N_BORDERCOLOR;
node->infos[0] = N_INFOS1;
node->infos[1] = N_INFOS2;
node->infos[2] = N_INFOS3;
node->next = N_NEXT;
}
/* Initialize a edge with the defalut values. */
void
new_edge (edge_t *edge)
{
edge->type = E_EDGE_TYPE;
edge->sourcename = E_SOURCENAME;
edge->targetname = E_TARGETNAME;
edge->label = E_LABEL;
edge->linestyle = E_LINESTYLE;
edge->thickness = E_THICKNESS;
edge->class = E_CLASS;
edge->color = E_COLOR;
edge->textcolor = E_TEXTCOLOR;
edge->arrowcolor = E_ARROWCOLOR;
edge->backarrowcolor = E_BACKARROWCOLOR;
edge->arrowsize = E_ARROWSIZE;
edge->backarrowsize = E_BACKARROWSIZE;
edge->arrowstyle = E_ARROWSTYLE;
edge->backarrowstyle = E_BACKARROWSTYLE;
edge->priority = E_PRIORITY;
edge->anchor = E_ANCHOR;
edge->horizontal_order = E_HORIZONTAL_ORDER;
edge->next = E_NEXT;
}
/*----------------------------------------------.
| Get functions. |
| Return string corresponding to an enum value. |
`----------------------------------------------*/
static const char *
get_color_str (enum color_e c)
{
switch (c)
{
case white: return "white";
case blue: return "blue";
case red: return "red";
case green: return "green";
case yellow: return "yellow";
case magenta: return "magenta";
case cyan: return "cyan";
case darkgrey: return "darkgrey";
case darkblue: return "darkblue";
case darkred: return "darkred";
case darkgreen: return "darkgreen";
case darkyellow: return "darkyellow";
case darkmagenta: return "darkmagenta";
case darkcyan: return "darkcyan";
case gold: return "gold";
case lightgrey: return "lightgrey";
case lightblue: return "lightblue";
case lightred: return "lightred";
case lightgreen: return "lightgreen";
case lightyellow: return "lightyellow";
case lightmagenta: return "lightmagenta";
case lightcyan: return "lightcyan";
case lilac: return "lilac";
case turquoise: return "turquoise";
case aquamarine: return "aquamarine";
case khaki: return "khaki";
case purple: return "purple";
case yellowgreen: return "yellowgreen";
case pink: return "pink";
case orange: return "orange";
case orchid: return "orchid";
case black: return "black";
default:
complain (_("vcg graph: no such color."));
return get_color_str(G_COLOR);
}
return NULL;
}
static const char *
get_textmode_str (enum textmode_e t)
{
switch (t)
{
case centered: return "center";
case left_justify: return "left_justify";
case right_justify: return "right_justify";
default:
complain (_("vcg graph: no such text mode"));
return get_textmode_str(G_TEXTMODE);
}
return NULL;
}
static const char *
get_shape_str (enum shape_e s)
{
switch (s)
{
case box: return "box";
case rhomb: return "rhomb";
case ellipse: return "ellipse";
case triangle: return "triangle";
default:
complain (_("vcg graph: no such shape"));
return get_shape_str(G_SHAPE);
}
return NULL;
}
static const char *
get_layoutalgorithm_str (enum layoutalgorithm_e l)
{
switch (l)
{
case normal: return "normal";
case maxdepth: return "maxdepth";
case mindepth: return "mindepth";
case maxdepthslow: return "maxdepthslow";
case mindepthslow: return "mindepthslow";
case maxdegree: return "maxdegree";
case mindegree: return "mindegree";
case maxindegree: return "maxindegree";
case minindegree: return "minindegree";
case maxoutdegree: return "maxoutdegree";
case minoutdegree: return "minoutdegree";
case minbackward: return "minbackward";
case dfs: return "dfs";
case tree: return "tree";
default:
return "normal";
}
return NULL;
}
static const char *
get_decision_str (enum decision_e d, enum decision_e defaults)
{
switch (d)
{
case no: return "no";
case yes: return "yes";
default:
complain (_("vcg graph: no such decision"));
return get_decision_str(defaults, 0);
}
return NULL;
}
static const char *
get_orientation_str (enum orientation_e o)
{
switch (o)
{
case top_to_bottom: return "top_to_bottom";
case bottom_to_top: return "bottom_to_top";
case left_to_right: return "left_to_right";
case right_to_left: return "right_to_left";
default:
complain (_("vcg graph: no such an orientation"));
return get_orientation_str(G_ORIENTATION);
}
return NULL;
}
static const char *
get_node_alignement_str (enum alignement_e a)
{
switch (a)
{
case center: return "center";
case top: return "top";
case bottom: return "bottom";
default:
complain (_("vcg graph: no such an alignement"));
return get_node_alignement_str(G_NODE_ALIGNEMENT);
}
return NULL;
}
static const char *
get_arrow_mode_str (enum arrow_mode_e a)
{
switch (a)
{
case fixed: return "fixed";
case free_a: return "free";
default:
complain (_("vcg graph: no such an arrow mode"));
return get_arrow_mode_str(G_ARROW_MODE);
}
return NULL;
}
static const char *
get_crossing_type_str (enum crossing_type_e c)
{
switch (c)
{
case bary: return "bary";
case median: return "median";
case barymedian: return "barymedian";
case medianbary: return "medianbary";
default:
complain (_("vcg graph: no such crossing_type"));
return get_crossing_type_str(G_CROSSING_WEIGHT);
}
return NULL;
}
static const char *
get_view_str (enum view_e v)
{
switch (v)
{
case normal_view: return "normal_view";
case cfish: return "cfish";
case pfish: return "pfish";
case fcfish: return "fcfish";
case fpfish: return "fpfish";
default:
complain (_("vcg graph: no such view"));
return get_view_str(G_VIEW);
}
return NULL;
}
static const char *
get_linestyle_str (enum linestyle_e l)
{
switch (l)
{
case continuous: return "continuous";
case dashed: return "dashed";
case dotted: return "dotted";
case invisible: return "invisible";
default:
complain (_("vcg graph: no such linestyle"));
return get_linestyle_str(E_LINESTYLE);
}
return NULL;
}
static const char *
get_arrowstyle_str (enum arrowstyle_e a)
{
switch (a)
{
case solid: return "solid";
case line: return "line";
case none: return "none";
default:
complain (_("vcg graph: no such an arrowstyle"));
return get_arrowstyle_str(E_ARROWSTYLE);
}
return NULL;
}
/*----------------------------.
| Add functions. |
| Edge and Nodes int a graph. |
`----------------------------*/
void
add_node (graph_t *graph, node_t *node)
{
node->next = graph->node_list;
graph->node_list = node;
}
void
add_edge (graph_t *graph, edge_t *edge)
{
edge->next = graph->edge_list;
graph->edge_list = edge;
}
/*-------------------------------------.
| Open and close functions (formatted) |
`-------------------------------------*/
void
open_edge(edge_t *edge, struct obstack *os)
{
switch (edge->type)
{
case normal_edge:
obstack_sgrow (os, "\tedge: {\n");
break;
case back_edge:
obstack_sgrow (os, "\tbackedge: {\n");
break;
case near_edge:
obstack_sgrow (os, "\tnearedge: {\n");
break;
case bent_near_edge:
obstack_sgrow (os, "\tbentnearedge: {\n");
break;
default:
obstack_sgrow (os, "\tedge: {\n");
}
}
void
close_edge(struct obstack *os)
{
obstack_sgrow (os, "\t}\n");
}
void
open_node(struct obstack *os)
{
obstack_sgrow (os, "\tnode: {\n");
}
void
close_node(struct obstack *os)
{
obstack_sgrow (os, "\t}\n");
}
void
open_graph(struct obstack *os)
{
obstack_sgrow (os, "graph: {\n");
}
void
close_graph(graph_t *graph, struct obstack *os)
{
obstack_1grow (os, '\n');
{
node_t *node;
for (node = graph->node_list; node; node = node->next)
{
open_node (os);
output_node (node, os);
close_node (os);
}
}
obstack_1grow (os, '\n');
{
edge_t *edge;
for (edge = graph->edge_list; edge; edge = edge->next)
{
open_edge (edge, os);
output_edge (edge, os);
close_edge (os);
}
}
obstack_sgrow (os, "}\n");
}
/*-------------------------------------------.
| Output functions (formatted) in obstack os |
`-------------------------------------------*/
void
output_node (node_t *node, struct obstack *os)
{
if (node->title != N_TITLE)
obstack_fgrow1 (os, "\t\ttitle:\t\"%s\"\n", node->title);
if (node->label != N_LABEL)
obstack_fgrow1 (os, "\t\tlabel:\t\"%s\"\n", node->label);
if ((node->locx != N_LOCX) && (node->locy != N_LOCY))
obstack_fgrow2 (os, "\t\tloc { x: %d y: %d }\t\n", node->locx, node->locy);
if (node->vertical_order != N_VERTICAL_ORDER)
obstack_fgrow1 (os, "\t\tvertical_order:\t%d\n", node->vertical_order);
if (node->horizontal_order != N_HORIZONTAL_ORDER)
obstack_fgrow1 (os, "\t\thorizontal_order:\t%d\n", node->horizontal_order);
if (node->width != N_WIDTH)
obstack_fgrow1 (os, "\t\twidth:\t%d\n", node->width);
if (node->height != N_HEIGHT)
obstack_fgrow1 (os, "\t\theight:\t%d\n", node->height);
if (node->shrink != N_SHRINK)
obstack_fgrow1 (os, "\t\tshrink:\t%d\n", node->shrink);
if (node->stretch != N_STRETCH)
obstack_fgrow1 (os, "\t\tstretch:\t%d\n", node->stretch);
if (node->folding != N_FOLDING)
obstack_fgrow1 (os, "\t\tfolding:\t%d\n", node->folding);
if (node->textmode != N_TEXTMODE)
obstack_fgrow1 (os, "\t\ttextmode:\t%s\n",
get_textmode_str (node->textmode));
if (node->shape != N_SHAPE)
obstack_fgrow1 (os, "\t\tshape:\t%s\n", get_shape_str (node->shape));
if (node->borderwidth != N_BORDERWIDTH)
obstack_fgrow1 (os, "\t\tborderwidth:\t%d\n", node->borderwidth);
if (node->color != N_COLOR)
obstack_fgrow1 (os, "\t\tcolor:\t%s\n", get_color_str (node->color));
if (node->textcolor != N_TEXTCOLOR)
obstack_fgrow1 (os, "\t\ttextcolor:\t%s\n",
get_color_str (node->textcolor));
if (node->bordercolor != N_BORDERCOLOR)
obstack_fgrow1 (os, "\t\tbordercolor:\t%s\n",
get_color_str (node->bordercolor));
if (node->infos[0])
obstack_fgrow1 (os, "\t\tinfo1:\t\"%s\"\n", node->infos[0]);
if (node->infos[1])
obstack_fgrow1 (os, "\t\tinfo2:\t\"%s\"\n", node->infos[1]);
if (node->infos[2])
obstack_fgrow1 (os, "\t\tinfo3:\t\"%s\"\n", node->infos[2]);
}
void
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)
obstack_fgrow1 (os, "\t\tsourcename:\t\"%s\"\n", edge->sourcename);
if (edge->targetname != E_TARGETNAME)
obstack_fgrow1 (os, "\t\ttargetname:\t\"%s\"\n", edge->targetname);
if (edge->label != E_LABEL)
obstack_fgrow1 (os, "\t\tlabel:\t\"%s\"\n", edge->label);
if (edge->linestyle != E_LINESTYLE)
obstack_fgrow1 (os, "\t\tlinestyle:\t\"%s\"\n",
get_linestyle_str(edge->linestyle));
if (edge->thickness != E_THICKNESS)
obstack_fgrow1 (os, "\t\tthickness:\t%d\n", edge->thickness);
if (edge->class != E_CLASS)
obstack_fgrow1 (os, "\t\tclass:\t%d\n", edge->class);
if (edge->color != E_COLOR)
obstack_fgrow1 (os, "\t\tcolor:\t%s\n", get_color_str (edge->color));
if (edge->color != E_TEXTCOLOR)
obstack_fgrow1 (os, "\t\ttextcolor:\t%s\n",
get_color_str (edge->textcolor));
if (edge->arrowcolor != E_ARROWCOLOR)
obstack_fgrow1 (os, "\t\tarrowcolor:\t%s\n",
get_color_str (edge->arrowcolor));
if (edge->backarrowcolor != E_BACKARROWCOLOR)
obstack_fgrow1 (os, "\t\tbackarrowcolor:\t%s\n",
get_color_str (edge->backarrowcolor));
if (edge->arrowsize != E_ARROWSIZE)
obstack_fgrow1 (os, "\t\tarrowsize:\t%d\n", edge->arrowsize);
if (edge->backarrowsize != E_BACKARROWSIZE)
obstack_fgrow1 (os, "\t\tbackarrowsize:\t%d\n", edge->backarrowsize);
if (edge->arrowstyle != E_ARROWSTYLE)
obstack_fgrow1 (os, "\t\tarrowstyle:\t%s\n",
get_arrowstyle_str(edge->arrowstyle));
if (edge->backarrowstyle != E_BACKARROWSTYLE)
obstack_fgrow1 (os, "\t\tbackarrowstyle:\t%s\n",
get_arrowstyle_str(edge->backarrowstyle));
if (edge->priority != E_PRIORITY)
obstack_fgrow1 (os, "\t\tpriority:\t%d\n", edge->priority);
if (edge->anchor != E_ANCHOR)
obstack_fgrow1 (os, "\t\tanchor:\t%d\n", edge->anchor);
if (edge->horizontal_order != E_HORIZONTAL_ORDER)
obstack_fgrow1 (os, "\t\thorizontal_order:\t%d\n", edge->horizontal_order);
}
void
output_graph (graph_t *graph, struct obstack *os)
{
if (graph->title)
obstack_fgrow1 (os, "\ttitle:\t\"%s\"\n", graph->title);
if (graph->label)
obstack_fgrow1 (os, "\tlabel:\t\"%s\"\n", graph->label);
if (graph->infos[0])
obstack_fgrow1 (os, "\tinfo1:\t\"%s\"\n", graph->infos[0]);
if (graph->infos[1])
obstack_fgrow1 (os, "\tinfo2:\t\"%s\"\n", graph->infos[1]);
if (graph->infos[2])
obstack_fgrow1 (os, "\tinfo3:\t\"%s\"\n", graph->infos[2]);
if (graph->color != G_COLOR)
obstack_fgrow1 (os, "\tcolor:\t%s\n", get_color_str (graph->color));
if (graph->textcolor != G_TEXTCOLOR)
obstack_fgrow1 (os, "\ttextcolor:\t%s\n", get_color_str (graph->textcolor));
if (graph->bordercolor != G_BORDERCOLOR)
obstack_fgrow1 (os, "\tbordercolor:\t%s\n",
get_color_str (graph->bordercolor));
if (graph->width != G_WIDTH)
obstack_fgrow1 (os, "\twidth:\t%d\n", graph->width);
if (graph->height != G_HEIGHT)
obstack_fgrow1 (os, "\theight:\t%d\n", graph->height);
if (graph->borderwidth != G_BORDERWIDTH)
obstack_fgrow1 (os, "\tborderwidth:\t%d\n", graph->borderwidth);
if (graph->x != G_X)
obstack_fgrow1 (os, "\tx:\t%d\n", graph->x);
if (graph->y != G_Y)
obstack_fgrow1 (os, "\ty:\t%d\n", graph->y);
if (graph->folding != G_FOLDING)
obstack_fgrow1 (os, "\tfolding:\t%d\n", graph->folding);
if (graph->shrink != G_SHRINK)
obstack_fgrow1 (os, "\tshrink:\t%d\n", graph->shrink);
if (graph->stretch != G_STRETCH)
obstack_fgrow1 (os, "\tstretch:\t%d\n", graph->stretch);
if (graph->textmode != G_TEXTMODE)
obstack_fgrow1 (os, "\ttextmode:\t%s\n",
get_textmode_str (graph->textmode));
if (graph->shape != G_SHAPE)
obstack_fgrow1 (os, "\tshape:\t%s\n", get_shape_str (graph->shape));
if (graph->xmax != G_XMAX)
obstack_fgrow1 (os, "\txmax:\t%d\n", graph->xmax);
if (graph->ymax != G_YMAX)
obstack_fgrow1 (os, "\tymax:\t%d\n", graph->ymax);
if (graph->xbase != G_XBASE)
obstack_fgrow1 (os, "\txbase:\t%d\n", graph->xbase);
if (graph->ybase != G_YBASE)
obstack_fgrow1 (os, "\tybase:\t%d\n", graph->ybase);
if (graph->xspace != G_XSPACE)
obstack_fgrow1 (os, "\txspace:\t%d\n", graph->xspace);
if (graph->yspace != G_YSPACE)
obstack_fgrow1 (os, "\tyspace:\t%d\n", graph->yspace);
if (graph->xlspace != G_XLSPACE)
obstack_fgrow1 (os, "\txlspace:\t%d\n", graph->xlspace);
if (graph->xraster != G_XRASTER)
obstack_fgrow1 (os, "\txraster:\t%d\n", graph->xraster);
if (graph->yraster != G_YRASTER)
obstack_fgrow1 (os, "\tyraster:\t%d\n", graph->yraster);
if (graph->xlraster != G_XLRASTER)
obstack_fgrow1 (os, "\txlraster:\t%d\n", graph->xlraster);
if (graph->hidden != G_HIDDEN)
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)
obstack_fgrow2 (os, "\tclassname %d :\t%s\n", ite->no, ite->name);
}
if (graph->layoutalgorithm != G_LAYOUTALGORITHM)
obstack_fgrow1 (os, "\tlayoutalgorithm:\t%s\n",
get_layoutalgorithm_str(graph->layoutalgorithm));
if (graph->layout_downfactor != G_LAYOUT_DOWNFACTOR)
obstack_fgrow1 (os, "\tlayout_downfactor:\t%d\n", graph->layout_downfactor);
if (graph->layout_upfactor != G_LAYOUT_UPFACTOR)
obstack_fgrow1 (os, "\tlayout_upfactor:\t%d\n", graph->layout_upfactor);
if (graph->layout_nearfactor != G_LAYOUT_NEARFACTOR)
obstack_fgrow1 (os, "\tlayout_nearfactor:\t%d\n", graph->layout_nearfactor);
if (graph->layout_splinefactor != G_LAYOUT_SPLINEFACTOR)
obstack_fgrow1 (os, "\tlayout_splinefactor:\t%d\n",
graph->layout_splinefactor);
if (graph->late_edge_labels != G_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)
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)
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)
obstack_fgrow1 (os, "\tfinetuning:\t%s\n",
get_decision_str(graph->finetuning, G_FINETUNING));
if (graph->ignore_singles != G_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)
obstack_fgrow1 (os, "\tstraight_phase:\t%s\n",
get_decision_str(graph->straight_phase, G_STRAIGHT_PHASE));
if (graph->priority_phase != G_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)
obstack_fgrow1 (os,
"\tmanhattan_edges:\t%s\n",
get_decision_str(graph->manhattan_edges,
G_MANHATTAN_EDGES));
if (graph->smanhattan_edges != G_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)
obstack_fgrow1 (os, "\tnear_edges:\t%s\n",
get_decision_str(graph->near_edges, G_NEAR_EDGES));
if (graph->orientation != G_ORIENTATION)
obstack_fgrow1 (os, "\torientation:\t%s\n",
get_decision_str(graph->orientation, G_ORIENTATION));
if (graph->node_alignement != G_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)
obstack_fgrow1 (os, "\tport_sharing:\t%s\n",
get_decision_str(graph->port_sharing, G_PORT_SHARING));
if (graph->arrow_mode != G_ARROW_MODE)
obstack_fgrow1 (os, "\tarrow_mode:\t%s\n",
get_arrow_mode_str(graph->arrow_mode));
if (graph->treefactor != G_TREEFACTOR)
obstack_fgrow1 (os, "\ttreefactor:\t%f\n", graph->treefactor);
if (graph->spreadlevel != G_SPREADLEVEL)
obstack_fgrow1 (os, "\tspreadlevel:\t%d\n", graph->spreadlevel);
if (graph->crossing_weight != G_CROSSING_WEIGHT)
obstack_fgrow1 (os, "\tcrossing_weight:\t%s\n",
get_crossing_type_str(graph->crossing_weight));
if (graph->crossing_phase2 != G_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)
obstack_fgrow1 (os, "\tcrossing_optimization:\t%s\n",
get_decision_str(graph->crossing_optimization,
G_CROSSING_OPTIMIZATION));
if (graph->view != G_VIEW)
obstack_fgrow1 (os, "\tview:\t%s\n", get_view_str(graph->view));
if (graph->edges != G_EDGES)
obstack_fgrow1 (os, "\tedges:\t%s\n", get_decision_str(graph->edges,
G_EDGES));
if (graph->nodes != G_NODES)
obstack_fgrow1 (os,"\tnodes:\t%s\n",
get_decision_str(graph->nodes, G_NODES));
if (graph->splines != G_SPLINES)
obstack_fgrow1 (os, "\tsplines:\t%s\n",
get_decision_str(graph->splines, G_SPLINES));
if (graph->bmax != G_BMAX)
obstack_fgrow1 (os, "\tbmax:\t%d\n", graph->bmax);
if (graph->cmin != G_CMIN)
obstack_fgrow1 (os, "\tcmin:\t%d\n", graph->cmin);
if (graph->cmax != G_CMAX)
obstack_fgrow1 (os, "\tcmax:\t%d\n", graph->cmax);
if (graph->pmin != G_PMIN)
obstack_fgrow1 (os, "\tpmin:\t%d\n", graph->pmin);
if (graph->pmax != G_PMAX)
obstack_fgrow1 (os, "\tpmax:\t%d\n", graph->pmax);
if (graph->rmin != G_RMIN)
obstack_fgrow1 (os, "\trmin:\t%d\n", graph->rmin);
if (graph->rmax != G_RMAX)
obstack_fgrow1 (os, "\trmax:\t%d\n", graph->rmax);
if (graph->smax != G_SMAX)
obstack_fgrow1 (os, "\tsmax:\t%d\n", graph->smax);
}
+970
View File
@@ -0,0 +1,970 @@
/* VCG description handler for 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 VCG_H_
# define VCG_H_
/* VCG color map. The 32 prime predefined colors. */
enum color_e
{
white = 0,
blue,
red,
green = 3,
yellow,
magenta,
cyan = 6,
darkgrey,
darkblue,
darkred = 9,
darkgreen,
darkyellow,
darkmagenta = 12,
darkcyan,
gold,
lightgrey = 15,
lightblue,
lightred,
lightgreen = 18,
lightyellow,
lightmagenta,
lightcyan = 21,
lilac,
turquoise,
aquamarine = 24,
khaki,
purple,
yellowgreen = 27,
pink,
orange,
orchid,
black = 31
};
/* VCG textmode. Specify the adjustement of the text within the border of a summary node. */
enum textmode_e
{
centered,
left_justify,
right_justify
};
/* VCG shapes. Used for nodes shapes. */
enum shape_e
{
box,
rhomb,
ellipse,
triangle
};
/* Structure to construct lists of classnames. */
struct classname_s
{
int no; /* Class number */
char *name; /* Name associated to the class no. */
struct classname_s *next; /* next name class association. */
};
/* Layout Algorithms which can be found in VCG.
Details about each algoithm can be found below. */
enum layoutalgorithm_e
{
normal,
maxdepth,
mindepth,
maxdepthslow,
mindepthslow,
maxdegree,
mindegree,
maxindegree,
minindegree,
maxoutdegree,
minoutdegree,
minbackward,
dfs,
tree
};
/* VCG decision yes/no. */
enum decision_e
{
yes,
no
};
/* VCG graph orientation. */
enum orientation_e
{
top_to_bottom,
bottom_to_top,
left_to_right,
right_to_left
};
/* VCG alignement for node alignement. */
enum alignement_e
{
center,
top,
bottom
};
/* VCG arrow mode. */
enum arrow_mode_e
{
fixed,
free_a
};
/* VCG crossing weight type. */
enum crossing_type_e
{
bary,
median,
barymedian,
medianbary
};
/* VCG views. */
enum view_e
{
normal_view,
cfish,
pfish,
fcfish,
fpfish
};
/*------------------------------------------------------.
| Node attributs list. structure that describes a node. |
`------------------------------------------------------*/
struct node_s
{
/* Title the unique string identifying the node. This attribute is
mandatory. */
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. */
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
loc: - x: xpos y: ypos "". The locations of nodes are only valid,
if the whole graph is fully specified with locations and no part is
folded. The layout algorithm of the tool calculates appropriate x, y
positions, if at least one node that must be drawn (i.e., is not
hidden by folding or edge classes) does not have fixed specified
locations.
Default is none. */
int locx;
int locy;
/* vertical order is the level position (rank) of the node. We can also
specify level: int. Level specifications are only valid, if the
layout is calculated, i.e. if at least one node does not have a
fixed location specification. The layout algorithm partitioned all
nodes into levels 0...maxlevel. Nodes at the level 0 are on the
upper corner. The algorithm is able to calculate appropriate levels
for the nodes automatically, if no fixed levels are given.
Specifications of levels are additional constraints, that may be
ignored, if they are in conflict with near edge specifications.
Default values are unspecified. */
int vertical_order;
/* horizontal order is the horizontal position of the 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.
Default is unspecified. */
int horizontal_order;
/* width, height is the width and height of a node including the border.
If no value (in pixels) is given then width and height are
calculated from the size of the label.
Default are width and height of the label. */
int width;
int height;
/* shrink, stretch gives the shrinking and stretching factor of the
node. The values of the attributes width, height, borderwidth and
the size of the label text is scaled by ((stretch=shrink) \Lambda
100) percent. Note that the actual scale value is determined by the
scale value of a node relatively to a scale value of the graph,
i.e. if (stretch,shrink) = (2,1) for the graph and (stretch,shrink)
= (2,1) for the node of the graph, then the node is scaled by the
factor 4 compared to the normal size. The scale value can also be
specified by scaling: float.
Default are 1,1. */
int shrink;
int stretch;
/* folding specifies the default folding of the nodes. The folding k
(with k ? 0) means that the graph part that is reachable via edges
of a class less or equal to k is folded and displayed as one node.
There are commands to unfold such summary nodes, see section 5. If
no folding is specified for a node, then the node may be folded if
it is in the region of another node that starts the folding. If
folding 0 is specified, then the node is never folded. In this case
the folding stops at the predecessors of this node, if it is
reachable from another folding node. The summary node inherits some
attributes from the original node which starts the folding (all
color attributes, textmode and label, but not the location). A
folded region may contain folded regions with smaller folding class
values (nested foldings). If there is more than one node that start
the folding of the same region (this implies that the folding class
values are equal) then the attributes are inherited by one of these
nodes nondeterministically. If foldnode attributes are specified,
then the summary node attributes are inherited from these attributes.
Default is none. */
int folding;
/* shape specifies the visual appearance of a node: box, rhomb, ellipse,
and triangle. The drawing of ellipses is much slower than the drawing
of the other shapes.
Default is box. */
enum shape_e shape;
/* textmode specifies the adjustment of the text within the border of a
node. The possibilities are center, left.justify and right.justify.
Default is center. */
enum textmode_e textmode;
/* borderwidth specifies the thickness of the node's border in pixels.
color is the background color of the node. If none is given, the
node is white. For the possibilities, see the attribute color for
graphs.
Default is 2. */
int borderwidth;
/* node color.
Default is white or transparent, */
enum color_e color;
/* textcolor is the color for the label text. bordercolor is the color
of the border. Default color is the textcolor. info1, info2, info3
combines additional text labels with a node or a folded graph. info1,
Default is black. */
enum color_e textcolor;
/* info2, info3 can be selected from the menu. The corresponding text
labels can be shown by mouse clicks on nodes.
Default are null strings. */
char *infos[3];
/* Node border color.
Default is textcolor. */
enum color_e bordercolor;
/* Next node node... */
struct node_s *next;
};
/* typedef alias. */
typedef struct node_s node_t;
/*-------------------------------------------------------.
| Edge attributs list. Structure that describes an edge. |
`-------------------------------------------------------*/
/* VCG Edge type. */
enum edge_type
{
normal_edge,
back_edge,
near_edge,
bent_near_edge
};
/* Structs enum definitions for edges. */
enum linestyle_e
{
continuous,
dashed,
dotted,
invisible
};
enum arrowstyle_e
{
solid,
line,
none
};
/* The struct edge_s itself. */
struct edge_s
{
/* Edge type.
Default is normal edge. */
enum edge_type type;
/* Sourcename is the title of the source node of the edge.
Default: none. */
const char *sourcename; /* Mandatory. */
/* Targetname is the title of the target node of the edge.
Default: none. */
const char *targetname; /* Mandatory. */
/* Label specifies the label of the edge. It is drawn if
display.edge.labels is set to yes.
Default: no label. */
const char *label;
/* Linestyle specifies the style the edge is drawn. Possibilities are:
ffl continuous a solid line is drawn ( -- ) ffl dashed the edge
consists of single dashes ( - - - ) ffl dotted the edge is made of
single dots ( \Delta \Delta \Delta ) ffl invisible the edge is not
drawn. The attributes of its shape (color, thickness) are ignored.
To draw a dashed or dotted line needs more time than solid lines.
Default is continuous. */
enum linestyle_e linestyle;
/* Thickness is the thickness of an edge.
Default is 2. */
int thickness;
/* Class specifies the folding class of the edge. Nodes reachable by
edges of a class less or equal to a constant k specify folding
regions of k. See the node attribute folding and the folding commands.
Default is 1. */
int class;
/* color is the color of the edge.
Default is black. */
enum color_e color;
/* textcolor is the color of the label of the edge. arrowcolor,
backarrowcolor is the color of the arrow head and of the backarrow
head. priority The positions of the nodes are mainly determined by
the incoming and outgoing edges. One can think of rubberbands instead
of edges that pull a node into its position. The priority of an edges
corresponds to the strength of the rubberband.
Default is color. */
enum color_e textcolor;
/* Arrow color.
Default is color. */
enum color_e arrowcolor;
/* BackArrow color.
Default is color. */
enum color_e backarrowcolor;
/* arrowsize, backarrowsize The arrow head is a right-angled, isosceles
triangle and the cathetuses have length arrowsize.
Default is 10. */
int arrowsize;
/* Backarrow size
Default is 0. */
int backarrowsize;
/* arrowstyle, backarrowstyle Each edge has two arrow heads: the one
appears at the target node (the normal arrow head), the other appears
at the source node (the backarrow head). Normal edges only have the
normal solid arrow head, while the backarrow head is not drawn, i.e.
it is none. Arrowstyle is the style of the normal arrow head, and
backarrowstyle is the style of the backarrow head. Styles are none,
i.e. no arrow head, solid, and line.
Default is solid. */
enum arrowstyle_e arrowstyle;
/* Default is none. */
enum arrowstyle_e backarrowstyle;
/* Default is 1. */
int priority;
/* Anchor. An anchor point describes the vertical position in a node
where an edge goes out. This is useful, if node labels are several
lines long, and outgoing edges are related to label lines. (E.g.,
this allows a nice visualization of structs containing pointers as
fields.).
Default is none. */
int anchor;
/* Horizontal order is the horizontal position the edge. This is of
interest only if the edge crosses several levels because it specifies
the point where the edge crosses the level. within a level. The nodes
which are specified with horizontal positions are ordered according
to these positions within a level. The horizontal position of a long
edge that crosses the level specifies between which two node of that
level the edge has to be drawn. Other edges 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.
Default is unspcified. */
int horizontal_order;
/*
** Next edge node...
*/
struct edge_s *next;
};
/*
** typedef alias.
*/
typedef struct edge_s edge_t;
/*--------------------------------------------------------.
| Graph attributs list. Structure that describes a graph. |
`--------------------------------------------------------*/
struct graph_s
{
/* Graph title or name.
Title specifies the name (a string) associated with the graph. The
default name of a subgraph is the name of the outer graph, and the
name of the outmost graph is the name of the specification input
file. The name of a graph is used to identify this graph, e.g., if
we want to express that an edge points to a subgraph. Such edges
point to the root of the graph, i.e. the first node of the graph or
the root of the first subgraph in the graph, if the subgraph is
visualized explicitly.
By default, it's the name of the vcg graph file description. */
const char *title;
/* Graph label.
Label the text displayed inside the node, when the graph is folded
to a node. If no label is specified then the title of the graph will
be used. Note that this text may contain control characters like
NEWLINE that influences the size of the node.
By default, it takes the title value */
const char *label;
/* Any informations.
Info1, info2, info3 combines additional text labels with a node or a
folded graph. info1, info2, info3 can be selected from the menu
interactively. The corresponding text labels can be shown by mouse
clicks on nodes.
Defalut values are empty strings (here NULL pointers) */
const char *infos[3];
/* Background color and summary node colors
Color specifies the background color for the outermost graph, or the
color of the summary node for subgraphs. Colors are given in the enum
declared above. If more than these default colors are needed, a
color map with maximal 256 entries can be used. The first 32 entries
correspond to the colors just listed. A color of the color map can
selected by the color map index, an integer, for instance red has
index 2, green has index 3, etc.
Default is white for background and white or transparent for summary
nodes. */
unsigned char color;
/* Textcolor.
need explainations ???
defalut is black for summary nodes. */
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. */
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
summary node of inner subgraphs.
Defalut value is 100. */
int width;
int height;
/* Specify the thickness if summary node's border in pixels.
defalut value is 2. */
int borderwidth;
/* x, y are the x-position and y-position of the graph's window in
pixels, relatively to the root screen, if it is the outermost graph.
The origin of the window is upper, left hand. For inner subgraphs,
it is the position of the folded summary node. The position can also
be specified in the form loc: fx:int y:intg.
The default value is 0. */
int x;
int y;
/* folding of a subgraph is 1, if the subgraph is fused, and 0, if the
subgraph is visualized explicitly. There are commands to unfold such
summary nodes.
Defalut value is 0 */
int folding;
/* Shrink, stretch gives the shrinking and stretching factor for the
graph's representation (default is 1, 1). ((stretch=shrink) \Lambda
100) is the scaling of the graph in percentage, e.g.,
(stretch,shrink) = (1,1) or (2,2) or (3,3) : : : is normal size,
(stretch,shrink) = (1,2) is half size, (stretch,shrink) = (2,1) is
double size. For subgraphs, it is also the scaling factor of the
summary node. The scaling factor can also be specified by scaling:
float (here, scaling 1.0 means normal size). */
int shrink;
int stretch;
/* textmode specifies the adjustment of the text within the border of a
summary node. The possibilities are center, left.justify and
right.justify.
Default value is center.*/
enum textmode_e textmode;
/* Shape can be specified for subgraphs only. It is the shape of the
subgraph summary node that appears if the subgraph is folded: box,
rhomb, ellipse, and triangle. 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. 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.
Defalut is box, other: rhomb, ellipse, triangle. */
enum shape_e shape;
/* 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
part, thus the width and height of the displayed part cannot be
greater than xmax and ymax. Only those parts of the graph are drawn
that are inside the virtual window. The virtual window can be moved
over the potential infinite system of coordinates by special
positioning commands.
Defaults are 90 and 90. */
int xmax;
int ymax;
/* xy-base: specify the upper left corner coordonates of the graph
relatively to the root window.
Defaults are 5, 5. */
int xbase;
int ybase;
/* xspace, yspace the minimum horizontal and vertical distance between
nodes. xlspace is the horizontal distance between lines at the
points where they cross the levels. (At these points, dummy nodes
are used. In fact, this is the horizontal distance between dummy
nodes.) It is recommended to set xlspace to a larger value, if
splines are used to draw edges, to prevent sharp bendings.
Default are 20 and 70. */
int xspace;
int yspace;
/* The horizontal space between lines at the point where they cross
the levels.
defaults value is 1/2 xspace (polygone) and 4/5 xspace (splines)*/
int xlspace;
/* xraster, yraster specifies the raster distance for the position of
the nodes. The center of a node is aligned to this raster. xlraster
is the horizontal raster for the positions of the line control
points (the dummy nodes). It should be a divisor of xraster.
defaluts are 1,1. */
int xraster;
int yraster;
/* xlraster is the horizontal raster for the positions of the line
control points (the dummy nodes). It should be a divisor of xraster.
defaults is 1. */
int xlraster;
/* hidden specifies the classes of edges that are hidden.
Edges that are within such a class are not laid out nor drawn.
Nodes that are only reachable (forward or backward) by edges of an
hidden class are not drawn. However, nodes that are not reachable
at all are drawn. (But see attribute ignore.singles.) Specification
of classes of hidden edges allows to hide parts of a graph, e.g.,
annotations of a syntax tree. This attribute is only allowed at the
outermost level. More than one settings are possible to specify
exactly the set of classes that are hidden. Note the important
difference between hiding of edges and the edge line style invisible.
Hidden edges are not existent in the layout. Edges with line style
invisible are existent in the layout; they need space and may
produce crossings and influence the layout, but you cannot see
them.
No default value. */
int hidden;
/* Classname allows to introduce names for the edge classes. The names
are used in the menus. infoname allows to introduce names for the
additional text labels. The names are used in the menus.
defaults are 1,2,3...
By default, no class names. */
struct classname_s *classname;
/* FIXME : infoname. */
/* FIXME : colorentry. */
/* layoutalgorithm chooses different graph layout algorithms
Possibilities are maxdepth, mindepth, maxdepthslow, mindepthslow,
maxdegree, mindegree, maxindegree, minindegree, maxoutdegree,
minoutdegree, minbackward, dfs and tree. The default algorithm tries
to give all edges the same orientation and is based on the
calculation of strongly connected components. The algorithms that
are based on depth first search are faster. While the simple dfs
does not enforce additionally constraints, the algorithm maxdepth
tries to increase the depth of the layout and the algorithm mindepth
tries to increase the wide of the layout. These algorithms are fast
heuristics. If they are not appropriate, the algorithms maxdepthslow
or mindepthslow also increase the depth or wide, but they are very
slow. The algorithm maxindegree lays out the nodes by scheduling the
nodes with the maximum of incoming edges first, and minindegree lays
out the nodes by scheduling the nodes with the minimum of incoming
edges first. In the same manner work the algorithms maxoutdegree and
minoutdegree for outgoing edges, and maxdegree and mindegree for the
sum of incoming and outgoing edges. These algorithms may have various
effects, and can sometimes be used as replacements of maxdepthslow
or mindepthslow.
The algorithm minbackward can be used if the graph is acyclic.
The algorithm tree is a specialized method for downward laid out
trees. It is much faster on such tree-like graphs and results in a
balanced layout.
Default is normal. */
enum layoutalgorithm_e layoutalgorithm;
/* Layout downfactor, layout upfactor, layout nearfactor The layout
algorithm partitions the set of edges into edges pointing upward,
edges pointing downward, and edges pointing sidewards. The last type
of edges is also called near edges. If the layout.downfactor is
large compared to the layout.upfactor and the layout.nearfactor,
then the positions of the nodes is mainly determined by the edges
pointing downwards. If the layout.upfactor is large compared to the
layout.downfactor and the layout.nearfactor, then the positions of
the nodes is mainly determined by the edges pointing upwards. If the
layout.nearfactor is large, then the positions of the nodes is
mainly determined by the edges pointing sidewards. These attributes
have no effect, if the method for downward laid out trees is used.
Defalut is normal. */
int layout_downfactor;
int layout_upfactor;
int layout_nearfactor;
/* Layout splinefactor determines the bending at splines. The factor
100 indicates a very sharp bending, a factor 1 indicates a very flat
bending. Useful values are 30 : : : 80. */
int layout_splinefactor;
/* Late edge labels yes means that the graph is first partitioned and
then, labels are introduced. The default algorithm first creates
labels and then partitions the graph, which yield a more compact
layout, but may have more crossings.
Default is no. */
enum decision_e late_edge_labels;
/* Display edge labels yes means display labels and no means don't
display edge labels.
Default vaule is no. */
enum decision_e display_edge_labels;
/* Dirty edge labels yes enforces a fast layout of edge labels, which
may very ugly because several labels may be drawn at the same place.
Dirty edge labels cannot be used if splines are used.
Default is no.
*/
enum decision_e dirty_edge_labels;
/* Finetuning no switches the fine tuning phase of the graph layout
algorithm off, while it is on as default. The fine tuning phase
tries to give all edges the same length.
Default is yes. */
enum decision_e finetuning;
/* Ignore singles yes hides all nodes which would appear single and
unconnected from the remaining graph. Such nodes have no edge at all
and are sometimes very ugly. Default is to show all nodes.
Default is no. */
enum decision_e ignore_singles;
/* Straight phase yes initiates an additional phase that tries to avoid
bendings in long edges.
Long edges are laid out by long straight vertical lines with
gradient 90 degree. Thus, this phase is not very appropriate for
normal layout, but it is recommended, if an orthogonal layout is
selected (see manhattan.edges).
Default is no. */
enum decision_e straight_phase;
/* priority phase yes replaces the normal pendulum method by a
specialized method: It forces straight long edges with 90 degree,
just as the straight phase. In fact, the straight phase is a fine
tune phase of the priority method. This phase is also recommended,
if an orthogonal layout is selected (see manhattan.edges).
Default is no. */
enum decision_e priority_phase;
/* manhattan edges yes switches the orthogonal layout on. Orthogonal
layout (or manhattan layout) means that all edges consist of line
segments with gradient 0 or 90 degree. Vertical edge segments might
by shared by several edges, while horizontal edge segments are never
shared. This results in very aesthetical layouts just for flowcharts.
If the orthogonal layout is used, then the priority phase and
straight phase should be used. Thus, these both phases are switched
on, too, unless priority layout and straight line tuning are
switched off explicitly.
Default is no. */
enum decision_e manhattan_edges;
/* Smanhattan edges yes switches a specialized orthogonal layout on:
Here, all horizontal edge segments between two levels share the same
horizontal line, i.e. not only vertical edge segments are shared,
but horizontal edge segments are shared by several edges, too. This
looks nice for trees but might be too confusing in general, because
the location of an edge might be ambiguously.
Default is no. */
enum decision_e smanhattan_edges;
/* Near edges no suppresses near edges and bent near edges in the
graph layout.
Default is yes. */
enum decision_e near_edges;
/* Orientation specifies the orientation of the graph: top.to.bottom,
bottom.to.top, left.to.right or right.to.left. Note: the normal
orientation is top.to.bottom. All explanations here are given
relatively to the normal orientation, i.e., e.g., if the orientation
is left to right, the attribute xlspace is not the horizontal but
the vertical distance between lines, etc.
Default is to_to_bottom. */
enum orientation_e orientation;
/* Node alignment specified the vertical alignment of nodes at the
horizontal reference line of the levels. If top is specified, the
tops of all nodes of a level have the same y-coordinate; on bottom,
the bottoms have the same y-coordinate, on center the nodes are
centered at the levels.
Default is center. */
enum alignement_e node_alignement;
/* Port sharing no suppresses the sharing of ports of edges at the
nodes. Normally, if multiple edges are adjacent to the same node,
and the arrow head of all these edges has the same visual appearance
(color, size, etc.), then these edges may share a port at a node,
i.e. only one arrow head is draw, and all edges are incoming into
this arrow head. This allows to have many edges adjacent to one node
without getting confused by too many arrow heads. If no port sharing
is used, each edge has its own port, i.e. its own place where it is
adjacent to the node.
Default is yes. */
enum decision_e port_sharing;
/* Arrow mode fixed (default) should be used, if port sharing is used,
because then, only a fixed set of rotations for the arrow heads are
used. If the arrow mode is free, then each arrow head is rotated
individually to each edge. But this can yield to a black spot, where
nothing is recognizable, if port sharing is used, since all these
qdifferently rotated arrow heads are drawn at the same place. If the
arrow mode is fixed, then the arrow head is rotated only in steps of
45 degree, and only one arrow head occurs at each port.
Default is fixed. */
enum arrow_mode_e arrow_mode;
/* Treefactor The algorithm tree for downward laid out trees tries to
produce a medium dense, balanced tree-like layout. If the tree
factor is greater than 0.5, the tree edges are spread, i.e. they
get a larger gradient. This may improve the readability of the tree.
Note: it is not obvious whether spreading results in a more dense or
wide layout. For a tree, there is a tree factor such that the whole
tree is minimal wide.
Default is 0.5. */
float treefactor;
/* Spreadlevel This parameter only influences the algorithm tree, too.
For large, balanced trees, spreading of the uppermost nodes would
enlarge the width of the tree too much, such that the tree does not
fit anymore in a window. Thus, the spreadlevel specifies the minimal
level (rank) where nodes are spread. Nodes of levels upper than
spreadlevel are not spread.
Default is 1. */
int spreadlevel;
/* Crossing weight specifies the weight that is used for the crossing
reduction: bary (default), median, barymedian or medianbary. We
cannot give a general recommendation, which is the best method. For
graphs with very large average degree of edges (number of incoming
and outgoing edges at a node), the weight bary is the fastest
method. With the weights barymedian and medianbary, equal weights of
different nodes are not very probable, thus the crossing reduction
phase 2 might be very fast.
Default is bary. */
enum crossing_type_e crossing_weight;
/* Crossing phase2 is the most time consuming phase of the crossing
reduction. In this phase, the nodes that happen to have equal
crossing weights are permuted. By specifying no, this phase is
suppressed.
Default is yes. */
enum decision_e crossing_phase2;
/* Crossing optimization is a postprocessing phase after the normal
crossing reduction: we try to optimize locally, by exchanging pairs
of nodes to reduce the crossings. Although this phase is not very
time consuming, it can be suppressed by specifying no.
Default is yes. */
enum decision_e crossing_optimization;
/* View allows to select the fisheye views. Because
of the fixed size of the window that shows the graph, we normally
can only see a small amount of a large graph. If we shrink the graph
such that it fits into the window, we cannot recognize any detail
anymore. Fisheye views are coordinate transformations: the view onto
the graph is distort, to overcome this usage deficiency. The polar
fisheye is easy to explain: assume a projection of the plane that
contains the graph picture onto a spheric ball. If we now look onto
this ball in 3 D, we have a polar fisheye view. There is a focus
point which is magnified such that we see all details. Parts of the
plane that are far away from the focus point are demagnified very
much. Cartesian fisheye have a similar effect; only the formula for
the coordinate transformation is different. Selecting cfish means
the cartesian fisheye is used which demagnifies such that the whole
graph is visible (self adaptable cartesian fisheye). With fcfish,
the cartesian fisheye shows the region of a fixed radius around the
focus point (fixed radius cartesian fisheye). This region might be
smaller than the whole graph, but the demagnification needed to show
this region in the window is also not so large, thus more details
are recognizable. With pfish the self adaptable polar fisheye is
selected that shows the whole graph, and with fpfish the fixed
radius polar fisheye is selected.
Defalut is normal view. */
enum view_e view;
/* Edges no suppresses the drawing of edges.
Default is yes. */
enum decision_e edges;
/* Nodes no suppresses the drawing of nodes.
Default is yes. */
enum decision_e nodes;
/* Splines specifies whether splines are used to draw edges (yes or no).
As default, polygon segments are used to draw edges, because this is
much faster. Note that the spline drawing routine is not fully
validated, and is very slow. Its use is mainly to prepare high
quality PostScript output for very small graphs.
Default is no. */
enum decision_e splines;
/* Bmax set the maximal number of iterations that are done for the
reduction of edge bendings.
Default is 100. */
int bmax;
/* Cmin set the minimal number of iterations that are done for the
crossing reduction with the crossing weights. The normal method
stops if two consecutive checks does not reduce the number of
crossings anymore. However, this increasing of the number of
crossings might be locally, such that after some more iterations,
the crossing number might decrease much more.
Default is 0. */
int cmin;
/* Cmax set the maximal number of interactions for crossing reduction.
This is helpful for speedup the layout process.
Default is infinite. */
int cmax;
/* Pmin set the minimal number of iterations that is done with the
pendulum method. Similar to the crossing reduction, this method
stops if the `imbalancement weight' does not decreases anymore.
However, the increasing of the imbalancement weight might be locally,
such that after some more iterations, the imbalancement weight might
decrease much more.
Default is 0. */
int pmin;
/* Pmax set the maximal number of iterations of the pendulum method.
This is helpful for speedup the layout process.
Default is 100. */
int pmax;
/* Rmin set the minimal number of iterations that is done with the
rubberband method. This is similar as for the pendulum method.
Default is 0. */
int rmin;
/* Rmax set the maximal number of iterations of the rubberband method.
This is helpful for speedup the layout process.
Default is 100. */
int rmax;
/* Smax set the maximal number of iterations of the straight line
recognition phase (useful only, if the straight line recognition
phase is switched on, see attribute straight.phase).
Default is 100. */
int smax;
/* Generic values.
*/
node_t node;
edge_t edge;
/* List of nodes declared.
Pointer. */
node_t *node_list;
/* List of edges declared.
Pointer. */
edge_t *edge_list;
};
/* Graph typedefs. */
typedef struct graph_s graph_t;
void new_graph PARAMS ((graph_t *g));
void new_node PARAMS ((node_t *node));
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 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_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_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_ */
+175
View File
@@ -0,0 +1,175 @@
/* VCG description handler for 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 VCG_DEFAULTS_H_
# define VCG_DEFAULTS_H_
/* Graph defaults. */
# define G_TITLE NULL
# define G_LABEL NULL
# define G_INFOS1 NULL
# define G_INFOS2 NULL
# define G_INFOS3 NULL
# define G_COLOR white
# define G_TEXTCOLOR black
# define G_BORDERCOLOR G_TEXTCOLOR
# define G_WIDTH 100
# define G_HEIGHT 100
# define G_BORDERWIDTH 2
# define G_X 0
# define G_Y 0
# define G_FOLDING 0
# define G_SHRINK 1
# define G_STRETCH 1
# define G_TEXTMODE centered
# define G_SHAPE box
# define G_XMAX 90 /* Not output */
# define G_YMAX 90 /* Not output */
# define G_XBASE 5
# define G_YBASE 5
# define G_XSPACE 20
# define G_YSPACE 70
# define G_XLSPACE G_XSPACE / 2 /* Not output */
# define G_XRASTER 1
# 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_LAYOUTALGORITHM normal
# define G_LAYOUT_DOWNFACTOR 1
# define G_LAYOUT_UPFACTOR 1
# define G_LAYOUT_NEARFACTOR 1
# define G_LAYOUT_SPLINEFACTOR 70
# define G_LATE_EDGE_LABELS no
# define G_DISPLAY_EDGE_LABELS no
# define G_DIRTY_EDGE_LABELS no
# define G_FINETUNING yes
# define G_IGNORE_SINGLES no
# define G_STRAIGHT_PHASE no
# define G_PRIORITY_PHASE no
# define G_MANHATTAN_EDGES no
# define G_SMANHATTAN_EDGES no
# define G_NEAR_EDGES yes
# define G_ORIENTATION top_to_bottom
# define G_NODE_ALIGNEMENT center
# define G_PORT_SHARING yes
# define G_ARROW_MODE fixed
# define G_TREEFACTOR 0.5
# define G_SPREADLEVEL 1
# define G_CROSSING_WEIGHT bary
# define G_CROSSING_PHASE2 yes
# define G_CROSSING_OPTIMIZATION yes
# define G_VIEW normal_view
# define G_EDGES yes
# define G_NODES yes
# define G_SPLINES no
# define G_BMAX 100
# define G_CMIN 0
/* computes the max value of an int ... */
# define G_CMAX ((unsigned) 1 << (sizeof(int) * 8 - 1)) - 1
# define G_PMIN 0
# define G_PMAX 100
# define G_RMIN 0
# define G_RMAX 100
# define G_SMAX 100
# define G_NODE_LIST NULL
# define G_EDGE_LIST NULL
/* Nodes defaults. */
# define N_TITLE NULL
# define N_LABEL NULL
# define N_LOCX -1 /* Default unspcified */
# define N_LOCY -1 /* Default unspcified */
# define N_VERTICAL_ORDER -1 /* Default unspcified */
# define N_HORIZONTAL_ORDER -1 /* Default unspcified */
# define N_WIDTH -1 /* We assume that we can't define it now. */
# define N_HEIGHT -1 /* also. */
# define N_SHRINK 1
# define N_STRETCH 1
# define N_FOLDING -1 /* no explicit default value. */
# define N_SHAPE box
# define N_TEXTMODE centered
# define N_BORDERWIDTH 2
# define N_COLOR white
# define N_TEXTCOLOR black
# define N_BORDERCOLOR N_TEXTCOLOR
# define N_INFOS1 NULL
# define N_INFOS2 NULL
# define N_INFOS3 NULL
# define N_NEXT NULL
/* Edge defaults. */
# define E_EDGE_TYPE normal_edge
# define E_SOURCENAME NULL /* Mandatory. */
# define E_TARGETNAME NULL /* Mandatory. */
# define E_LABEL NULL
# define E_LINESTYLE continuous
# define E_THICKNESS 2
# define E_CLASS 1
# define E_COLOR black
# define E_TEXTCOLOR E_COLOR
# define E_ARROWCOLOR E_COLOR
# define E_BACKARROWCOLOR E_COLOR
# define E_ARROWSIZE 10
# define E_BACKARROWSIZE 0
# define E_ARROWSTYLE solid
# define E_BACKARROWSTYLE none
# define E_PRIORITY 1
# define E_ANCHOR -1
# define E_HORIZONTAL_ORDER -1
# define E_NEXT NULL
#endif /* not VCG_DEFAULTS_H_ */
+1
View File
@@ -12,3 +12,4 @@ testsuite
calc.[chy]
calc.tab.*
calc
*.output *.vcg
+4 -1
View File
@@ -1,6 +1,6 @@
# @configure_input@ -*- shell-script -*-
# Configurable variable values for building test suites.
# Copyright (C) 2000 Free Software Foundation, Inc.
# 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
@@ -86,6 +86,9 @@ M4='@M4@'
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
+1 -1
View File
@@ -293,7 +293,7 @@ AT_DATA_CALC_Y([$1])
# Specify the output files to avoid problems on different file systems.
AT_CHECK([bison calc.y -o calc.c patsubst([$1], [--yyerror-verbose])],
[0], [], [])
AT_CHECK([$CC $CFLAGS calc.c -o calc], 0, [], [])
AT_CHECK([$CC $CFLAGS $CPPFLAGS calc.c -o calc], 0, [], [])
# Test the priorities.
_AT_CHECK_CALC([$1],