diff options
author | James Clark <jjc@jclark.com> | 1993-09-22 17:45:35 -0500 |
---|---|---|
committer | James Clark <jjc@jclark.com> | 1993-09-22 17:45:35 -0500 |
commit | 5bba1c1b0992c9b30fc6901c6f750c831e6d7712 (patch) | |
tree | bf2a45c2cd4820e8525746efb363066f262526ab | |
parent | 71e9155c33a535fb98abd881c5c8dc032f3476f0 (diff) |
groff before CVS: release 1.081.08
-rw-r--r-- | ChangeLog | 162 | ||||
-rw-r--r-- | Makefile | 373 | ||||
-rw-r--r-- | Makefile.ccpg | 6 | ||||
-rw-r--r-- | Makefile.comm | 2 | ||||
-rw-r--r-- | Makefile.in | 29 | ||||
-rw-r--r-- | NEWS | 16 | ||||
-rw-r--r-- | PROBLEMS | 190 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | acgroff.m4 | 43 | ||||
-rwxr-xr-x | config.status | 88 | ||||
-rwxr-xr-x | configure | 50 | ||||
-rw-r--r-- | configure.in | 4 | ||||
-rw-r--r-- | devps/psstrip.sed | 4 | ||||
-rw-r--r-- | eqn/Makefile.sub | 3 | ||||
-rw-r--r-- | eqn/box.cc | 2 | ||||
-rw-r--r-- | eqn/eqn.cc | 2172 | ||||
-rw-r--r-- | eqn/eqn.tab.h | 118 | ||||
-rw-r--r-- | eqn/eqn.y | 1 | ||||
-rw-r--r-- | eqn/y.output | 0 | ||||
-rw-r--r-- | gcc.patch | 0 | ||||
-rw-r--r-- | groff/groff.cc | 6 | ||||
-rw-r--r-- | grog/Makefile.sub | 5 | ||||
-rw-r--r-- | grops/grops.man | 6 | ||||
-rw-r--r-- | grops/ps.cc | 4 | ||||
-rw-r--r-- | grops/ps.h | 5 | ||||
-rw-r--r-- | grotty/tty.cc | 10 | ||||
-rw-r--r-- | include/lib.h | 6 | ||||
-rw-r--r-- | indxbib/indxbib.man | 2 | ||||
-rw-r--r-- | mm/ChangeLog | 36 | ||||
-rw-r--r-- | mm/groff_mm.man | 38 | ||||
-rw-r--r-- | mm/tmac.m | 152 | ||||
-rw-r--r-- | nroff/Makefile.sub | 12 | ||||
-rwxr-xr-x | nroff/conftest.sh | 4 | ||||
-rwxr-xr-x | nroff/nroff.sh | 1 | ||||
-rw-r--r-- | pic/lex.cc | 4 | ||||
-rw-r--r-- | pic/pic.cc | 6632 | ||||
-rw-r--r-- | pic/pic.tab.h | 222 | ||||
-rw-r--r-- | pic/pic.y | 15 | ||||
-rw-r--r-- | pic/y.output | 0 | ||||
-rw-r--r-- | refer/label.cc | 1565 | ||||
-rw-r--r-- | refer/ref.cc | 4 | ||||
-rw-r--r-- | refer/y.output | 0 | ||||
-rw-r--r-- | tbl/main.cc | 16 | ||||
-rw-r--r-- | tbl/table.cc | 14 | ||||
-rw-r--r-- | tbl/table.h | 3 | ||||
-rw-r--r-- | tbl/tbl.man | 9 | ||||
-rwxr-xr-x[-rw-r--r--] | test-groff | 0 | ||||
-rw-r--r-- | tmac/tmac.an | 14 | ||||
-rw-r--r-- | tmac/tmac.e | 8 | ||||
-rw-r--r-- | troff/div.cc | 81 | ||||
-rw-r--r-- | troff/div.h | 2 | ||||
-rw-r--r-- | troff/env.cc | 6 | ||||
-rw-r--r-- | troff/input.cc | 33 | ||||
-rw-r--r-- | troff/node.cc | 31 | ||||
-rw-r--r-- | troff/node.h | 1 | ||||
-rw-r--r-- | troff/number.cc | 2 | ||||
-rw-r--r-- | troff/troff.man | 12 | ||||
-rw-r--r-- | xditview/ChangeLog | 4 | ||||
-rw-r--r-- | xditview/Makefile | 10 | ||||
-rw-r--r-- | xditview/draw.c | 3 |
60 files changed, 7219 insertions, 5024 deletions
@@ -1,3 +1,165 @@ +Mon Apr 19 09:55:57 1993 James Clark (jjc at jclark) + + * Version 1.08 released. + + * Makefile.in (dist): Insert || true after ln -s commands that + might fail. + + * mm: Update to mm 1.16. + + * acgroff.m4 (GROFF_CSH_HACK): New macro. + * configure.in: Call GROFF_CSH_HACK. Substitute for + SH_SCRIPT_SED_CMD. + * Makefile.in (SH_SCRIPT_SED_CMD): New variable. Include in + MDEFINES. + * nroff/Makefile.sub (nroff): New target. + (install_data): Install nroff. + * eqn/Makefile.sub (neqn): Sed with SH_SCRIPT_SED_CMD. + * grog/Makefile.sub (grog): Sed grog.sh with SH_SCRIPT_SED_CMD. + +Sat Apr 17 08:24:28 1993 James Clark (jjc at jclark) + + * eqn/Makefile.sub (neqn): Add chmod +x. + + * grog/Makefile.sub (grog): Remove spurious semi-colon. + +Fri Apr 16 22:41:57 1993 James Clark (jjc at jclark) + + * troff/input.cc (string_iterator::string_iterator()): Initialize + lineno and count. + +Tue Apr 13 10:22:28 1993 James Clark (jjc at jclark) + + * troff/div.cc (macro_diversion::space, + top_level_diversion::space): Don't set high_water_mark. + (macro_diversion::output, top_level_diversion::output): Don't + include post line space in high water mark. + +Wed Apr 7 12:48:18 1993 James Clark (jjc at jclark) + + * eqn/eqn.y: Don't define YYDEBUG. + * pic/pic.y: Likewise. + +Mon Apr 5 10:15:15 1993 James Clark (jjc at jclark) + + * tmac/tmac.e ([3): Add space after comma following editors. + Change double spaces to single spaces. + ([4): Change double spaces to single spaces. + + * grops/ps.h (USE_PS_ADOBE_2_0): New flag for broken_flags. + * grops/ps.cc (ps_printer::~ps_printer): If the USE_PS_ADOBE_2_0 + bit is set in broken_flags, use 2.0 rather than 3.0 as the version + after %!PS-Adobe- (for Newsprint). + + * troff/div.cc (top_level_diversion::begin_page): When + before_first_page is 1, set page_number to 1. + +Sun Apr 4 14:28:53 1993 James Clark (jjc at jclark) + + * eqn/box.cc (box::top_level): Protect equation with \&. + +Sat Apr 3 23:27:25 1993 James Clark (jjc at jclark) + + * groff/groff.cc (possible_command::set_name): Delete old name. + + * groff/groff.cc (possible_command::~possible_command): Use + a_delete. + + * troff/node.cc (troff_output_file::begun_page): New member. + (troff_output_file::troff_output_file): Initialize it. + (troff_output_file::really_begin_page): Only output V command if a + page has been begun. + + * pic/pic.y (placeless_element): Delete argument to PRINT after + use. + +Fri Apr 2 11:31:02 1993 James Clark (jjc at jclark) + + * Make wrapman work. + * troff/div.h (class top_level_diversion): Replace + first_page_begun by before_first_page (with opposite sense). + * Change first_page_begun to before_first_page inverting sense. + * troff/div.cc (class nl_reg): New class. + (init_div_requests): Use class nl_reg for \n(nl. + (top_level_diversion::begin_page): Don't call + output_file::begin_page if before_first_page is 2; + reset before_first_page afterwards. If have_next_page_number is + false, then always increment page_number. + * tmac/tmac.an: Set traps within TH rather than at the top-level. + Restore compatibility mode after loading, and then disable + compatibility mode in TH. + +Thu Apr 1 11:09:34 1993 James Clark (jjc at jclark) + + * grotty/tty.cc (tty_printer::end_page): Don't discard characters + past last line. + * troff/node.h (output_file::trailer): Declare. + * troff/div.cc (cleanup_and_exit): Call output_file::trailer(). + * troff/node.cc (output_file::trailer): New function. + (troff_output_file::~troff_output_file): Move most code into... + (troff_output_file::trailer): New function. + (class troff_output_file): Delete page_length member. Declare + trailer(). + (troff_output_file::really_begin_page): Use current page length + for final V command. + + * tbl/main.cc (struct options): New decimal_point_char member. + (options::options): Initialize this. + (process_options): Implement decimalpoint option. + (process_data): Pass decimal_point_char option to table::table. + * tbl/table.h (class table): New decimal_point_char member. + (table::table): Add additional argument. + * tbl/table.cc (find_dot): Rename to find_decimal_point. Add + second argument specifying decimal point character. Use this + instead of '.'. + (table::table): Initialize decimal_point_char. + (table::add_entry): Change call to find_dot. + + * troff/input.cc (get_copy, token::next): Implement \V. + (interpolate_environment_variable): New function. + +Tue Mar 30 14:41:39 1993 James Clark (jjc at jclark) + + * pic/lex.cc (lookup_keyword): Rename MIN to K_MIN, MAX to K_MAX. + * pic/pic.y: Likewise. + + * grotty/tty.cc (tty_printer::add_char, tty_printer::end_page): + Add casts to int. + * refer/ref.cc (reference::insert_field, reference::delete_field): + Likewise. + * troff/number.cc (parse_term): Likewise. + + * acgroff.m4 (GROFF_PROG_YACC): New macro. + * configure.in: Use GROFF_PROG_YACC. + + * acgroff.m4 (GROFF_PROG_CCC): Don't add -O automatically for gcc + and g++. + * Makefile.in (OPTIMIZE): New define. + (DEBUG): Empty by default. + (CCFLAGS, CFLAGS): Include $(OPTIMIZE). + + * acgroff.m4 (GROFF_SYS_SIGLIST): Don't quote program. + (GROFF_ARRAY_DELETE): Likewise. + (GROFF_CC_COMPILE_CHECK): Quote use of $2 and $3. + + * troff/env.cc (trie::~trie): Make virtual to shut up g++. + + * devps/psstrip.sed: Use different delimiter on last line (so that + it works with BSD 4.4 sed.) + +Mon Mar 29 17:07:14 1993 James Clark (jjc at jclark) + + * devps/psstrip.sed: Delete comments. + + * acgroff.m4 (AC_GETOPT): Don't test whether <unistd.h> declares + optind, opterr, optarg. + * lib.h: When UNISTD_H_DECLARES_GETOPT is defined, declare optind, + opterr, optarg. + +Sun Mar 28 17:44:25 1993 James Clark (jjc at jclark) + + * Makefile.in (check): Dummy target. + Wed Mar 3 04:53:38 1993 James Clark (jjc at jclark) * Version 1.07 released. @@ -1,4 +1,5 @@ -# Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. +# Generated automatically from Makefile.in by configure. +# Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. # Written by James Clark (jjc@jclark.com) # # This file is part of groff. @@ -17,9 +18,371 @@ # with groff; see the file COPYING. If not, write to the Free Software # Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# Define `page' to be letter if your PostScript printer uses 8.5x11 +# paper (USA) and define it to be A4, if it uses A4 paper (rest of the +# world). +PAGE=letter + +# Normally the Postscript driver, grops, produces output that conforms +# to version 3.0 of the Adobe Document Structuring Conventions. +# Unfortunately some spoolers and previewers can't handle such output. +# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to +# make its output acceptable to such programs. This variable controls +# only the default behaviour of grops; the behaviour can be changed at +# runtime by the grops -b option (and so by groff -P-b). +# Use a value of 0 if your spoolers and previewers are able to handle +# conforming PostScript correctly. +# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated; +# this is needed for early versions of TranScript that get confused by +# anything between the %%EndProlog line and the first %%Page: comment. +# Add 2 if lines in included files beginning with %! should be +# stripped out; this is needed for the OpenWindows 2.0 pageview previewer. +# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be +# stripped out of included files; this is needed for spoolers that +# don't understand the %%{Begin,End}Document comments. I suspect this +# includes early versions of TranScript. +# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0 +# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint +# with a printer that requires page reversal. +BROKEN_SPOOLER_FLAGS=7 + +# DEVICE is the default device. +DEVICE=ps + +# PSPRINT is the command to use for printing a PostScript file, +# for example `lpr'. +PSPRINT=lpr + +# DVIPRINT is the command to use for printing a TeX dvi file, +# for example `lpr -d'. +DVIPRINT=lpr -d + +# Prefix for names of programs that have Unix counterparts. +# For example, if `g' is `g' then troff will be installed as +# gtroff. This doesn't affect programs like grops or groff that have +# no Unix counterparts. Note that the groff versions of eqn and tbl +# will not work with Unix troff. This is also use in the definitions +# of tmac_s and tmac_m. +g=g + +# The groff ms macros will be available as -m$(tmac_s). +# If you use `tmac_s=s', you can use the Unix ms macros by using +# groff -ms -M/usr/lib/tmac. +tmac_s=$(g)s + +# Similarily, the groff mm macros will be available as -m$(tmac_m). +tmac_m=$(g)m + +# Common prefix for installation directories. +# Used in definitions of exec_prefix, datasubdir, fontpath, manroot. +# This must already exist when you do make install. +prefix=/usr/local + +exec_prefix=${prefix} + +# bindir says where to install executables. +bindir=$(exec_prefix)/bin + +# datasubdir says where to install data files +datadir=$(prefix)/lib +datasubdir=$(datadir)/groff + +# fontdir says where to install dev*/*. +fontdir=$(datasubdir)/font + +# fontpath says where to look for dev*/*. +fontpath=.:$(fontdir):$(prefix)/lib/font:/usr/lib/font + +# tmacdir says where to install macros. +tmacdir=$(datasubdir)/tmac + +# tmacpath says where to look for macro files. +tmacpath=.:$(tmacdir):/usr/lib/tmac + +# Extension to be used for refer index files. Index files are not +# shareable between different architectures, so you might want to use +# different suffixes for different architectures. Choose an extension +# that doesn't conflict with refer or any other indexing program. +indexext=.i + +# Directory containing the default index for refer. +indexdir=/usr/dict/papers + +# The filename (without suffix) of the default index for refer. +indexname=Ind + +# common_words_file is a file containing a list of common words. +# If your system provides /usr/lib/eign it will be copied onto this, +# otherwise the supplied eign file will be used. +common_words_file=$(datasubdir)/eign + +# manroot is the root of the man page directory tree. +manroot=$(prefix)/man + +# man1ext is the man section for user commands. +man1ext=1 +man1dir=$(manroot)/man$(man1ext) + +# man5ext is the man section for file formats. +man5ext=5 +man5dir=$(manroot)/man$(man5ext) + +# man7ext is the man section for macros. +man7ext=7 +man7dir=$(manroot)/man$(man7ext) + +# DEFINES should include the following: +# -DHAVE_MMAP if you have mmap() and <sys/mman.h> +# -DCFRONT_ANSI_BUG if you're using cfront 2.0 (or later?) with +# an ANSI C compiler +# -DCOOKIE_BUG if you're using gcc/g++ 2.[012] (you should +# upgrade to 2.3). +# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []' +# -DHAVE_SYS_SIGLIST if you have sys_siglist[] +# -DWCOREFLAG=0200 if the 0200 bit of the status returned by +# wait() indicates whether a core image was +# produced for a process that was terminated +# by a signal +# -DHAVE_UNISTD_H if you have <unistd.h> +# -DHAVE_CC_UNISTD_H if you have a C++ <unistd.h> +# -DHAVE_DIRENT_H if you have <dirent.h> +# -DHAVE_LIMITS_H if you have <limits.h> +# -DHAVE_CC_LIMITS_H if you have a C++ <limits.h> +# -DHAVE_SYS_DIR_H if you have <sys/dir.h> +# -DHAVE_STDLIB_H if you have <stdlib.h> +# -DHAVE_VFORK_H if you have <vfork.h> +# -Dvfork=fork if you don't have a working vfork() +# -DHAVE_RENAME if you have rename() +# -DHAVE_MKSTEMP if you have mkstemp() +# -DSTDLIB_H_DECLARES_GETOPT if your C++ <stdlib.h> declares getopt() +# -DUNISTD_H_DECLARES_GETOPT if your C++ <unistd.h> declares getopt() +# -DSTDLIB_H_DECLARES_PUTENV if your C++ <stdlib.h> declares putenv() +# -DTRADITIONAL_CPP if your C++ compiler uses a traditional +# (Reiser) preprocessor. +# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t * +# -DHAVE_STRUCT_EXCEPTION if <math.h> defines struct exception +# -DRETSIGTYPE=int if signal handlers return int not void +DEFINES= -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_CC_LIMITS_H=1 -DHAVE_CC_UNISTD_H=1 -DSTDLIB_H_DECLARES_GETOPT=1 -DUNISTD_H_DECLARES_GETOPT=1 -DSTDLIB_H_DECLARES_PUTENV=1 -DRETSIGTYPE=void -DHAVE_STRUCT_EXCEPTION=1 -DHAVE_MMAP=1 -DHAVE_RENAME=1 -DHAVE_MKSTEMP=1 + +# Include fmod.o, strtol.o, getcwd.o, strerror.o, putenv.o in LIBOBJS if +# your C library is missing the corresponding function. +LIBOBJS= + +# CCC is the compiler for C++ (.cc) files. +CCC=gcc +CC=gcc +# CCDEFINES are definitions for C++ compilations. +CCDEFINES=$(DEFINES) +# CDEFINES are definitions for C compilations. +CDEFINES=$(DEFINES) + +DEBUG= +OPTIMIZE=-O2 +CCFLAGS=$(DEBUG) $(OPTIMIZE) +CFLAGS=$(DEBUG) $(OPTIMIZE) +YACC=bison -y +YACCFLAGS=-v + +LIBS= +CCLIBS= +RANLIB=@: +INSTALL=/usr/ucb/install -c +INSTALL_PROGRAM=$(INSTALL) +INSTALL_DATA=$(INSTALL) -m 644 +LN_S=ln -s +AR=ar +ETAGS=etags +ETAGSFLAGS= +# Flag that tells etags to assume C++. +ETAGSCCFLAG=-C +# Full path to perl. +PERLPATH= +# Sed command with which to edit sh scripts. +SH_SCRIPT_SED_CMD= +srcdir = . +VPATH = . + +PURIFY=purify +GCCVERSION=2.3.3 +GCCPREFIX=/usr/local/lib/gcc-lib/sparc-sun-sunos4.1/$(GCCVERSION)/ +PURIFYCCFLAGS=-g++=yes -collector=$(GCCPREFIX)ld + +MDEFINES="PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ + "DEVICE=$(DEVICE)" "PSPRINT=$(PSPRINT)" "DVIPRINT=$(DVIPRINT)" \ + "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "bindir=$(bindir)" \ + "g=$(g)" "datadir=$(datadir)" "datasubdir=$(datasubdir)" \ + "fontdir=$(fontdir)" "fontpath=$(fontpath)" \ + "tmacdir=$(tmacdir)" "tmacpath=$(tmacpath)" \ + "indexext=$(indexext)" "indexdir=$(indexdir)" \ + "indexname=$(indexname)" "common_words_file=$(common_words_file)" \ + "manroot=$(manroot)" "man1ext=$(man1ext)" "man1dir=$(man1dir)" \ + "man5ext=$(man5ext)" "man5dir=$(man5dir)" \ + "man7ext=$(man7ext)" "man7dir=$(man7dir)" \ + "tmac_s=$(tmac_s)" "tmac_m=$(tmac_m)" \ + "CCC=$(CCC)" "CC=$(CC)" "CCDEFINES=$(CCDEFINES)" "CDEFINES=$(CDEFINES)" \ + "CCFLAGS=$(CCFLAGS)" "CFLAGS=$(CFLAGS)" \ + "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \ + "LIBS=$(LIBS)" "CCLIBS=$(CCLIBS)" "LIBOBJS=$(LIBOBJS)" \ + "RANLIB=$(RANLIB)" "AR=$(AR)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_DATA=$(INSTALL_DATA)" \ + "ETAGS=$(ETAGS)" "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGSCCFLAG=$(ETAGSCCFLAG)" \ + "PERLPATH=$(PERLPATH)" "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \ + "PURIFY=$(PURIFY)" "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" + SHELL=/bin/sh +INCDIRS=include +LIBDIRS=libgroff libdriver libbib +CCPROGDIRS=groff troff tbl pic eqn grops grotty grodvi tfmtodit \ + refer lookbib indxbib lkbib soelim addftinfo +CPROGDIRS=pfbtops psbb +PROGDIRS=$(CCPROGDIRS) $(CPROGDIRS) +DEVDIRS=devps devdvi devascii devlatin1 devX75 devX75-12 devX100 devX100-12 +OTHERDIRS=man tmac afmtodit grog nroff mm +ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(OTHERDIRS) +EXTRADIRS=devps/generate devdvi/generate xditview doc +DISTDIRS=$(ALLDIRS) $(EXTRADIRS) +TARGETS=all install install_bin install_data clean distclean mostlyclean \ + realclean extraclean distfiles TAGS depend uninstall_sub + +do=all +dodirs=$(ALLDIRS) dot +# Default target for subdir_Makefile +subdir=troff + + +$(TARGETS): + @$(MAKE) $(MDEFINES) do=$@ $(dodirs) + +dot: FORCE + @$(MAKE) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \ + -f $(srcdir)/Makefile.comm -f $(srcdir)/Makefile.sub $(do) + +$(LIBDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + echo Making $(do) in $@; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.lib -f $$srcdir/Makefile.dep $(do) + +$(CPROGDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + echo Making $(do) in $@; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.cpg -f $$srcdir/Makefile.dep $(do) + +$(CCPROGDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + echo Making $(do) in $@; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.ccpg -f $$srcdir/Makefile.dep $(do) + +$(DEVDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + echo Making $(do) in $@; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.dev $(do) + +$(INCDIRS) $(OTHERDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + echo Making $(do) in $@; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.man $(do) + +version=`cat $(srcdir)/VERSION` + +.PHONY: dist +dist: + -rm -fr tmp + mkdir tmp + for d in $(DISTDIRS); do \ + mkdir tmp/$$d; \ + done + srcdir=`cd $(srcdir); pwd`; \ + cd tmp; \ + $(LN_S) ../Makefile .; \ + $(LN_S) $$srcdir/* . 2>/dev/null || true; \ + for d in $(DISTDIRS); do \ + (cd $$d; $(LN_S) $$srcdir/$$d/* . 2>/dev/null || true); \ + done; \ + $(MAKE) srcdir=$$srcdir VPATH=$$srcdir extraclean; \ + for d in $(EXTRADIRS); do \ + (cd $$d; $(MAKE) extraclean); \ + done; \ + rm -f Makefile; \ + $(LN_S) $$srcdir/Makefile.init Makefile + mv tmp groff-$(version) + tar cfh - groff-$(version) | gzip -c >groff-$(version).tar.z + rm -fr groff-$(version) + +# $(PROGDIRS): libgroff +# grops grotty grodvi: libdriver +# refer lookbib indxbib lkbib: libbib +# $(LIBDIRS) $(PROGDIRS): include + +.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE + +subdir_Makefile: Makefile.cfg + $(MAKE) do=Makefile $(subdir) + +Makefile.cfg: Makefile + >Makefile.cfg + for var in $(MDEFINES); do \ + echo "$$var" >>Makefile.cfg; \ + done + +depend: srcdir_must_be_dot + +.PHONY: srcdir_must_be_dot +srcdir_must_be_dot: + @test "X$(srcdir)" = "X." \ + || (echo This target can only be made in the source directory; \ + exit 1) + +Makefile: Makefile.in + $(SHELL) config.status + +.PHONY: uninstall +uninstall: uninstall_sub uninstall_dirs + +.PHONY: uninstall_dirs +uninstall_dirs: +# Use rmdir here so that the directories are only removed if they're empty + -rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \ + $(tmacdir) $(fontdir) $(bindir) $(datasubdir) $(datadir) + + +.PHONY: check +check: + +FORCE: -.PHONY: all -all: - $(SHELL) configure - $(MAKE) all +.NOEXPORT: diff --git a/Makefile.ccpg b/Makefile.ccpg index 62b631700..20e888add 100644 --- a/Makefile.ccpg +++ b/Makefile.ccpg @@ -18,3 +18,9 @@ distfiles: $(YTABC) TAGS: TAGS_src TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS) Makefile: $(MAKEFILEPARTS) + +pure: $(PROG).pure + +$(PROG).pure: $(OBJS) $(XLIBS) + $(PURIFY) $(PURIFYCCFLAGS) \ + $(LINK.cc) -o $@ $(OBJS) $(XLIBS) $(CCLIBS) $(LIBS) $(MLIB) diff --git a/Makefile.comm b/Makefile.comm index 56c620128..cacc894f5 100644 --- a/Makefile.comm +++ b/Makefile.comm @@ -54,10 +54,12 @@ all install install_bin install_data TAGS depend distfiles uninstall_sub: install: install_bin install_data uninstall: uninstall_sub +pure: .PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles .PHONY: install install_bin install_data .PHONY: uninstall uninstall_sub +.PHONY: pure mostlyclean: -rm -f $(MOSTLYCLEANFILES) diff --git a/Makefile.in b/Makefile.in index 07df2713f..d5ccb9abb 100644 --- a/Makefile.in +++ b/Makefile.in @@ -40,6 +40,9 @@ PAGE=@PAGE@ # stripped out of included files; this is needed for spoolers that # don't understand the %%{Begin,End}Document comments. I suspect this # includes early versions of TranScript. +# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0 +# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint +# with a printer that requires page reversal. BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@ # DEVICE is the default device. @@ -172,9 +175,10 @@ CCDEFINES=$(DEFINES) # CDEFINES are definitions for C compilations. CDEFINES=$(DEFINES) -DEBUG=-g -CCFLAGS=$(DEBUG) -CFLAGS=$(DEBUG) +DEBUG= +OPTIMIZE=-O +CCFLAGS=$(DEBUG) $(OPTIMIZE) +CFLAGS=$(DEBUG) $(OPTIMIZE) YACC=@YACC@ YACCFLAGS=-v @@ -192,10 +196,16 @@ ETAGSFLAGS= ETAGSCCFLAG=@ETAGSCCFLAG@ # Full path to perl. PERLPATH=@PERLPATH@ - +# Sed command with which to edit sh scripts. +SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@ srcdir = @srcdir@ VPATH = @srcdir@ +PURIFY=purify +GCCVERSION=2.3.3 +GCCPREFIX=/usr/local/lib/gcc-lib/sparc-sun-sunos4.1/$(GCCVERSION)/ +PURIFYCCFLAGS=-g++=yes -collector=$(GCCPREFIX)ld + MDEFINES="PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ "DEVICE=$(DEVICE)" "PSPRINT=$(PSPRINT)" "DVIPRINT=$(DVIPRINT)" \ "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "bindir=$(bindir)" \ @@ -215,7 +225,8 @@ MDEFINES="PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ "RANLIB=$(RANLIB)" "AR=$(AR)" \ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_DATA=$(INSTALL_DATA)" \ "ETAGS=$(ETAGS)" "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGSCCFLAG=$(ETAGSCCFLAG)" \ - "PERLPATH=$(PERLPATH)" + "PERLPATH=$(PERLPATH)" "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \ + "PURIFY=$(PURIFY)" "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" SHELL=/bin/sh INCDIRS=include @@ -317,9 +328,9 @@ dist: srcdir=`cd $(srcdir); pwd`; \ cd tmp; \ $(LN_S) ../Makefile .; \ - $(LN_S) $$srcdir/* . 2>/dev/null; \ + $(LN_S) $$srcdir/* . 2>/dev/null || true; \ for d in $(DISTDIRS); do \ - (cd $$d; $(LN_S) $$srcdir/$$d/* . 2>/dev/null); \ + (cd $$d; $(LN_S) $$srcdir/$$d/* . 2>/dev/null || true); \ done; \ $(MAKE) srcdir=$$srcdir VPATH=$$srcdir extraclean; \ for d in $(EXTRADIRS); do \ @@ -367,6 +378,10 @@ uninstall_dirs: -rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \ $(tmacdir) $(fontdir) $(bindir) $(datasubdir) $(datadir) + +.PHONY: check +check: + FORCE: .NOEXPORT: @@ -1,6 +1,22 @@ This file describes recent user-visible changes in groff. Bug fixes are not described. There are more details in the man pages. +VERSION 1.08 +============ + +Troff +----- + +The escape sequence \V[xxx] will interpolate the value of the +environment variable xxx. + +Tbl +--- + +The decimalpoint option can be used to specify the character to be +recognized as the decimal point character in place of the default +period. + VERSION 1.07 ============ @@ -2,6 +2,30 @@ This file describes various problems that have been encountered in compiling, installing and running groff. Suggestions for additions or other improvements to this file are welcome. +* gcc 2.3.3 fails to compile pic/object.cc. + +Apply the following patch: + +Thu Apr 1 12:06:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * cp-init.c (expand_default_init): Don't clear DECL_REGISTER. + +*** cp-init.c.~2~ Mon Mar 29 21:48:36 1993 +--- cp-init.c Thu Apr 1 12:00:33 1993 +*************** expand_default_init (binfo, true_exp, ex +*** 1141,1149 **** + } + +- /* ARM $7.1.1: "[register] may be ignored and in most implementations +- it will be ignored if the address of the variable is taken." +- Since we're likely to do just that in the ctor call, clear this. */ +- DECL_REGISTER (exp) = 0; +- + rval = build_method_call (exp, constructor_name (type), + parms, binfo, flags|xxref_init_possible); +--- 1141,1144 ---- + + * On a DECstation or other machine using a MIPS cpu, gcc/g++ 2.2.2 gets a fatal signal while compiling tbl/main.c and tbl/table.c. @@ -35,21 +59,9 @@ directory and include that directory with a -I option. * I get errors when I try to compile groff with DEC C++. -Rebuild the bison-generated parsers (pic/pic.cc, eqn/eqn.cc, -refer/label.cc) using DEC yacc. Fix the declaration of write() in -<unistd.h> so that the second argument is a const char *. Fix the -declaration of open() in <sys/file.h> so that the first argument is a -const char *. - -* I get errors compiling the files eqn/eqn.cc, pic/pic.cc, -refer/label.cc. I'm not using gcc or g++ as my C++ compiler. - -These files are generated by bison. One possible problem is that -they're not including <alloca.h> when they need to. Try adding -#include <alloca.h>. Alternatively you could try regenerating the -parsers using your system's version of yacc. To do this, rename these -files to something, change the definition of YACC in the top-level -Makefile and rebuild. +Fix the declaration of write() in <unistd.h> so that the second +argument is a const char *. Fix the declaration of open() in +<sys/file.h> so that the first argument is a const char *. * On Ultrix, the make stops with the message @@ -61,6 +73,40 @@ for no apparent reason. Use GNU make. +* I'm having problems compiling groff on 386BSD 0.1. + +If you're using ash as /bin/sh, you'll need the following patch. + +*** gendef.sh.org Sun Jun 30 13:30:36 1991 +--- gendef.sh Sun Feb 28 10:23:49 1993 +*************** +*** 3,9 **** + file=$1 + shift + +! defs="#define $1" + shift + for def + do +--- 3,10 ---- + file=$1 + shift + +! x=$1 +! defs="#define $x" + shift + for def + do + +You'll also need to change dirnamemax.c so that it doesn't use +pathconf(). + +* While compiling on Xenix, ranlib libgroff.a fails. + +The system ranlib can't handle externals longer than 40 characters. +Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1 +instead. + * Groff can't handle my troff document. It works fine with AT&T troff. Read the section on incompatibilities in gtroff(1). Try using the -C @@ -276,6 +322,92 @@ Frank Wortner): Another possible solution is to install tmac/man.ultrix as /usr/local/lib/groff/tmac/man.local. +* I'm having problems formatting HP-UX 9.0 man pages with groff -man. + +Rename /usr/local/lib/groff/tmac/tmac.an to (for example) +/usr/local/lib/groff/tmac/tmac.gan, copy HP's tmac.an into +/usr/local/lib/groff/tmac/tmac.an, and either put `.cp 1' at the +beginning or filter it (and any files it .so's) through +tmac/fixmacros.sed. + +* I'm having problems formatting man pages produced by the perl +wrapman script. + +Some versions of wrapman have a superfluous blank line before the .TH +line. This must be deleted. Then either use groff -C, or apply the +following patch: + +*** wrapman.~2~ Sun Jan 19 12:10:24 1992 +--- wrapman Fri Apr 2 12:12:57 1993 +*************** +*** 35,41 **** + $line1 .= <IN> if $line1 =~ /eval/; + $line1 .= <IN> if $line1 =~ /argv/; + $line2 = <IN>; +! next if $line2 eq "'di';\n"; + + # Pull the old switcheroo. + +--- 35,41 ---- + $line1 .= <IN> if $line1 =~ /eval/; + $line1 .= <IN> if $line1 =~ /argv/; + $line2 = <IN>; +! next if $line2 eq "'di ';\n"; + + # Pull the old switcheroo. + +*************** +*** 49,56 **** + + print OUT $line1; + print OUT <<EOF; +! 'di'; +! 'ig00'; + # + # $header + # +--- 49,57 ---- + + print OUT $line1; + print OUT <<EOF; +! 'di '; +! 'ds 00 \\"'; +! 'ig 00 '; + # + # $header + # +*************** +*** 72,85 **** + + # These next few lines are legal in both Perl and nroff. + +! $null.00; # finish .ig + + 'di \\" finish diversion--previous line must be blank + .nr nl 0-1 \\" fake up transition to first page again + .nr % 0 \\" start at page 1 +! '; __END__ ##### From here on it's a standard manual page ##### + .TH $PROG 1 "$month $mday, 19$year" +- .AT 3 + .SH NAME + $prog \\- whatever + .SH SYNOPSIS +--- 73,85 ---- + + # These next few lines are legal in both Perl and nroff. + +! $null.00 ; # finish .ig + + 'di \\" finish diversion--previous line must be blank + .nr nl 0-1 \\" fake up transition to first page again + .nr % 0 \\" start at page 1 +! .\\"'; __END__ ##### From here on it's a standard manual page ##### + .TH $PROG 1 "$month $mday, 19$year" + .SH NAME + $prog \\- whatever + .SH SYNOPSIS + + * When I preview documents using -TX75 or -TX100, the layout is not the same as when I print the document with -Tps: the line and page breaks come in different places. @@ -324,31 +456,3 @@ and recompile groff: exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0); else exprstmt = 0; - -* I'm having problems compiling groff on 386BSD 0.1. - -If you're using ash as /bin/sh, you'll need the following patch. - -*** gendef.sh.org Sun Jun 30 13:30:36 1991 ---- gendef.sh Sun Feb 28 10:23:49 1993 -*************** -*** 3,9 **** - file=$1 - shift - -! defs="#define $1" - shift - for def - do ---- 3,10 ---- - file=$1 - shift - -! x=$1 -! defs="#define $x" - shift - for def - do - -You'll also need to change dirnamemax.c so that it doesn't use -pathconf(). @@ -1 +1 @@ -1.07 +1.08 diff --git a/acgroff.m4 b/acgroff.m4 index caa05c4a1..057b5a3a2 100644 --- a/acgroff.m4 +++ b/acgroff.m4 @@ -20,7 +20,8 @@ dnl define(GROFF_EXIT,[rm -f conftest* core; exit 1])dnl define(GROFF_PREFIX,[AC_PROVIDE([$0])AC_PREFIX(grops)AC_PREFIX(gcc)])dnl define(GROFF_PROG_CCC, -[AC_PROVIDE([$0])cc_compile='$CCC conftest.cc -o conftest $CCLIBS $LIBS >/dev/null 2>&1' +[AC_PROVIDE([$0])AC_REQUIRE([AC_PROG_CC])dnl +cc_compile='$CCC conftest.cc -o conftest $CCLIBS $LIBS >/dev/null 2>&1' AC_SUBST(CCLIBS) if test -z "$CCC"; then # See whether the C compiler is also a C++ compiler. @@ -84,15 +85,13 @@ I was unable to compile and link a simple C++ program that used a function declared in <stdio.h>. If you're using gcc/g++, you should install libg++. EOF -GROFF_EXIT]) -if test "$CCC" = gcc; then CCC="gcc -O"; fi -if test "$CCC" = "g++"; then CCC="g++ -O"; fi])dnl +GROFF_EXIT])])dnl define(GROFF_CC_COMPILE_CHECK, [AC_PROVIDE([$0])AC_REQUIRE([GROFF_PROG_CCC])echo checking for $1 cat <<EOF >conftest.cc -$2 +[$2] extern "C" { void exit(int); } -int main() { exit(0); } void t() { $3 } +int main() { exit(0); } void t() { [$3] } EOF dnl Don't try to run the program, which would prevent cross-configuring. if eval $cc_compile; then @@ -203,7 +202,7 @@ AC_DEFINE(HAVE_MMAP))])dnl dnl; define(GROFF_SYS_SIGLIST, [AC_COMPILE_CHECK([sys_siglist],,changequote(,)dnl -[extern char *sys_siglist[]; sys_siglist[0] = 0;],changequote([,])dnl +extern char *sys_siglist[]; sys_siglist[0] = 0;,changequote([,])dnl AC_DEFINE(HAVE_SYS_SIGLIST))])dnl dnl define(GROFF_STRUCT_EXCEPTION, @@ -272,8 +271,8 @@ dnl define(GROFF_ARRAY_DELETE, [GROFF_CC_COMPILE_CHECK(new array delete syntax,, changequote(,)dnl -[char *p = new char[5]; delete [] p;] -changequote([,]),,AC_DEFINE(ARRAY_DELETE_NEEDS_SIZE))])dnl +char *p = new char[5]; delete [] p;changequote([,]), +,AC_DEFINE(ARRAY_DELETE_NEEDS_SIZE))])dnl dnl define(GROFF_BROKEN_SPOOLER_FLAGS, [test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 @@ -321,7 +320,7 @@ AC_DEFINE(STDLIB_H_DECLARES_GETOPT)) GROFF_CC_COMPILE_CHECK([declaration of getopt in unistd.h], [#include <sys/types.h> #include <unistd.h>], -[int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1;], +[int opt = getopt(0, 0, 0);], AC_DEFINE(UNISTD_H_DECLARES_GETOPT)) ])dnl define(GROFF_PUTENV, @@ -354,4 +353,28 @@ define(GROFF_TIME_T, AC_DEFINE(LONG_FOR_TIME_T))])dnl define(GROFF_UNISTD_H, [GROFF_CC_COMPILE_CHECK(['C++ <unistd.h>'],[#include <unistd.h>], +dnl Bison generated parsers have problems with C++ compilers other than g++. +dnl So byacc is preferred over bison. [read(0, 0, 0);],AC_DEFINE(HAVE_CC_UNISTD_H))])dnl +define(GROFF_PROG_YACC, +[AC_PROGRAM_CHECK(YACC, byacc, byacc, ) +AC_PROGRAM_CHECK(YACC, bison, bison -y, yacc) +])dnl +dnl GROFF_CSH_HACK(if hack present, if not present) +define(GROFF_CSH_HACK, +[echo 'checking for csh # hack' +cat <<EOF >conftest.sh +#!/bin/sh +true || exit 0 +export PATH || exit 0 +exit 1 +EOF +chmod +x conftest.sh +if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1 +then + :; $1 +else + :; $2 +fi +rm -f conftest.sh +])dnl diff --git a/config.status b/config.status new file mode 100755 index 000000000..7d58b2dd0 --- /dev/null +++ b/config.status @@ -0,0 +1,88 @@ +#!/bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host flipper: +# +# ./configure + +for arg +do + case "$arg" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + exec /bin/sh ./configure ;; + *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;; + esac +done + +trap 'rm -f Makefile; exit 1' 1 3 15 +CC='gcc' +CCLIBS='' +CCC='gcc' +LPR='lpr' +LP='lp' +LPQ='lpq' +PSPRINT='lpr' +DVIPRINT='lpr -d' +PERLPATH='' +YACC='bison -y' +RANLIB='@:' +INSTALL='/usr/ucb/install -c' +INSTALL_PROGRAM='$(INSTALL)' +INSTALL_DATA='$(INSTALL) -m 644' +LN_S='ln -s' +ETAGSCCFLAG='-C' +SH_SCRIPT_SED_CMD='' +CPP='${CC-cc} -E' +LIBOBJS='' +BROKEN_SPOOLER_FLAGS='7' +PAGE='letter' +LIBS='' +srcdir='.' +DEFS=' -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STDLIB_H=1 -DHAVE_CC_LIMITS_H=1 -DHAVE_CC_UNISTD_H=1 -DSTDLIB_H_DECLARES_GETOPT=1 -DUNISTD_H_DECLARES_GETOPT=1 -DSTDLIB_H_DECLARES_PUTENV=1 -DRETSIGTYPE=void -DHAVE_STRUCT_EXCEPTION=1 -DHAVE_MMAP=1 -DHAVE_RENAME=1 -DHAVE_MKSTEMP=1' +prefix='/opt/gnu' +exec_prefix='${prefix}' +prsub='s%^prefix\([ ]*\)=\([ ]*\).*$%prefix\1=\2/opt/gnu% +s%^exec_prefix\([ ]*\)=\([ ]*\).*$%exec_prefix\1=\2${prefix}%' + +top_srcdir=$srcdir +for file in .. Makefile; do if [ "x$file" != "x.." ]; then + srcdir=$top_srcdir + # Remove last slash and all that follows it. Not all systems have dirname. + dir=`echo $file|sed 's%/[^/][^/]*$%%'` + if test "$dir" != "$file"; then + test "$top_srcdir" != . && srcdir=$top_srcdir/$dir + test ! -d $dir && mkdir $dir + fi + echo creating $file + rm -f $file + echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file + sed -e " +$prsub +s%@CC@%$CC%g +s%@CCLIBS@%$CCLIBS%g +s%@CCC@%$CCC%g +s%@LPR@%$LPR%g +s%@LP@%$LP%g +s%@LPQ@%$LPQ%g +s%@PSPRINT@%$PSPRINT%g +s%@DVIPRINT@%$DVIPRINT%g +s%@PERLPATH@%$PERLPATH%g +s%@YACC@%$YACC%g +s%@RANLIB@%$RANLIB%g +s%@INSTALL@%$INSTALL%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@LN_S@%$LN_S%g +s%@ETAGSCCFLAG@%$ETAGSCCFLAG%g +s%@SH_SCRIPT_SED_CMD@%$SH_SCRIPT_SED_CMD%g +s%@CPP@%$CPP%g +s%@LIBOBJS@%$LIBOBJS%g +s%@BROKEN_SPOOLER_FLAGS@%$BROKEN_SPOOLER_FLAGS%g +s%@PAGE@%$PAGE%g +s%@LIBS@%$LIBS%g +s%@srcdir@%$srcdir%g +s%@DEFS@%$DEFS% +" $top_srcdir/${file}.in >> $file +fi; done + @@ -297,8 +297,6 @@ EOF rm -f conftest* core; exit 1 fi rm -f conftest* -if test "$CCC" = gcc; then CCC="gcc -O"; fi -if test "$CCC" = "g++"; then CCC="g++ -O"; fi if test -z "$PSPRINT" then for p in lpr @@ -398,12 +396,12 @@ done IFS="$saveifs" if test -z "$YACC"; then - echo checking for bison + echo checking for byacc saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. - if test -f $dir/bison; then - YACC="bison -y" + if test -f $dir/byacc; then + YACC="byacc" break fi done @@ -412,12 +410,12 @@ fi test -z "$YACC" && YACC="" if test -z "$YACC"; then - echo checking for byacc + echo checking for bison saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. - if test -f $dir/byacc; then - YACC="byacc" + if test -f $dir/bison; then + YACC="bison -y" break fi done @@ -492,6 +490,23 @@ do rm -f conftest.c done +echo 'checking for csh # hack' +cat <<EOF >conftest.sh +#!/bin/sh +true || exit 0 +export PATH || exit 0 +exit 1 +EOF +chmod +x conftest.sh +if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1 +then + :; SH_SCRIPT_SED_CMD='1s/.*/:/' +else + :; SH_SCRIPT_SED_CMD='' +fi +rm -f conftest.sh + + echo checking for unistd.h echo checking how to run the C preprocessor if test -z "$CPP"; then @@ -566,7 +581,7 @@ cat <<EOF >conftest.cc #include <sys/types.h> #include <unistd.h> extern "C" { void exit(int); } -int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1; } +int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); } EOF if eval $cc_compile; then DEFS="$DEFS -DUNISTD_H_DECLARES_GETOPT=1" @@ -637,6 +652,16 @@ if eval $compile; then fi rm -f conftest* +echo checking for pid_t in sys/types.h +echo '#include <sys/types.h>' > conftest.c +eval "$CPP $DEFS conftest.c > conftest.out 2>&1" +if egrep "pid_t" conftest.out >/dev/null 2>&1; then + : +else + DEFS="$DEFS -Dpid_t=int" +fi +rm -f conftest* + echo checking for vfork.h cat > conftest.c <<EOF #include <vfork.h> @@ -771,7 +796,7 @@ echo checking for sys_siglist cat > conftest.c <<EOF main() { exit(0); } -t() { [extern char *sys_siglist[]; sys_siglist[0] = 0;] } +t() { extern char *sys_siglist[]; sys_siglist[0] = 0; } EOF if eval $compile; then DEFS="$DEFS -DHAVE_SYS_SIGLIST=1" @@ -853,8 +878,7 @@ echo checking for new array delete syntax cat <<EOF >conftest.cc extern "C" { void exit(int); } -int main() { exit(0); } void t() { char *p = new char[5]; delete [] p; - } +int main() { exit(0); } void t() { char *p = new char[5]; delete [] p; } EOF if eval $cc_compile; then : @@ -980,6 +1004,7 @@ INSTALL_PROGRAM='$INSTALL_PROGRAM' INSTALL_DATA='$INSTALL_DATA' LN_S='$LN_S' ETAGSCCFLAG='$ETAGSCCFLAG' +SH_SCRIPT_SED_CMD='$SH_SCRIPT_SED_CMD' CPP='$CPP' LIBOBJS='$LIBOBJS' BROKEN_SPOOLER_FLAGS='$BROKEN_SPOOLER_FLAGS' @@ -1023,6 +1048,7 @@ s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_DATA@%$INSTALL_DATA%g s%@LN_S@%$LN_S%g s%@ETAGSCCFLAG@%$ETAGSCCFLAG%g +s%@SH_SCRIPT_SED_CMD@%$SH_SCRIPT_SED_CMD%g s%@CPP@%$CPP%g s%@LIBOBJS@%$LIBOBJS%g s%@BROKEN_SPOOLER_FLAGS@%$BROKEN_SPOOLER_FLAGS%g diff --git a/configure.in b/configure.in index f20424e3a..bd20d8f21 100644 --- a/configure.in +++ b/configure.in @@ -7,11 +7,13 @@ AC_PROG_CC GROFF_PROG_CCC GROFF_PRINT GROFF_PERL_PATH -AC_PROG_YACC +GROFF_PROG_YACC AC_PROG_RANLIB AC_PROG_INSTALL AC_LN_S GROFF_ETAGSCCFLAG +GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='') +AC_SUBST(SH_SCRIPT_SED_CMD) dnl checks for headers AC_UNISTD_H AC_HAVE_HEADERS(dirent.h limits.h sys/dir.h stdlib.h) diff --git a/devps/psstrip.sed b/devps/psstrip.sed index ad6ea890a..8c9e90cb6 100644 --- a/devps/psstrip.sed +++ b/devps/psstrip.sed @@ -1,8 +1,6 @@ -#!/bin/sed -f -# Strip a PostScript prologue of unnecessary comments and white space. /^%[%!]/b s/^[ ][ ]*// s/[ ][ ]*$// s/%.*// /^$/d -s/[ ]*\([][}{/]\)[ ]*/\1/g +s|[ ]*\([][}{/]\)[ ]*|\1|g diff --git a/eqn/Makefile.sub b/eqn/Makefile.sub index e8ec550e0..692bf42e4 100644 --- a/eqn/Makefile.sub +++ b/eqn/Makefile.sub @@ -16,7 +16,8 @@ all: neqn neqn: neqn.sh -rm -f neqn - sed -e 's/@g@/$(g)/g' $(srcdir)/neqn.sh >neqn + sed -e 's/@g@/$(g)/g' -e "$(SH_SCRIPT_SED_CMD)" $(srcdir)/neqn.sh >neqn + chmod +x neqn install_data: neqn -rm -f $(bindir)/$(NAMEPREFIX)neqn diff --git a/eqn/box.cc b/eqn/box.cc index 66157f4b9..08dbe0797 100644 --- a/eqn/box.cc +++ b/eqn/box.cc @@ -321,7 +321,7 @@ void box::top_level() "\\s'\\\\n[" SAVED_INLINE_PREV_SIZE_REG "]u'" "\\s'\\\\n[" SAVED_INLINE_SIZE_REG "]u'" "\n"); - printf(".as " LINE_STRING " \\E*[" SAVE_FONT_STRING "]"); + printf(".as " LINE_STRING " \\&\\E*[" SAVE_FONT_STRING "]"); printf("\\f[%s]", get_gfont()); printf("\\s'\\En[" SAVED_SIZE_REG "]u'"); current_roman_font = get_grfont(); diff --git a/eqn/eqn.cc b/eqn/eqn.cc index 56dadf674..744a7555a 100644 --- a/eqn/eqn.cc +++ b/eqn/eqn.cc @@ -1,69 +1,8 @@ - -/* A Bison parser, made from eqn.y */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define OVER 258 -#define SMALLOVER 259 -#define SQRT 260 -#define SUB 261 -#define SUP 262 -#define LPILE 263 -#define RPILE 264 -#define CPILE 265 -#define PILE 266 -#define LEFT 267 -#define RIGHT 268 -#define TO 269 -#define FROM 270 -#define SIZE 271 -#define FONT 272 -#define ROMAN 273 -#define BOLD 274 -#define ITALIC 275 -#define FAT 276 -#define ACCENT 277 -#define BAR 278 -#define UNDER 279 -#define ABOVE 280 -#define TEXT 281 -#define QUOTED_TEXT 282 -#define FWD 283 -#define BACK 284 -#define DOWN 285 -#define UP 286 -#define MATRIX 287 -#define COL 288 -#define LCOL 289 -#define RCOL 290 -#define CCOL 291 -#define MARK 292 -#define LINEUP 293 -#define TYPE 294 -#define VCENTER 295 -#define PRIME 296 -#define SPLIT 297 -#define NOSPLIT 298 -#define UACCENT 299 -#define SPECIAL 300 -#define SPACE 301 -#define GFONT 302 -#define GSIZE 303 -#define DEFINE 304 -#define NDEFINE 305 -#define TDEFINE 306 -#define SDEFINE 307 -#define UNDEF 308 -#define IFDEF 309 -#define INCLUDE 310 -#define DELIM 311 -#define CHARTYPE 312 -#define SET 313 -#define GRFONT 314 -#define GBFONT 315 - -#line 19 "eqn.y" - +#ifndef lint +static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90"; +#endif +#define YYBYACC 1 +#line 20 "/u/jjc/groff/eqn/eqn.y" #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -72,11 +11,9 @@ #include "box.h" extern int non_empty_flag; char *strsave(const char *); -#define YYDEBUG 1 int yylex(); void yyerror(const char *); - -#line 33 "eqn.y" +#line 32 "/u/jjc/groff/eqn/eqn.y" typedef union { char *str; box *b; @@ -85,1230 +22,1141 @@ typedef union { int n; column *col; } YYSTYPE; - -#ifndef YYLTYPE -typedef - struct yyltype - { - int timestamp; - int first_line; - int first_column; - int last_line; - int last_column; - char *text; - } - yyltype; - -#define YYLTYPE yyltype -#endif - -#include <stdio.h> - -#ifndef __STDC__ -#define const -#endif - - - -#define YYFINAL 142 -#define YYFLAG -32768 -#define YYNTBASE 66 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 315 ? yytranslate[x] : 83) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 63, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 61, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 64, 2, 65, 62, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60 +#line 26 "y.tab.c" +#define OVER 257 +#define SMALLOVER 258 +#define SQRT 259 +#define SUB 260 +#define SUP 261 +#define LPILE 262 +#define RPILE 263 +#define CPILE 264 +#define PILE 265 +#define LEFT 266 +#define RIGHT 267 +#define TO 268 +#define FROM 269 +#define SIZE 270 +#define FONT 271 +#define ROMAN 272 +#define BOLD 273 +#define ITALIC 274 +#define FAT 275 +#define ACCENT 276 +#define BAR 277 +#define UNDER 278 +#define ABOVE 279 +#define TEXT 280 +#define QUOTED_TEXT 281 +#define FWD 282 +#define BACK 283 +#define DOWN 284 +#define UP 285 +#define MATRIX 286 +#define COL 287 +#define LCOL 288 +#define RCOL 289 +#define CCOL 290 +#define MARK 291 +#define LINEUP 292 +#define TYPE 293 +#define VCENTER 294 +#define PRIME 295 +#define SPLIT 296 +#define NOSPLIT 297 +#define UACCENT 298 +#define SPECIAL 299 +#define SPACE 300 +#define GFONT 301 +#define GSIZE 302 +#define DEFINE 303 +#define NDEFINE 304 +#define TDEFINE 305 +#define SDEFINE 306 +#define UNDEF 307 +#define IFDEF 308 +#define INCLUDE 309 +#define DELIM 310 +#define CHARTYPE 311 +#define SET 312 +#define GRFONT 313 +#define GBFONT 314 +#define YYERRCODE 256 +short yylhs[] = { -1, + 0, 0, 6, 6, 1, 1, 1, 2, 2, 2, + 2, 2, 3, 3, 3, 3, 4, 4, 7, 7, + 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 8, 11, 11, 12, 12, 13, + 13, 16, 16, 15, 15, 14, 14, 14, 14, 9, + 9, 10, 10, 10, }; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 1, 3, 5, 8, 10, 13, 16, 18, 22, - 26, 32, 38, 40, 43, 47, 51, 53, 57, 59, - 63, 69, 71, 73, 76, 79, 81, 83, 85, 89, - 92, 95, 98, 101, 106, 112, 116, 119, 122, 125, - 129, 133, 136, 139, 142, 145, 149, 153, 157, 161, - 165, 169, 173, 176, 180, 182, 184, 188, 192, 197, - 199, 202, 204, 208, 212, 217, 220, 223, 226, 229, - 231, 233, 235, 237 +short yylen[] = { 2, + 0, 1, 1, 2, 1, 2, 2, 1, 3, 3, + 5, 5, 1, 2, 3, 3, 1, 3, 1, 3, + 5, 1, 1, 2, 2, 1, 1, 1, 3, 2, + 2, 2, 2, 4, 5, 3, 2, 2, 2, 3, + 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 3, 3, 2, 3, 1, 1, 3, 3, 4, 1, + 2, 1, 3, 3, 4, 2, 2, 2, 2, 1, + 1, 1, 1, 1, }; - -#endif - -static const short yyrhs[] = { -1, - 67, 0, 68, 0, 67, 68, 0, 69, 0, 37, - 68, 0, 38, 68, 0, 70, 0, 70, 14, 69, - 0, 70, 15, 70, 0, 70, 15, 70, 14, 69, - 0, 70, 15, 70, 15, 69, 0, 71, 0, 5, - 70, 0, 70, 3, 70, 0, 70, 4, 70, 0, - 72, 0, 73, 7, 71, 0, 73, 0, 73, 6, - 72, 0, 73, 6, 73, 7, 71, 0, 26, 0, - 27, 0, 42, 27, 0, 43, 26, 0, 61, 0, - 62, 0, 63, 0, 64, 67, 65, 0, 11, 76, - 0, 8, 76, 0, 9, 76, 0, 10, 76, 0, - 32, 64, 77, 65, 0, 12, 82, 67, 13, 82, - 0, 12, 82, 67, 0, 73, 23, 0, 73, 24, - 0, 73, 41, 0, 73, 22, 73, 0, 73, 44, - 73, 0, 18, 73, 0, 19, 73, 0, 20, 73, - 0, 21, 73, 0, 17, 81, 73, 0, 16, 81, - 73, 0, 28, 74, 73, 0, 29, 74, 73, 0, - 31, 74, 73, 0, 30, 74, 73, 0, 39, 81, - 73, 0, 40, 73, 0, 45, 81, 73, 0, 81, - 0, 67, 0, 75, 25, 67, 0, 64, 75, 65, - 0, 74, 64, 75, 65, 0, 80, 0, 77, 80, - 0, 67, 0, 78, 25, 67, 0, 64, 78, 65, - 0, 74, 64, 78, 65, 0, 33, 79, 0, 34, - 79, 0, 35, 79, 0, 36, 79, 0, 26, 0, - 27, 0, 81, 0, 64, 0, 65, 0 +short yydefred[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 27, 28, 0, + 0, 3, 5, 0, 13, 0, 0, 17, 14, 70, + 71, 0, 0, 55, 31, 32, 33, 30, 73, 74, + 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 7, 0, 0, 24, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, + 39, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, + 0, 29, 15, 16, 9, 0, 0, 20, 18, 40, + 41, 0, 58, 0, 0, 0, 0, 66, 67, 68, + 69, 34, 61, 0, 0, 0, 0, 59, 35, 0, + 0, 0, 11, 12, 21, 0, 64, 0, 0, 65, }; - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 124, 126, 130, 133, 143, 146, 148, 152, 155, 157, - 159, 161, 165, 168, 170, 172, 176, 179, 183, 186, - 188, 192, 195, 197, 199, 201, 203, 205, 207, 209, - 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, - 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, - 251, 253, 255, 257, 261, 271, 274, 278, 281, 285, - 288, 292, 295, 299, 302, 306, 309, 311, 313, 317, - 319, 323, 326, 328 +short yydgoto[] = { 31, + 32, 33, 34, 35, 36, 84, 38, 43, 44, 52, + 85, 45, 98, 99, 118, 131, }; - -static const char * const yytname[] = { "$","error","$illegal.","OVER","SMALLOVER", -"SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT","TO","FROM", -"SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER","ABOVE","TEXT", -"QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL","RCOL","CCOL","MARK", -"LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT","UACCENT","SPECIAL","SPACE", -"GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE","SDEFINE","UNDEF","IFDEF","INCLUDE", -"DELIM","CHARTYPE","SET","GRFONT","GBFONT","'^'","'~'","'\\t'","'{'","'}'","top", -"equation","mark","from_to","sqrt_over","script","nonsup","simple","number", -"pile_element_list","pile_arg","column_list","column_element_list","column_arg", -"column","text","delim","" +short yysindex[] = { 1488, + 1527, -120, -120, -120, -120, -123, -249, -249, 1566, 1566, + 1566, 1566, 0, 0, -249, -249, -249, -249, -115, 1488, + 1488, -249, 1566, -256, -251, -249, 0, 0, 0, 1488, + 0, 0, 0, -221, 0, -233, 1488, 0, 0, 0, + 0, 1488, -85, 0, 0, 0, 0, 0, 0, 0, + 0, 1488, 1566, 1566, -195, -195, -195, -195, 1566, 1566, + 1566, 1566, -272, 0, 0, 1566, -195, 0, 0, 1566, + 1402, 1527, 1527, 1527, 1527, 1566, 1566, 1566, 0, 0, + 0, 1566, 0, 1488, -113, 1488, 1444, -195, -195, -195, + -195, -195, -195, -117, -117, -117, -117, -118, 0, -195, + -195, 0, 0, 0, 0, -167, -189, 0, 0, 0, + 0, 1488, 0, -106, -123, 1488, -83, 0, 0, 0, + 0, 0, 0, 1527, 1527, 1566, 1488, 0, 0, 1488, + -105, 1488, 0, 0, 0, 1488, 0, -104, 1488, 0, }; -#endif - -static const short yyr1[] = { 0, - 66, 66, 67, 67, 68, 68, 68, 69, 69, 69, - 69, 69, 70, 70, 70, 70, 71, 71, 72, 72, - 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 74, 75, 75, 76, 76, 77, - 77, 78, 78, 79, 79, 80, 80, 80, 80, 81, - 81, 82, 82, 82 +short yyrindex[] = { 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 1220, 46, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 128, 363, 406, 0, 0, + 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -103, 0, 0, 185, 492, 727, 770, + 813, 856, 1091, 0, 0, 0, 0, 0, 0, 1134, + 1177, 0, 0, 0, 0, 42, 1220, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -102, 0, 0, -101, + 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, }; - -static const short yyr2[] = { 0, - 0, 1, 1, 2, 1, 2, 2, 1, 3, 3, - 5, 5, 1, 2, 3, 3, 1, 3, 1, 3, - 5, 1, 1, 2, 2, 1, 1, 1, 3, 2, - 2, 2, 2, 4, 5, 3, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, - 3, 3, 2, 3, 1, 1, 3, 3, 4, 1, - 2, 1, 3, 3, 4, 2, 2, 2, 2, 1, - 1, 1, 1, 1 +short yygindex[] = { 0, + -7, -69, 3, -66, 458, 9, -26, 52, 27, -63, + -32, 54, 0, -35, 2, -59, }; - -static const short yydefact[] = { 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 27, 28, 0, - 2, 3, 5, 8, 13, 17, 19, 14, 70, 71, - 0, 0, 31, 55, 32, 33, 30, 73, 74, 72, - 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, - 0, 0, 6, 7, 0, 53, 24, 25, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 37, 38, - 39, 0, 56, 0, 0, 36, 47, 46, 48, 49, - 51, 50, 0, 0, 0, 0, 0, 60, 52, 54, - 29, 15, 16, 9, 10, 20, 19, 18, 40, 41, - 0, 58, 0, 0, 0, 0, 66, 67, 68, 69, - 34, 61, 0, 0, 0, 57, 59, 35, 62, 0, - 0, 11, 12, 21, 0, 64, 0, 63, 65, 0, - 0, 0 +#define YYTABLESIZE 1865 +short yytable[] = { 49, + 8, 50, 42, 39, 105, 116, 122, 63, 37, 8, + 109, 113, 64, 65, 94, 95, 96, 97, 128, 137, + 140, 56, 57, 62, 68, 63, 76, 77, 69, 83, + 40, 41, 51, 53, 54, 72, 73, 86, 71, 132, + 1, 10, 78, 79, 80, 2, 74, 75, 66, 108, + 10, 129, 70, 114, 133, 134, 46, 47, 48, 135, + 87, 81, 123, 83, 82, 0, 59, 60, 61, 62, + 76, 126, 138, 0, 103, 104, 83, 106, 0, 83, + 78, 79, 80, 0, 42, 0, 78, 79, 80, 72, + 73, 0, 0, 42, 8, 0, 119, 120, 121, 81, + 124, 125, 82, 0, 0, 81, 0, 0, 82, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, + 127, 0, 83, 8, 130, 8, 8, 43, 0, 0, + 0, 83, 0, 0, 0, 10, 43, 0, 0, 0, + 130, 51, 0, 0, 139, 117, 117, 117, 117, 0, + 0, 0, 0, 0, 0, 0, 40, 41, 0, 40, + 41, 0, 40, 41, 10, 112, 10, 10, 94, 95, + 96, 97, 112, 136, 136, 56, 57, 62, 42, 63, + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 42, 0, 42, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 43, 43, 0, 0, 0, 0, 0, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, + 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 36, + 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, + 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 0, 0, 44, 42, 42, 42, 42, 42, 42, 42, + 42, 44, 0, 0, 0, 42, 42, 42, 42, 0, + 42, 42, 0, 42, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 0, 0, 45, 43, 43, 43, 43, + 43, 43, 43, 43, 45, 0, 0, 0, 43, 43, + 43, 43, 0, 43, 43, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 36, 0, 36, 36, 0, 0, 53, 0, + 0, 0, 36, 36, 0, 0, 44, 53, 0, 0, + 36, 36, 36, 36, 0, 0, 55, 56, 57, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, + 67, 0, 36, 0, 0, 44, 0, 44, 44, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 45, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 89, 0, 0, 0, 0, 90, 91, 92, 93, + 0, 0, 0, 100, 0, 0, 0, 101, 45, 0, + 45, 45, 0, 107, 0, 110, 0, 0, 0, 111, + 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 0, 53, 53, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 0, 47, 47, 0, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, + 0, 44, 44, 44, 44, 44, 44, 44, 44, 0, + 0, 0, 0, 44, 44, 44, 44, 0, 44, 44, + 0, 44, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 0, 0, 0, 45, 45, 45, 45, 45, 45, + 45, 45, 0, 0, 0, 0, 45, 45, 45, 45, + 0, 45, 45, 0, 45, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 0, 0, 46, 53, 53, 53, + 53, 53, 53, 53, 53, 46, 0, 0, 0, 53, + 53, 53, 53, 0, 53, 53, 0, 53, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 0, 0, 48, + 47, 47, 47, 47, 47, 47, 47, 47, 48, 0, + 0, 0, 47, 47, 47, 47, 0, 47, 47, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, + 46, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 0, 46, 46, 0, 0, 51, 0, 0, 0, 0, + 0, 0, 0, 48, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 48, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 0, 49, 49, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 51, 51, 0, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 0, 0, 0, 46, 46, 46, 46, 46, + 46, 46, 46, 0, 0, 0, 0, 46, 46, 46, + 46, 0, 46, 46, 0, 46, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 0, 0, 0, 48, 48, + 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, + 48, 48, 48, 48, 0, 48, 48, 0, 48, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 0, 0, + 50, 49, 49, 49, 49, 49, 49, 49, 49, 50, + 0, 0, 0, 49, 49, 49, 49, 0, 49, 49, + 0, 49, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 0, 0, 52, 51, 51, 51, 51, 51, 51, + 51, 51, 52, 0, 0, 0, 51, 51, 51, 51, + 0, 51, 51, 0, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 50, 54, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 50, 0, 50, 50, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 52, 19, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 0, 52, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 54, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 19, 19, 0, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 0, 0, 0, 50, + 50, 50, 50, 50, 50, 50, 50, 0, 0, 0, + 0, 50, 50, 50, 50, 0, 50, 50, 0, 50, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, + 29, 0, 52, 52, 52, 52, 52, 52, 52, 52, + 0, 0, 0, 0, 52, 52, 52, 52, 0, 52, + 52, 0, 52, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 29, 0, 0, 54, 54, 54, 54, 54, + 54, 54, 54, 0, 0, 0, 0, 54, 54, 54, + 54, 0, 54, 54, 0, 54, 19, 19, 19, 0, + 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 27, 29, 0, 19, 19, + 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 19, 19, 19, 19, 0, 19, 19, 0, 19, 0, + 0, 0, 0, 0, 30, 0, 102, 28, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 28, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 27, + 1, 0, 0, 2, 3, 4, 5, 6, 0, 0, + 0, 7, 8, 9, 10, 11, 12, 0, 0, 0, + 0, 13, 14, 15, 16, 17, 18, 19, 30, 0, + 0, 28, 20, 21, 22, 23, 0, 24, 25, 0, + 26, 0, 1, 0, 0, 2, 3, 4, 5, 6, + 115, 0, 0, 7, 8, 9, 10, 11, 12, 0, + 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, + 0, 0, 0, 0, 20, 21, 22, 23, 0, 24, + 25, 0, 26, 0, 0, 0, 1, 0, 0, 2, + 3, 4, 5, 6, 0, 0, 0, 7, 8, 9, + 10, 11, 12, 0, 0, 0, 0, 13, 14, 15, + 16, 17, 18, 19, 0, 0, 0, 0, 20, 21, + 22, 23, 0, 24, 25, 1, 26, 0, 2, 3, + 4, 5, 6, 0, 0, 0, 7, 8, 9, 10, + 11, 12, 0, 0, 0, 0, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 0, 0, 0, 0, 22, + 23, 0, 24, 25, 0, 26, 0, 2, 3, 4, + 5, 6, 0, 0, 0, 7, 8, 9, 10, 11, + 12, 0, 0, 0, 0, 13, 14, 15, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 0, 22, 23, + 0, 24, 25, 0, 26, }; - -static const short yydefgoto[] = { 140, - 83, 32, 33, 34, 35, 36, 37, 42, 84, 43, - 97, 130, 117, 98, 44, 51 +short yycheck[] = { 123, + 0, 125, 123, 1, 74, 123, 125, 123, 0, 9, + 77, 125, 20, 21, 287, 288, 289, 290, 125, 125, + 125, 125, 125, 125, 281, 125, 260, 261, 280, 37, + 280, 281, 6, 7, 8, 257, 258, 123, 30, 123, + 0, 0, 276, 277, 278, 0, 268, 269, 22, 76, + 9, 115, 26, 86, 124, 125, 3, 4, 5, 126, + 52, 295, 98, 71, 298, -1, 15, 16, 17, 18, + 260, 261, 132, -1, 72, 73, 84, 75, -1, 87, + 276, 277, 278, -1, 0, -1, 276, 277, 278, 257, + 258, -1, -1, 9, 94, -1, 95, 96, 97, 295, + 268, 269, 298, -1, -1, 295, -1, -1, 298, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, + 112, -1, 130, 123, 116, 125, 126, 0, -1, -1, + -1, 139, -1, -1, -1, 94, 9, -1, -1, -1, + 132, 115, -1, -1, 136, 94, 95, 96, 97, -1, + -1, -1, -1, -1, -1, -1, 280, 281, -1, 280, + 281, -1, 280, 281, 123, 279, 125, 126, 287, 288, + 289, 290, 279, 279, 279, 279, 279, 279, 94, 279, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, -1, 125, + 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, -1, 125, 126, -1, -1, -1, -1, -1, 259, + 260, 261, 262, 263, 264, 265, 266, 267, -1, -1, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 125, + -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, -1, -1, + -1, -1, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + -1, -1, 0, 279, 280, 281, 282, 283, 284, 285, + 286, 9, -1, -1, -1, 291, 292, 293, 294, -1, + 296, 297, -1, 299, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, -1, -1, 0, 279, 280, 281, 282, + 283, 284, 285, 286, 9, -1, -1, -1, 291, 292, + 293, 294, -1, 296, 297, -1, 299, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, -1, 260, 261, -1, -1, 0, -1, + -1, -1, 268, 269, -1, -1, 94, 9, -1, -1, + 276, 277, 278, 279, -1, -1, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 295, + 23, -1, 298, -1, -1, 123, -1, 125, 126, -1, + -1, 0, -1, -1, -1, -1, -1, -1, -1, 94, + 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, 54, -1, -1, -1, -1, 59, 60, 61, 62, + -1, -1, -1, 66, -1, -1, -1, 70, 123, -1, + 125, 126, -1, 76, -1, 78, -1, -1, -1, 82, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 123, -1, 125, 126, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, 125, 126, -1, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, + -1, 279, 280, 281, 282, 283, 284, 285, 286, -1, + -1, -1, -1, 291, 292, 293, 294, -1, 296, 297, + -1, 299, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, -1, -1, -1, 279, 280, 281, 282, 283, 284, + 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, + -1, 296, 297, -1, 299, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, -1, -1, 0, 279, 280, 281, + 282, 283, 284, 285, 286, 9, -1, -1, -1, 291, + 292, 293, 294, -1, 296, 297, -1, 299, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, -1, -1, 0, + 279, 280, 281, 282, 283, 284, 285, 286, 9, -1, + -1, -1, 291, 292, 293, 294, -1, 296, 297, -1, + 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + 94, 9, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + -1, 125, 126, -1, -1, 0, -1, -1, -1, -1, + -1, -1, -1, 94, 9, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 123, -1, 125, 126, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 123, -1, 125, 126, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, + 125, 126, -1, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, -1, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, + 294, -1, 296, 297, -1, 299, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, -1, -1, -1, 279, 280, + 281, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, -1, 296, 297, -1, 299, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 9, + -1, -1, -1, 291, 292, 293, 294, -1, 296, 297, + -1, 299, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, -1, -1, 0, 279, 280, 281, 282, 283, 284, + 285, 286, 9, -1, -1, -1, 291, 292, 293, 294, + -1, 296, 297, -1, 299, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, -1, -1, -1, 94, 9, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 123, -1, 125, 126, -1, -1, 0, + -1, -1, -1, -1, -1, -1, -1, 94, 9, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 123, -1, 125, 126, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + -1, 125, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 123, -1, 125, 126, -1, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 285, 286, -1, -1, -1, + -1, 291, 292, 293, 294, -1, 296, 297, -1, 299, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, + 9, -1, 279, 280, 281, 282, 283, 284, 285, 286, + -1, -1, -1, -1, 291, 292, 293, 294, -1, 296, + 297, -1, 299, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 9, -1, -1, 279, 280, 281, 282, 283, + 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, + 294, -1, 296, 297, -1, 299, 257, 258, 259, -1, + -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 94, 9, -1, 279, 280, + 281, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, -1, 296, 297, -1, 299, -1, + -1, -1, -1, -1, 123, -1, 125, 126, -1, -1, + -1, -1, -1, -1, -1, 9, -1, 94, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 123, -1, -1, 126, + -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, + -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, -1, -1, 126, -1, -1, -1, -1, -1, -1, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + -1, -1, 126, -1, -1, -1, -1, -1, -1, 94, + 259, -1, -1, 262, 263, 264, 265, 266, -1, -1, + -1, 270, 271, 272, 273, 274, 275, -1, -1, -1, + -1, 280, 281, 282, 283, 284, 285, 286, 123, -1, + -1, 126, 291, 292, 293, 294, -1, 296, 297, -1, + 299, -1, 259, -1, -1, 262, 263, 264, 265, 266, + 267, -1, -1, 270, 271, 272, 273, 274, 275, -1, + -1, -1, -1, 280, 281, 282, 283, 284, 285, 286, + -1, -1, -1, -1, 291, 292, 293, 294, -1, 296, + 297, -1, 299, -1, -1, -1, 259, -1, -1, 262, + 263, 264, 265, 266, -1, -1, -1, 270, 271, 272, + 273, 274, 275, -1, -1, -1, -1, 280, 281, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, -1, 296, 297, 259, 299, -1, 262, 263, + 264, 265, 266, -1, -1, -1, 270, 271, 272, 273, + 274, 275, -1, -1, -1, -1, 280, 281, 282, 283, + 284, 285, 286, -1, -1, -1, -1, -1, -1, 293, + 294, -1, 296, 297, -1, 299, -1, 262, 263, 264, + 265, 266, -1, -1, -1, 270, 271, 272, 273, 274, + 275, -1, -1, -1, -1, 280, 281, 282, 283, 284, + 285, 286, -1, -1, -1, -1, -1, -1, 293, 294, + -1, 296, 297, -1, 299, }; - -static const short yypact[] = { 228, - 267, 8, 8, 8, 8, 6, 68, 68, 306, 306, - 306, 306,-32768,-32768, 68, 68, 68, 68, -51, 228, - 228, 68, 306, -12, 5, 68,-32768,-32768,-32768, 228, - 228,-32768,-32768, 25,-32768,-32768, 58,-32768,-32768,-32768, - 228, -46,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 228, 306, 306, 81, 81, 81, 81, 306, 306, 306, - 306, 83,-32768,-32768, 306, 81,-32768,-32768, 306, 128, --32768, 267, 267, 267, 267, 306, 306, 306,-32768,-32768, --32768, 306, 228, -9, 228, 189, 81, 81, 81, 81, - 81, 81, 11, 11, 11, 11, 12,-32768, 81, 81, --32768,-32768,-32768,-32768, 64,-32768, 333,-32768,-32768,-32768, - 228,-32768, -8, 6, 228, -38,-32768,-32768,-32768,-32768, --32768,-32768, 267, 267, 306, 228,-32768,-32768, 228, -6, - 228,-32768,-32768,-32768, 228,-32768, -5, 228,-32768, 27, - 36,-32768 -}; - -static const short yypgoto[] = {-32768, - 0, -17, -62, 1, -76, -26, 32, -7, -33, 19, --32768, -77, 33, -39, -1, -31 -}; - - -#define YYLAST 377 - - -static const short yytable[] = { 31, - 108, 38, 63, 64, 50, 52, 53, 58, 59, 60, - 61, 104, 62, 71, 67, 111, 111, 85, 135, 135, - 65, 45, 46, 47, 69, 131, 141, 72, 73, 70, - 68, 39, 40, 39, 40, 142, 39, 40, 74, 75, - 54, 55, 56, 57, 93, 94, 95, 96, 134, 106, - 86, 113, 71, 137, 66, 112, 127, 122, 136, 139, - 132, 133, 0, 76, 77, 71, 72, 73, 71, 48, - 49, 41, 102, 103, 115, 105, 121, 123, 124, 78, - 79, 80, 128, 87, 88, 116, 116, 116, 116, 89, - 90, 91, 92, 39, 40, 0, 99, 0, 81, 0, - 100, 82, 78, 79, 80, 0, 0, 107, 71, 109, - 126, 71, 50, 110, 129, 93, 94, 95, 96, 0, - 71, 81, 0, 0, 82, 0, 118, 119, 120, 0, - 129, 0, 1, 0, 138, 2, 3, 4, 5, 6, - 0, 0, 0, 7, 8, 9, 10, 11, 12, 0, - 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, - 0, 0, 0, 0, 20, 21, 22, 23, 0, 24, - 25, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, - 29, 30, 101, 1, 0, 0, 2, 3, 4, 5, - 6, 114, 0, 0, 7, 8, 9, 10, 11, 12, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 0, 0, 0, 0, 20, 21, 22, 23, 0, - 24, 25, 1, 26, 0, 2, 3, 4, 5, 6, - 0, 0, 0, 7, 8, 9, 10, 11, 12, 27, - 28, 29, 30, 13, 14, 15, 16, 17, 18, 19, - 0, 0, 0, 0, 20, 21, 22, 23, 0, 24, - 25, 1, 26, 0, 2, 3, 4, 5, 6, 0, - 0, 0, 7, 8, 9, 10, 11, 12, 27, 28, - 29, 30, 13, 14, 15, 16, 17, 18, 19, 0, - 0, 0, 0, 0, 0, 22, 23, 0, 24, 25, - 0, 26, 0, 2, 3, 4, 5, 6, 0, 0, - 0, 7, 8, 9, 10, 11, 12, 27, 28, 29, - 30, 13, 14, 15, 16, 17, 18, 19, 76, 125, - 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, - 26, 0, 0, 0, 78, 79, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, - 0, 0, 0, 81, 0, 0, 82 +#define YYFINAL 31 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 314 +#if YYDEBUG +char *yyname[] = { +"end-of-file",0,0,0,0,0,0,0,0,"'\\t'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OVER", +"SMALLOVER","SQRT","SUB","SUP","LPILE","RPILE","CPILE","PILE","LEFT","RIGHT", +"TO","FROM","SIZE","FONT","ROMAN","BOLD","ITALIC","FAT","ACCENT","BAR","UNDER", +"ABOVE","TEXT","QUOTED_TEXT","FWD","BACK","DOWN","UP","MATRIX","COL","LCOL", +"RCOL","CCOL","MARK","LINEUP","TYPE","VCENTER","PRIME","SPLIT","NOSPLIT", +"UACCENT","SPECIAL","SPACE","GFONT","GSIZE","DEFINE","NDEFINE","TDEFINE", +"SDEFINE","UNDEF","IFDEF","INCLUDE","DELIM","CHARTYPE","SET","GRFONT","GBFONT", }; - -static const short yycheck[] = { 0, - 77, 1, 20, 21, 6, 7, 8, 15, 16, 17, - 18, 74, 64, 31, 27, 25, 25, 64, 25, 25, - 22, 3, 4, 5, 26, 64, 0, 3, 4, 30, - 26, 26, 27, 26, 27, 0, 26, 27, 14, 15, - 9, 10, 11, 12, 33, 34, 35, 36, 125, 76, - 51, 85, 70, 131, 23, 65, 65, 97, 65, 65, - 123, 124, -1, 6, 7, 83, 3, 4, 86, 64, - 65, 64, 72, 73, 64, 75, 65, 14, 15, 22, - 23, 24, 114, 52, 53, 93, 94, 95, 96, 58, - 59, 60, 61, 26, 27, -1, 65, -1, 41, -1, - 69, 44, 22, 23, 24, -1, -1, 76, 126, 78, - 111, 129, 114, 82, 115, 33, 34, 35, 36, -1, - 138, 41, -1, -1, 44, -1, 94, 95, 96, -1, - 131, -1, 5, -1, 135, 8, 9, 10, 11, 12, - -1, -1, -1, 16, 17, 18, 19, 20, 21, -1, - -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, 37, 38, 39, 40, -1, 42, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, - 63, 64, 65, 5, -1, -1, 8, 9, 10, 11, - 12, 13, -1, -1, 16, 17, 18, 19, 20, 21, - -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, -1, 37, 38, 39, 40, -1, - 42, 43, 5, 45, -1, 8, 9, 10, 11, 12, - -1, -1, -1, 16, 17, 18, 19, 20, 21, 61, - 62, 63, 64, 26, 27, 28, 29, 30, 31, 32, - -1, -1, -1, -1, 37, 38, 39, 40, -1, 42, - 43, 5, 45, -1, 8, 9, 10, 11, 12, -1, - -1, -1, 16, 17, 18, 19, 20, 21, 61, 62, - 63, 64, 26, 27, 28, 29, 30, 31, 32, -1, - -1, -1, -1, -1, -1, 39, 40, -1, 42, 43, - -1, 45, -1, 8, 9, 10, 11, 12, -1, -1, - -1, 16, 17, 18, 19, 20, 21, 61, 62, 63, - 64, 26, 27, 28, 29, 30, 31, 32, 6, 7, - -1, -1, -1, -1, 39, 40, -1, 42, 43, -1, - 45, -1, -1, -1, 22, 23, 24, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 61, 62, 63, 64, - -1, -1, -1, 41, -1, -1, 44 +char *yyrule[] = { +"$accept : top", +"top :", +"top : equation", +"equation : mark", +"equation : equation mark", +"mark : from_to", +"mark : MARK mark", +"mark : LINEUP mark", +"from_to : sqrt_over", +"from_to : sqrt_over TO from_to", +"from_to : sqrt_over FROM sqrt_over", +"from_to : sqrt_over FROM sqrt_over TO from_to", +"from_to : sqrt_over FROM sqrt_over FROM from_to", +"sqrt_over : script", +"sqrt_over : SQRT sqrt_over", +"sqrt_over : sqrt_over OVER sqrt_over", +"sqrt_over : sqrt_over SMALLOVER sqrt_over", +"script : nonsup", +"script : simple SUP script", +"nonsup : simple", +"nonsup : simple SUB nonsup", +"nonsup : simple SUB simple SUP script", +"simple : TEXT", +"simple : QUOTED_TEXT", +"simple : SPLIT QUOTED_TEXT", +"simple : NOSPLIT TEXT", +"simple : '^'", +"simple : '~'", +"simple : '\\t'", +"simple : '{' equation '}'", +"simple : PILE pile_arg", +"simple : LPILE pile_arg", +"simple : RPILE pile_arg", +"simple : CPILE pile_arg", +"simple : MATRIX '{' column_list '}'", +"simple : LEFT delim equation RIGHT delim", +"simple : LEFT delim equation", +"simple : simple BAR", +"simple : simple UNDER", +"simple : simple PRIME", +"simple : simple ACCENT simple", +"simple : simple UACCENT simple", +"simple : ROMAN simple", +"simple : BOLD simple", +"simple : ITALIC simple", +"simple : FAT simple", +"simple : FONT text simple", +"simple : SIZE text simple", +"simple : FWD number simple", +"simple : BACK number simple", +"simple : UP number simple", +"simple : DOWN number simple", +"simple : TYPE text simple", +"simple : VCENTER simple", +"simple : SPECIAL text simple", +"number : text", +"pile_element_list : equation", +"pile_element_list : pile_element_list ABOVE equation", +"pile_arg : '{' pile_element_list '}'", +"pile_arg : number '{' pile_element_list '}'", +"column_list : column", +"column_list : column_list column", +"column_element_list : equation", +"column_element_list : column_element_list ABOVE equation", +"column_arg : '{' column_element_list '}'", +"column_arg : number '{' column_element_list '}'", +"column : COL column_arg", +"column : LCOL column_arg", +"column : RCOL column_arg", +"column : CCOL column_arg", +"text : TEXT", +"text : QUOTED_TEXT", +"delim : text", +"delim : '{'", +"delim : '}'", }; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/local/lib/bison.simple" - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman - - 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) -#include <alloca.h> -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include <malloc.h> -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include <malloc.h> - #pragma alloca -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() #endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#define YYLEX yylex(&yylval, &yylloc) -#else -#define YYLEX yylex(&yylval) -#endif -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - +#define yyclearin (yychar=(-1)) +#define yyerrok (yyerrflag=0) +#ifdef YYSTACKSIZE #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +#define YYMAXDEPTH YYSTACKSIZE #endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_bcopy(FROM,TO,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 -__yy_bcopy (from, to, count) - char *from; - char *to; - 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_bcopy (char *from, char *to, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 #endif #endif - -#line 169 "/usr/local/lib/bison.simple" +int yydebug; +int yynerrs; +int yyerrflag; +int yychar; +short *yyssp; +YYSTYPE *yyvsp; +YYSTYPE yyval; +YYSTYPE yylval; +short yyss[YYSTACKSIZE]; +YYSTYPE yyvs[YYSTACKSIZE]; +#define yystacksize YYSTACKSIZE +#define YYABORT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab int yyparse() { - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ + register int yym, yyn, yystate; +#if YYDEBUG + register char *yys; + extern char *getenv(); - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) + if (yys = getenv("YYDEBUG")) { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), -#ifdef YYLSP_NEEDED - &yyls1, size * sizeof (*yylsp), -#endif - &yystacksize); - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); #endif - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ + yynerrs = 0; + yyerrflag = 0; + yychar = (-1); - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) +yyloop: + if (yyn = yydefred[yystate]) goto yyreduce; + if (yychar < 0) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } #endif - yychar = YYLEX; } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); #endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + yychar = (-1); + if (yyerrflag > 0) --yyerrflag; + goto yyloop; } - else + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; +#ifdef lint + goto yynewerror; #endif - fprintf (stderr, ")\n"); - } +yynewerror: + yyerror("syntax error"); +#ifdef lint + goto yyerrlab; #endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) +yyerrlab: + ++yynerrs; +yyinrecovery: + if (yyerrflag < 3) { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, error recovery shifting\ + to state %d\n", *yyssp, yytable[yyn]); #endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("yydebug: error recovery discarding state %d\n", + *yyssp); #endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) + if (yyssp <= yyss) goto yyabort; + --yyssp; + --yyvsp; + } + } + } + else { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + if (yychar == 0) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, error recovery discards token %d (%s)\n", + yystate, yychar, yys); + } +#endif + yychar = (-1); + goto yyloop; } +yyreduce: +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); #endif - - - switch (yyn) { - + yym = yylen[yyn]; + yyval = yyvsp[1-yym]; + switch (yyn) + { case 2: -#line 127 "eqn.y" -{ yyvsp[0].b->top_level(); non_empty_flag = 1; ; - break;} +#line 126 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].b->top_level(); non_empty_flag = 1; } +break; case 3: -#line 132 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 131 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 4: -#line 134 "eqn.y" +#line 133 "/u/jjc/groff/eqn/eqn.y" { list_box *lb = yyvsp[-1].b->to_list_box(); if (!lb) lb = new list_box(yyvsp[-1].b); lb->append(yyvsp[0].b); yyval.b = lb; - ; - break;} + } +break; case 5: -#line 145 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 144 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 6: -#line 147 "eqn.y" -{ yyval.b = make_mark_box(yyvsp[0].b); ; - break;} +#line 146 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_mark_box(yyvsp[0].b); } +break; case 7: -#line 149 "eqn.y" -{ yyval.b = make_lineup_box(yyvsp[0].b); ; - break;} +#line 148 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_lineup_box(yyvsp[0].b); } +break; case 8: -#line 154 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 153 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 9: -#line 156 "eqn.y" -{ yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); ; - break;} +#line 155 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_limit_box(yyvsp[-2].b, 0, yyvsp[0].b); } +break; case 10: -#line 158 "eqn.y" -{ yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); ; - break;} +#line 157 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0); } +break; case 11: -#line 160 "eqn.y" -{ yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 159 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_limit_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); } +break; case 12: -#line 162 "eqn.y" -{ yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); ; - break;} +#line 161 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_limit_box(yyvsp[-4].b, make_limit_box(yyvsp[-2].b, yyvsp[0].b, 0), 0); } +break; case 13: -#line 167 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 166 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 14: -#line 169 "eqn.y" -{ yyval.b = make_sqrt_box(yyvsp[0].b); ; - break;} +#line 168 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_sqrt_box(yyvsp[0].b); } +break; case 15: -#line 171 "eqn.y" -{ yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 170 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_over_box(yyvsp[-2].b, yyvsp[0].b); } +break; case 16: -#line 173 "eqn.y" -{ yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 172 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_small_over_box(yyvsp[-2].b, yyvsp[0].b); } +break; case 17: -#line 178 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 177 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 18: -#line 180 "eqn.y" -{ yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); ; - break;} +#line 179 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_script_box(yyvsp[-2].b, 0, yyvsp[0].b); } +break; case 19: -#line 185 "eqn.y" -{ yyval.b = yyvsp[0].b; ; - break;} +#line 184 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[0].b; } +break; case 20: -#line 187 "eqn.y" -{ yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); ; - break;} +#line 186 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_script_box(yyvsp[-2].b, yyvsp[0].b, 0); } +break; case 21: -#line 189 "eqn.y" -{ yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 188 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_script_box(yyvsp[-4].b, yyvsp[-2].b, yyvsp[0].b); } +break; case 22: -#line 194 "eqn.y" -{ yyval.b = split_text(yyvsp[0].str); ; - break;} +#line 193 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = split_text(yyvsp[0].str); } +break; case 23: -#line 196 "eqn.y" -{ yyval.b = new quoted_text_box(yyvsp[0].str); ; - break;} +#line 195 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new quoted_text_box(yyvsp[0].str); } +break; case 24: -#line 198 "eqn.y" -{ yyval.b = split_text(yyvsp[0].str); ; - break;} +#line 197 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = split_text(yyvsp[0].str); } +break; case 25: -#line 200 "eqn.y" -{ yyval.b = new quoted_text_box(yyvsp[0].str); ; - break;} +#line 199 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new quoted_text_box(yyvsp[0].str); } +break; case 26: -#line 202 "eqn.y" -{ yyval.b = new half_space_box; ; - break;} +#line 201 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new half_space_box; } +break; case 27: -#line 204 "eqn.y" -{ yyval.b = new space_box; ; - break;} +#line 203 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new space_box; } +break; case 28: -#line 206 "eqn.y" -{ yyval.b = new tab_box; ; - break;} +#line 205 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new tab_box; } +break; case 29: -#line 208 "eqn.y" -{ yyval.b = yyvsp[-1].b; ; - break;} +#line 207 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[-1].b; } +break; case 30: -#line 210 "eqn.y" -{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; ; - break;} +#line 209 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; } +break; case 31: -#line 212 "eqn.y" -{ yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; ; - break;} +#line 211 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].pb->set_alignment(LEFT_ALIGN); yyval.b = yyvsp[0].pb; } +break; case 32: -#line 214 "eqn.y" -{ yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; ; - break;} +#line 213 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].pb->set_alignment(RIGHT_ALIGN); yyval.b = yyvsp[0].pb; } +break; case 33: -#line 216 "eqn.y" -{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; ; - break;} +#line 215 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].pb->set_alignment(CENTER_ALIGN); yyval.b = yyvsp[0].pb; } +break; case 34: -#line 218 "eqn.y" -{ yyval.b = yyvsp[-1].mb; ; - break;} +#line 217 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = yyvsp[-1].mb; } +break; case 35: -#line 220 "eqn.y" -{ yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); ; - break;} +#line 219 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_delim_box(yyvsp[-3].str, yyvsp[-2].b, yyvsp[0].str); } +break; case 36: -#line 222 "eqn.y" -{ yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); ; - break;} +#line 221 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_delim_box(yyvsp[-1].str, yyvsp[0].b, 0); } +break; case 37: -#line 224 "eqn.y" -{ yyval.b = make_overline_box(yyvsp[-1].b); ; - break;} +#line 223 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_overline_box(yyvsp[-1].b); } +break; case 38: -#line 226 "eqn.y" -{ yyval.b = make_underline_box(yyvsp[-1].b); ; - break;} +#line 225 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_underline_box(yyvsp[-1].b); } +break; case 39: -#line 228 "eqn.y" -{ yyval.b = make_prime_box(yyvsp[-1].b); ; - break;} +#line 227 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_prime_box(yyvsp[-1].b); } +break; case 40: -#line 230 "eqn.y" -{ yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 229 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_accent_box(yyvsp[-2].b, yyvsp[0].b); } +break; case 41: -#line 232 "eqn.y" -{ yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); ; - break;} +#line 231 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_uaccent_box(yyvsp[-2].b, yyvsp[0].b); } +break; case 42: -#line 234 "eqn.y" -{ yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); ; - break;} +#line 233 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new font_box(strsave(get_grfont()), yyvsp[0].b); } +break; case 43: -#line 236 "eqn.y" -{ yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); ; - break;} +#line 235 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new font_box(strsave(get_gbfont()), yyvsp[0].b); } +break; case 44: -#line 238 "eqn.y" -{ yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); ; - break;} +#line 237 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new font_box(strsave(get_gfont()), yyvsp[0].b); } +break; case 45: -#line 240 "eqn.y" -{ yyval.b = new fat_box(yyvsp[0].b); ; - break;} +#line 239 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new fat_box(yyvsp[0].b); } +break; case 46: -#line 242 "eqn.y" -{ yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); ; - break;} +#line 241 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new font_box(yyvsp[-1].str, yyvsp[0].b); } +break; case 47: -#line 244 "eqn.y" -{ yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); ; - break;} +#line 243 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new size_box(yyvsp[-1].str, yyvsp[0].b); } +break; case 48: -#line 246 "eqn.y" -{ yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); ; - break;} +#line 245 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new hmotion_box(yyvsp[-1].n, yyvsp[0].b); } +break; case 49: -#line 248 "eqn.y" -{ yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); ; - break;} +#line 247 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new hmotion_box(-yyvsp[-1].n, yyvsp[0].b); } +break; case 50: -#line 250 "eqn.y" -{ yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); ; - break;} +#line 249 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new vmotion_box(yyvsp[-1].n, yyvsp[0].b); } +break; case 51: -#line 252 "eqn.y" -{ yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); ; - break;} +#line 251 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new vmotion_box(-yyvsp[-1].n, yyvsp[0].b); } +break; case 52: -#line 254 "eqn.y" -{ yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; ; - break;} +#line 253 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].b->set_spacing_type(yyvsp[-1].str); yyval.b = yyvsp[0].b; } +break; case 53: -#line 256 "eqn.y" -{ yyval.b = new vcenter_box(yyvsp[0].b); ; - break;} +#line 255 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = new vcenter_box(yyvsp[0].b); } +break; case 54: -#line 258 "eqn.y" -{ yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); ; - break;} +#line 257 "/u/jjc/groff/eqn/eqn.y" +{ yyval.b = make_special_box(yyvsp[-1].str, yyvsp[0].b); } +break; case 55: -#line 263 "eqn.y" +#line 262 "/u/jjc/groff/eqn/eqn.y" { int n; if (sscanf(yyvsp[0].str, "%d", &n) == 1) yyval.n = n; a_delete yyvsp[0].str; - ; - break;} + } +break; case 56: -#line 273 "eqn.y" -{ yyval.pb = new pile_box(yyvsp[0].b); ; - break;} +#line 272 "/u/jjc/groff/eqn/eqn.y" +{ yyval.pb = new pile_box(yyvsp[0].b); } +break; case 57: -#line 275 "eqn.y" -{ yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; ; - break;} +#line 274 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[-2].pb->append(yyvsp[0].b); yyval.pb = yyvsp[-2].pb; } +break; case 58: -#line 280 "eqn.y" -{ yyval.pb = yyvsp[-1].pb; ; - break;} +#line 279 "/u/jjc/groff/eqn/eqn.y" +{ yyval.pb = yyvsp[-1].pb; } +break; case 59: -#line 282 "eqn.y" -{ yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; ; - break;} +#line 281 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[-1].pb->set_space(yyvsp[-3].n); yyval.pb = yyvsp[-1].pb; } +break; case 60: -#line 287 "eqn.y" -{ yyval.mb = new matrix_box(yyvsp[0].col); ; - break;} +#line 286 "/u/jjc/groff/eqn/eqn.y" +{ yyval.mb = new matrix_box(yyvsp[0].col); } +break; case 61: -#line 289 "eqn.y" -{ yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; ; - break;} +#line 288 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[-1].mb->append(yyvsp[0].col); yyval.mb = yyvsp[-1].mb; } +break; case 62: -#line 294 "eqn.y" -{ yyval.col = new column(yyvsp[0].b); ; - break;} +#line 293 "/u/jjc/groff/eqn/eqn.y" +{ yyval.col = new column(yyvsp[0].b); } +break; case 63: -#line 296 "eqn.y" -{ yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; ; - break;} +#line 295 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[-2].col->append(yyvsp[0].b); yyval.col = yyvsp[-2].col; } +break; case 64: -#line 301 "eqn.y" -{ yyval.col = yyvsp[-1].col; ; - break;} +#line 300 "/u/jjc/groff/eqn/eqn.y" +{ yyval.col = yyvsp[-1].col; } +break; case 65: -#line 303 "eqn.y" -{ yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; ; - break;} +#line 302 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[-1].col->set_space(yyvsp[-3].n); yyval.col = yyvsp[-1].col; } +break; case 66: -#line 308 "eqn.y" -{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; ; - break;} +#line 307 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; } +break; case 67: -#line 310 "eqn.y" -{ yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; ; - break;} +#line 309 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].col->set_alignment(LEFT_ALIGN); yyval.col = yyvsp[0].col; } +break; case 68: -#line 312 "eqn.y" -{ yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; ; - break;} +#line 311 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].col->set_alignment(RIGHT_ALIGN); yyval.col = yyvsp[0].col; } +break; case 69: -#line 314 "eqn.y" -{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; ; - break;} +#line 313 "/u/jjc/groff/eqn/eqn.y" +{ yyvsp[0].col->set_alignment(CENTER_ALIGN); yyval.col = yyvsp[0].col; } +break; case 70: -#line 318 "eqn.y" -{ yyval.str = yyvsp[0].str; ; - break;} +#line 317 "/u/jjc/groff/eqn/eqn.y" +{ yyval.str = yyvsp[0].str; } +break; case 71: -#line 320 "eqn.y" -{ yyval.str = yyvsp[0].str; ; - break;} +#line 319 "/u/jjc/groff/eqn/eqn.y" +{ yyval.str = yyvsp[0].str; } +break; case 72: -#line 325 "eqn.y" -{ yyval.str = yyvsp[0].str; ; - break;} +#line 324 "/u/jjc/groff/eqn/eqn.y" +{ yyval.str = yyvsp[0].str; } +break; case 73: -#line 327 "eqn.y" -{ yyval.str = strsave("{"); ; - break;} +#line 326 "/u/jjc/groff/eqn/eqn.y" +{ yyval.str = strsave("{"); } +break; case 74: -#line 329 "eqn.y" -{ yyval.str = strsave("}"); ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 442 "/usr/local/lib/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); +#line 328 "/u/jjc/groff/eqn/eqn.y" +{ yyval.str = strsave("}"); } +break; +#line 1107 "y.tab.c" } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) + yyssp -= yym; + yystate = *yyssp; + yyvsp -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state 0 to\ + state %d\n", YYFINAL); #endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; + yystate = YYFINAL; + *++yyssp = YYFINAL; + *++yyvsp = yyval; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", + YYFINAL, yychar, yys); + } #endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + } + if (yychar == 0) goto yyaccept; + goto yyloop; } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state %d \ +to state %d\n", *yyssp, yystate); #endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) + if (yyssp >= yyss + yystacksize - 1) { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; + goto yyoverflow; } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; +yyoverflow: + yyerror("yacc stack overflow"); +yyabort: + return (1); +yyaccept: + return (0); } -#line 332 "eqn.y" - diff --git a/eqn/eqn.tab.h b/eqn/eqn.tab.h index 4cc78d483..9a8b3cb22 100644 --- a/eqn/eqn.tab.h +++ b/eqn/eqn.tab.h @@ -1,3 +1,61 @@ +#define OVER 257 +#define SMALLOVER 258 +#define SQRT 259 +#define SUB 260 +#define SUP 261 +#define LPILE 262 +#define RPILE 263 +#define CPILE 264 +#define PILE 265 +#define LEFT 266 +#define RIGHT 267 +#define TO 268 +#define FROM 269 +#define SIZE 270 +#define FONT 271 +#define ROMAN 272 +#define BOLD 273 +#define ITALIC 274 +#define FAT 275 +#define ACCENT 276 +#define BAR 277 +#define UNDER 278 +#define ABOVE 279 +#define TEXT 280 +#define QUOTED_TEXT 281 +#define FWD 282 +#define BACK 283 +#define DOWN 284 +#define UP 285 +#define MATRIX 286 +#define COL 287 +#define LCOL 288 +#define RCOL 289 +#define CCOL 290 +#define MARK 291 +#define LINEUP 292 +#define TYPE 293 +#define VCENTER 294 +#define PRIME 295 +#define SPLIT 296 +#define NOSPLIT 297 +#define UACCENT 298 +#define SPECIAL 299 +#define SPACE 300 +#define GFONT 301 +#define GSIZE 302 +#define DEFINE 303 +#define NDEFINE 304 +#define TDEFINE 305 +#define SDEFINE 306 +#define UNDEF 307 +#define IFDEF 308 +#define INCLUDE 309 +#define DELIM 310 +#define CHARTYPE 311 +#define SET 312 +#define GRFONT 313 +#define GBFONT 314 typedef union { char *str; box *b; @@ -6,64 +64,4 @@ typedef union { int n; column *col; } YYSTYPE; -#define OVER 258 -#define SMALLOVER 259 -#define SQRT 260 -#define SUB 261 -#define SUP 262 -#define LPILE 263 -#define RPILE 264 -#define CPILE 265 -#define PILE 266 -#define LEFT 267 -#define RIGHT 268 -#define TO 269 -#define FROM 270 -#define SIZE 271 -#define FONT 272 -#define ROMAN 273 -#define BOLD 274 -#define ITALIC 275 -#define FAT 276 -#define ACCENT 277 -#define BAR 278 -#define UNDER 279 -#define ABOVE 280 -#define TEXT 281 -#define QUOTED_TEXT 282 -#define FWD 283 -#define BACK 284 -#define DOWN 285 -#define UP 286 -#define MATRIX 287 -#define COL 288 -#define LCOL 289 -#define RCOL 290 -#define CCOL 291 -#define MARK 292 -#define LINEUP 293 -#define TYPE 294 -#define VCENTER 295 -#define PRIME 296 -#define SPLIT 297 -#define NOSPLIT 298 -#define UACCENT 299 -#define SPECIAL 300 -#define SPACE 301 -#define GFONT 302 -#define GSIZE 303 -#define DEFINE 304 -#define NDEFINE 305 -#define TDEFINE 306 -#define SDEFINE 307 -#define UNDEF 308 -#define IFDEF 309 -#define INCLUDE 310 -#define DELIM 311 -#define CHARTYPE 312 -#define SET 313 -#define GRFONT 314 -#define GBFONT 315 - - extern YYSTYPE yylval; @@ -25,7 +25,6 @@ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "box.h" extern int non_empty_flag; char *strsave(const char *); -#define YYDEBUG 1 int yylex(); void yyerror(const char *); %} diff --git a/eqn/y.output b/eqn/y.output deleted file mode 100644 index e69de29bb..000000000 --- a/eqn/y.output +++ /dev/null diff --git a/gcc.patch b/gcc.patch deleted file mode 100644 index e69de29bb..000000000 --- a/gcc.patch +++ /dev/null diff --git a/groff/groff.cc b/groff/groff.cc index 054003b28..078091315 100644 --- a/groff/groff.cc +++ b/groff/groff.cc @@ -376,17 +376,19 @@ possible_command::possible_command() possible_command::~possible_command() { - delete name; - delete argv; + a_delete name; + a_delete argv; } void possible_command::set_name(const char *s) { + a_delete name; name = strsave(s); } void possible_command::set_name(const char *s1, const char *s2) { + a_delete name; name = new char[strlen(s1) + strlen(s2) + 1]; strcpy(name, s1); strcat(name, s2); diff --git a/grog/Makefile.sub b/grog/Makefile.sub index 27e4ec231..5b8f089f6 100644 --- a/grog/Makefile.sub +++ b/grog/Makefile.sub @@ -8,9 +8,10 @@ grog: grog.pl grog.sh rm -f $@; \ sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/grog.pl >$@; \ else \ - cp $(srcdir)/grog.sh grog; \ + rm -f $@; \ + sed "$(SH_SCRIPT_SED_CMD)" $(srcdir)/grog.sh >$@; \ fi - chmod +x grog; + chmod +x $@ install_data: grog -test -d $(bindir) || mkdir $(bindir) diff --git a/grops/grops.man b/grops/grops.man index 3659e91f2..5da1e6f3f 100644 --- a/grops/grops.man +++ b/grops/grops.man @@ -95,6 +95,12 @@ don't understand the and .B %%EndDocument comments. +Add 8 if the first line of the PostScript output should be +.B %!PS-Adobe-2.0 +rather than +.BR %!PS-Adobe-3.0 ; +this is needed when using Sun's Newsprint with a printer that requires +page reversal. The default value can be specified by a .RS .IP diff --git a/grops/ps.cc b/grops/ps.cc index 3601d971a..1dd5d8c77 100644 --- a/grops/ps.cc +++ b/grops/ps.cc @@ -1099,7 +1099,9 @@ ps_printer::~ps_printer() out.simple_comment("EOF"); if (fseek(tempfp, 0L, 0) < 0) fatal("fseek on temporary file failed"); - fputs("%!PS-Adobe-3.0\n", stdout); + fputs("%!PS-Adobe-", stdout); + fputs((broken_flags & USE_PS_ADOBE_2_0) ? "2.0" : "3.0", stdout); + putchar('\n'); out.set_file(stdout); { extern const char *version_string; diff --git a/grops/ps.h b/grops/ps.h index aa5c73606..50be4e8ba 100644 --- a/grops/ps.h +++ b/grops/ps.h @@ -117,5 +117,6 @@ extern unsigned broken_flags; enum { NO_SETUP_SECTION = 01, STRIP_PERCENT_BANG = 02, - STRIP_STRUCTURE_COMMENTS = 04 - }; + STRIP_STRUCTURE_COMMENTS = 04, + USE_PS_ADOBE_2_0 = 010 +}; diff --git a/grotty/tty.cc b/grotty/tty.cc index 95d9eb47a..b44759934 100644 --- a/grotty/tty.cc +++ b/grotty/tty.cc @@ -219,7 +219,7 @@ void tty_printer::add_char(unsigned char c, int h, int v, unsigned char mode) // in order of occurrence. for (glyph **pp = lines + (vpos - 1); *pp; pp = &(*pp)->next) - if ((*pp)->hpos < hpos + if (int((*pp)->hpos) < hpos || ((*pp)->hpos == hpos && (*pp)->draw_mode() >= g->draw_mode())) break; @@ -273,6 +273,7 @@ void tty_printer::end_page(int page_length) for (int last_line = nlines; last_line > 0; last_line--) if (lines[last_line - 1]) break; +#if 0 if (last_line > lines_per_page) { error("characters past last line discarded"); do { @@ -284,6 +285,7 @@ void tty_printer::end_page(int page_length) } } while (last_line > lines_per_page); } +#endif for (int i = 0; i < last_line; i++) { glyph *p = lines[i]; lines[i] = 0; @@ -311,7 +313,7 @@ void tty_printer::end_page(int page_length) if (!overstrike_flag) continue; } - if (hpos > p->hpos) { + if (hpos > int(p->hpos)) { putchar('\b'); hpos--; } @@ -319,13 +321,13 @@ void tty_printer::end_page(int page_length) if (horizontal_tab_flag) { for (;;) { int next_tab_pos = ((hpos + TAB_WIDTH) / TAB_WIDTH) * TAB_WIDTH; - if (next_tab_pos > p->hpos) + if (next_tab_pos > int(p->hpos)) break; putchar('\t'); hpos = next_tab_pos; } } - for (; hpos < p->hpos; hpos++) + for (; hpos < int(p->hpos); hpos++) putchar(' '); } assert(hpos == p->hpos); diff --git a/include/lib.h b/include/lib.h index 217006678..2cee56719 100644 --- a/include/lib.h +++ b/include/lib.h @@ -35,11 +35,15 @@ extern "C" { #else /* not UNISTD_H_DECLARES_GETOPT */ extern "C" { int getopt(int, char **, const char *); +} +#endif /* not UNISTD_H_DECLARES_GETOPT */ + +extern "C" { extern char *optarg; extern int optind; extern int opterr; } -#endif /* not UNISTD_H_DECLARES_GETOPT */ + #endif /* not STDLIB_H_DECLARES_GETOPT */ char *strsave(const char *s); diff --git a/indxbib/indxbib.man b/indxbib/indxbib.man index 3952271c0..984cf79bd 100644 --- a/indxbib/indxbib.man +++ b/indxbib/indxbib.man @@ -118,7 +118,7 @@ Don't index the contents of fields whose names are in Initially .I string is -.B XYZ . +.BR XYZ . .TP .BI \-h n Use the first prime greater than or equal to diff --git a/mm/ChangeLog b/mm/ChangeLog index 08108475a..389777fa8 100644 --- a/mm/ChangeLog +++ b/mm/ChangeLog @@ -1,3 +1,39 @@ +Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.16 + * MUL* now use the previus font and family. + * extra blank page at end-of-text eliminated. + +Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.15 + * Didn't restore pointsize to current size in .H. + * B1/B2 did not work with indent. (MULE and friends) + * fixed old problem with trailing empty pages. + +Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.14 + * Sigh. Amazing what a missing \} can do. If the string + HP was set, then all text disappeared... + +Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.13 + * Fixed bug with handling ps/vs in .H. (again, sigh... ) + +Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.12 + * Line-break added to PGFORM. + * added more features to VERBON + * .S is not used anymore in H, it caused confusion with + normal text, but it will still set .vs. + * SK was broken, will now produce the requested number of + empty pages. + * dotted lines added to LIST OF FIGURES adn friends. + Also better linespacing. + Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se) * version 1.11 diff --git a/mm/groff_mm.man b/mm/groff_mm.man index b62da8ead..291066734 100644 --- a/mm/groff_mm.man +++ b/mm/groff_mm.man @@ -171,14 +171,46 @@ See \fBINITR\fP. .B TAB reset tabs to every 5n. Normally used to reset any previous tabpositions. .TP -.B VERBON [1/0 [pointsize [font]]] +.B VERBON [flag [pointsize [font]]] Begin verbatim output using courier font. Usually for printing programs. All character has equal width. -Escape-character (\e) is normally turned off, but can be enabled by -setting the first argument to 1. Th pointsize can also be changed with +The pointsize can be changed with the second argument. By specifying the font-argument it is possible to use another font instead of courier. +\fIflag\fP control several special features. +It contains the sum of all wanted features. +.in +.5i +.ti -.5i +Value +.sp -1 +Description +.ti -.5i +1 +.sp -1 +Enable the escape-character (\e). This is normally turned off during +verbose output. +.ti -.5i +2 +.sp -1 +Add en empty line before the verbose text. +.ti -.5i +4 +.sp -1 +Add en empty line after the verbose text. +.ti -.5i +8 +.sp -1 +Print the verbose text with numbered lines. This adds four digitsized +spaces in the beginning of each line. Finer control is available with +the string-variable \fBVerbnm\fP. It contains all arguments to the +\fBtroff\fP-command \fB.nm\fP, normally '1'. +.ti -.5i +16 +.sp -1 +Indent the verbose text with five 'n':s. This is controlled by the +number-variable \fBVerbin\fP (in units). +.in .TP .B VERBOFF End verbatim output. @@ -1,5 +1,5 @@ .\" Version: -.ds RE 1.11 +.ds RE 1.16 .ig Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. @@ -216,6 +216,12 @@ Index array!index .\" section-figure if Sectf > 0 .nr Sectf 0 .if \n[N]=5 .nr Sectf 1 +.\" +.\" argument to .nm in .VERBON. +.ds Verbnm "1 +.\" indent for VERBON +.nr Verbin 5n +.\" .nr .mgm 1 .\" .\"--------------------------------------------- @@ -379,6 +385,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\"------------- .\" .PGFORM linelength [ pagelength [ pageoffset ] ] .de PGFORM +.\" Break here to avoid problems with new linesetting of the previous line. +.\" Hope this doesn't break anything else :-) +.br .if !''\\$1' .nr @ll \\$1 .if !''\\$2' .nr @pl \\$2 .if !''\\$3' .nr @po \\$3 @@ -437,6 +446,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . ie \w@\\$1@=0 .ds misc*a C . el .ds misc*a \\$1 .\} +.\" .\" set point size .if !'\\*[misc*a]'C' \{\ . ie '\\*[misc*a]'P' .nr @ps \\n[misc*S-ps] @@ -445,6 +455,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . el .nr @ps \\*[misc*a] . \} .\} +.\" .\" set vertical spacing .if !'\\*[misc*b]'C' \{\ . ie '\\*[misc*b]'P' .nr @vs \\n[misc*S-vs] @@ -490,11 +501,21 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .rm misc*rd misc*rd2 .. .\"------------ -.\" VERBON [escape on/off [pointsize [font]]] +.\" VERBON [flag [pointsize [font]]] +.\" flag +.\" bit function +.\" 0 escape on +.\" 1 add an empty line before verbose text +.\" 2 add an empty line after verbose text +.\" 4 numbered lines (controlled by the string Verbnm) +.\" 8 indent text by the numbervariable Verbin. .de VERBON +.nr misc*verb 0\\$1 +.if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u .br .misc@ev-keep misc*verb-ev .nf +.if (0\\n[misc*verb]%16)/8 .nm \\*[Verbnm] .ie !'\\$3'' .ft \\$3 .el .ft CR .ss 12 @@ -503,11 +524,17 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . ps \\$2 . vs \\$2 .\} -.nr @verbose-flag 1 \" tell pageheader to set ec/eo -.if !0\\$1 .eo +.if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u +.if !(0\\n[misc*verb]%2) \{\ +. eo +. nr @verbose-flag 1 \" tell pageheader to set ec/eo +.\} .. .de VERBOFF .ec +.if (0\\n[misc*verb]%8)/4 .SP \\n[Lsp]u +.if (0\\n[misc*verb]%16)/8 .nm +.if (0\\n[misc*verb]%32)/16 .in .ev .nr @verbose-flag 0 .. @@ -638,11 +665,20 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .hd@split hd*new-ps \\n[hd*level] HP \\*[HP]\" get point size .ie (\\*[hd*new-ps]=0):(\w@\\*[hd*new-ps]@=0) \{\ . if \\n[hd*htype] \{\ -. if '\\*[hd*font]'3' .S -1 -. if '\\*[hd*font]'B' .S -1 +. if '\\*[hd*font]'3' \{\ +. ps -1 +. vs -1 +. \} +. if '\\*[hd*font]'B' \{\ +. ps -1 +. vs -1 +. \} . \} .\} -.el .S \\*[hd*new-ps] +.el \{\ +. ps \\*[hd*new-ps] +. vs \\*[hd*new-ps]+2 +.\} .\" .\"---------- user macro HY ------------- .\" user macro to reset indents @@ -660,7 +696,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\} .el \\$2\\$3\\*[hd*suf-space]\&\c .ft 1 -.S P P +.\" restore pointsize and vertical size. +.ps \\n[@ps] +.vs \\n[@vs] .\" .\" table of contents .if (\\n[hd*level]<=\\n[Cl])&\w@\\$2@ \{\ @@ -848,6 +886,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\" FOOTER .de pg@footer .ec +.if \\n[D]>2 .tm Footer# \\n[%] (\\n[.F]:\\n[c.]) .pg@disable-trap .\".debug footer .tbl@bottom-hook @@ -977,13 +1016,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\"------------------------- .\" print out all pending text .de pg@end-of-text -.\" non-empty environment -.misc@ev-keep ne -.init@reset -\c -.ds@print-float 3 -.ev -.if d ref*div .RP +.if \\n[D]>2 .tm ---------- End of text processing ---------------- +.ds@eot-print +.ref@eot-print .. .\"------------------------- .\" set top and bottom margins @@ -1073,7 +1108,11 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .br .bp .nr pg*i 0 1 -.while \\n+[pg*i]<=(0\\$1) .bp +.\" force new page by writing something invisible. +.while \\n+[pg*i]<=(0\\$1) \{\ +\& +. bp +.\} .. .\"------------------------------- .\" MULB width1 space1 width2 space2 width3 space3 ... @@ -1089,7 +1128,11 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . shift 2 .\} .nr pg*mul-max-col \\n[pg*i] +.ds pg*mul-fam \\n[.fam] +.nr pg*mul-font \\n[.f] .ev pg*mul-ev +.fam \\*[pg*mul-fam] +.ft \\n[pg*mul-font] .fi .hy 14 .di pg*mul-div @@ -1354,7 +1397,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .nr ds*rindent 0 .if \\n[.$]>2 .nr ds*rindent \\$3 .\" -.\" +.\"--------------- .nr ds*old-ll \\n[.l] .misc@push ds-ll \\n[.l] .misc@push ds-form \\n[ds*format] @@ -1450,6 +1493,19 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . \} .\} .. +.\"------------- +.\" called by end-of-text +.de ds@eot-print +.if \\n[ds*o-fnr]<=\\n[ds*fnr] \{\ +. if \\n[D]>2 .tm Print remaining displays. +.\" still some floats left, make non-empty environment +. misc@ev-keep ne +. init@reset +\c +. ds@print-float 3 +. ev +.\} +.. .\"--------------- .\" print according to Df and De. .\" .ds@print-float type @@ -1839,8 +1895,10 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\" Table of contents with friends (module lix) .de TC .br -.\" print any pending displays -.pg@end-of-text +.\" print any pending displays and references +.ds@print-float 3 +.if \\n[ref*flag] .RP 0 1 +.\" .if \w@\\$1@>0 .nr toc*slevel \\$1 .if \w@\\$2@>0 .nr toc*spacing (u;\\$2*\\n[Lsp]) .if \w@\\$3@>0 .nr toc*tlevel \\$3 @@ -1872,7 +1930,7 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] . br . SP 3 .\} -.toc*list +.if d toc*list .toc*list .\" print LIST OF XXX .if d lix*dsfg .lix@print-ds fg "\\*[Lf]" .if d lix*dstb .lix@print-ds tb "\\*[Lt]" @@ -2062,13 +2120,9 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .de lix@dsln .nr lix*i \\n[lix*wth\\$1]-\w@\\$4@ .ne 2v -.ll -4m -.ti 0 -\h'\\n[lix*i]u'\\$4\\$3 -.sp -1 -.ll -.ti \\n[.l]u-\w@\\$2@u -\\$2 +.nr lix*sep \\n[.l]-\\n[lix*i]-\w'\\$4\\$3\\$2'-1m-1n-\\n[.i] +\h'\\n[lix*i]u'\\$4\\$3\h'1n'\l'\\n[lix*sep]u.'\h'1m'\\$2 +.SP \\n[toc*spacing]u .. .\"########################### module fnt ############################ .\" some font macros. @@ -2127,9 +2181,13 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .nr box*ll \\n[.l] .nr box*ind \\n[.i] .nr box*hyp \\n[.hy] -.in +1n -.ll -1n +.nr box*wid \\n[.l]-\\n[.i] +.\" +.\" jump to new environment. +.ev box*ev .di box*div +.in 1n +.ll (u;\\n[box*wid]-1n) .hy \\n[.hy] .. .de B2 @@ -2138,17 +2196,16 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .di .nr box*height \\n[dn] .ne \\n[dn]u+1v -.ev box*ev .ll \\n[box*ll]u -.in 0 +.in \\n[box*ind]u .nr box*y-pos \\n[.d]u .nf .box*div .fi \v'-1v+.25m'\ -\D'l \\n[.l]u 0'\ +\D'l \\n[box*wid]u 0'\ \D'l 0 -\\n[box*height]u'\ -\D'l -\\n[.l]u 0'\ +\D'l -\\n[box*wid]u 0'\ \D'l 0 \\n[box*height]u' .br .sp -1 @@ -2162,10 +2219,13 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .\"########################### module ref ############################ .nr ref*nr 0 1 .nr ref*nr-width 5n +.nr ref*flag 0 \" for end-of-text .ds Rf \v'-.4m'\s-3[\\n+[ref*nr]]\s0\v'.4m' +.\" .\" start reference .de RS .if !''\\$1' .ds \\$1 \\n[ref*nr] +.nr ref*flag 1 .ev ref*ev .da ref*div .init@reset @@ -2181,11 +2241,35 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .di .ev .. +.\"----------- .de RP .if !d ref*div .@error "RP: No references!" +.nr ref*flag 0 .nr ref*i 0\\$2 .if \\n[ref*i]<2 .SK .SP 2 +.ref@print-refs +.if 0\\$1<1 .nr ref*nr 0 1 +.if ((\\n[ref*i]=0):(\\n[ref*i]=2)) .SK +.. +.\"----------- +.\" called by end-of-text! +.de ref@eot-print +.if \\n[ref*flag] \{\ +. if \\n[D]>2 .tm Print references, called by eot +. nr ref*flag 0 +. br +. misc@ev-keep ne +. init@reset +\c +' bp +. ev +. ref@print-refs +.\} +.. +.\"----------- +.\" prints the references +.de ref@print-refs .toc@save 1 "" "\\*[Rp]" \\n[%] .ev ref*ev .ce @@ -2195,10 +2279,8 @@ in=\\n[.i] fi=\\n[.u] .d=\\n[.d] nl=\\n[nl] pg=\\n[%] .nf .ref*div .in -.if 0\\$1<1 .nr ref*nr 0 1 .rm ref*div .ev -.if ((\\n[ref*i]=0):(\\n[ref*i]=2)) .SK .. .\"########################### module app ############################ .\" diff --git a/nroff/Makefile.sub b/nroff/Makefile.sub index 40a7fd671..096c046c8 100644 --- a/nroff/Makefile.sub +++ b/nroff/Makefile.sub @@ -1,9 +1,17 @@ MAN1=nroff.n NAMEPREFIX=$(g) +CLEANADD=nroff -install_data: nroff.sh +all: nroff + +nroff: nroff.sh + rm -f $@ + sed "$(SH_SCRIPT_SED_CMD)" $(srcdir)/nroff.sh >$@ + chmod +x $@ + +install_data: nroff -rm -f $(bindir)/$(NAMEPREFIX)nroff - $(INSTALL_PROGRAM) $(srcdir)/nroff.sh $(bindir)/$(NAMEPREFIX)nroff + $(INSTALL_PROGRAM) nroff $(bindir)/$(NAMEPREFIX)nroff uninstall_sub: -rm -f $(bindir)/$(NAMEPREFIX)nroff diff --git a/nroff/conftest.sh b/nroff/conftest.sh new file mode 100755 index 000000000..71d21b982 --- /dev/null +++ b/nroff/conftest.sh @@ -0,0 +1,4 @@ +#!/bin/csh +true || exit 0 +export PATH || exit 0 +exit 1 diff --git a/nroff/nroff.sh b/nroff/nroff.sh index 98e9bbec4..1be695995 100755 --- a/nroff/nroff.sh +++ b/nroff/nroff.sh @@ -2,6 +2,7 @@ # Emulate nroff with groff. prog="$0" +# Default device. T=-Tascii opts= diff --git a/pic/lex.cc b/pic/lex.cc index a7871f36f..a066533b5 100644 --- a/pic/lex.cc +++ b/pic/lex.cc @@ -477,8 +477,8 @@ int lookup_keyword(const char *str, int len) "ljust", LJUST, "log", LOG, "lower", LOWER, - "max", MAX, - "min", MIN, + "max", K_MAX, + "min", K_MIN, "move", MOVE, "of", OF, "plot", PLOT, diff --git a/pic/pic.cc b/pic/pic.cc index feb583db0..92016512e 100644 --- a/pic/pic.cc +++ b/pic/pic.cc @@ -1,121 +1,8 @@ - -/* A Bison parser, made from pic.y */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define LABEL 258 -#define VARIABLE 259 -#define NUMBER 260 -#define TEXT 261 -#define COMMAND_LINE 262 -#define DELIMITED 263 -#define ORDINAL 264 -#define TH 265 -#define LEFT_ARROW_HEAD 266 -#define RIGHT_ARROW_HEAD 267 -#define DOUBLE_ARROW_HEAD 268 -#define LAST 269 -#define UP 270 -#define DOWN 271 -#define LEFT 272 -#define RIGHT 273 -#define BOX 274 -#define CIRCLE 275 -#define ELLIPSE 276 -#define ARC 277 -#define LINE 278 -#define ARROW 279 -#define MOVE 280 -#define SPLINE 281 -#define HEIGHT 282 -#define RADIUS 283 -#define WIDTH 284 -#define DIAMETER 285 -#define FROM 286 -#define TO 287 -#define AT 288 -#define WITH 289 -#define BY 290 -#define THEN 291 -#define DOTTED 292 -#define DASHED 293 -#define CHOP 294 -#define SAME 295 -#define INVISIBLE 296 -#define LJUST 297 -#define RJUST 298 -#define ABOVE 299 -#define BELOW 300 -#define OF 301 -#define THE 302 -#define WAY 303 -#define BETWEEN 304 -#define AND 305 -#define HERE 306 -#define DOT_N 307 -#define DOT_E 308 -#define DOT_W 309 -#define DOT_S 310 -#define DOT_NE 311 -#define DOT_SE 312 -#define DOT_NW 313 -#define DOT_SW 314 -#define DOT_C 315 -#define DOT_START 316 -#define DOT_END 317 -#define DOT_X 318 -#define DOT_Y 319 -#define DOT_HT 320 -#define DOT_WID 321 -#define DOT_RAD 322 -#define SIN 323 -#define COS 324 -#define ATAN2 325 -#define LOG 326 -#define EXP 327 -#define SQRT 328 -#define MAX 329 -#define MIN 330 -#define INT 331 -#define RAND 332 -#define COPY 333 -#define THRU 334 -#define TOP 335 -#define BOTTOM 336 -#define UPPER 337 -#define LOWER 338 -#define SH 339 -#define PRINT 340 -#define CW 341 -#define CCW 342 -#define FOR 343 -#define DO 344 -#define IF 345 -#define ELSE 346 -#define ANDAND 347 -#define OROR 348 -#define NOTEQUAL 349 -#define EQUALEQUAL 350 -#define LESSEQUAL 351 -#define GREATEREQUAL 352 -#define LEFT_CORNER 353 -#define RIGHT_CORNER 354 -#define CENTER 355 -#define END 356 -#define START 357 -#define RESET 358 -#define UNTIL 359 -#define PLOT 360 -#define THICKNESS 361 -#define FILL 362 -#define ALIGNED 363 -#define SPRINTF 364 -#define COMMAND 365 -#define DEFINE 366 -#define UNDEF 367 - -#line 19 "pic.y" - +#ifndef lint +static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90"; +#endif +#define YYBYACC 1 +#line 20 "/u/jjc/groff/pic/pic.y" #include "pic.h" #include "ptable.h" #include "object.h" @@ -140,10 +27,6 @@ extern "C" { /* Maximum number of characters produced by printf("%g") */ #define GDIGITS 14 -#ifndef __BORLANDC__ -#define YYDEBUG 1 -#endif /* __BORLANDC__ */ - int yylex(); void yyerror(const char *); @@ -170,8 +53,7 @@ const char *object_type_name(object_type type); char *format_number(const char *form, double n); char *do_sprintf(const char *form, const double *v, int nv); - -#line 77 "pic.y" +#line 73 "/u/jjc/groff/pic/pic.y" typedef union { char *str; int n; @@ -190,1323 +72,3485 @@ typedef union { graphics_state state; object_type obtype; } YYSTYPE; - -#ifndef YYLTYPE -typedef - struct yyltype - { - int timestamp; - int first_line; - int first_column; - int last_line; - int last_column; - char *text; - } - yyltype; - -#define YYLTYPE yyltype -#endif - -#include <stdio.h> - -#ifndef __STDC__ -#define const -#endif - - - -#define YYFINAL 404 -#define YYFLAG -32768 -#define YYNTBASE 134 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 367 ? yytranslate[x] : 179) - -static const short yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 123, 2, 2, 2, 122, 2, 2, 113, - 132, 120, 118, 115, 119, 133, 121, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 127, 125, 116, - 126, 117, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 130, 2, 131, 124, 2, 114, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 128, 2, 129, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112 +#line 76 "y.tab.c" +#define LABEL 257 +#define VARIABLE 258 +#define NUMBER 259 +#define TEXT 260 +#define COMMAND_LINE 261 +#define DELIMITED 262 +#define ORDINAL 263 +#define TH 264 +#define LEFT_ARROW_HEAD 265 +#define RIGHT_ARROW_HEAD 266 +#define DOUBLE_ARROW_HEAD 267 +#define LAST 268 +#define UP 269 +#define DOWN 270 +#define LEFT 271 +#define RIGHT 272 +#define BOX 273 +#define CIRCLE 274 +#define ELLIPSE 275 +#define ARC 276 +#define LINE 277 +#define ARROW 278 +#define MOVE 279 +#define SPLINE 280 +#define HEIGHT 281 +#define RADIUS 282 +#define WIDTH 283 +#define DIAMETER 284 +#define FROM 285 +#define TO 286 +#define AT 287 +#define WITH 288 +#define BY 289 +#define THEN 290 +#define DOTTED 291 +#define DASHED 292 +#define CHOP 293 +#define SAME 294 +#define INVISIBLE 295 +#define LJUST 296 +#define RJUST 297 +#define ABOVE 298 +#define BELOW 299 +#define OF 300 +#define THE 301 +#define WAY 302 +#define BETWEEN 303 +#define AND 304 +#define HERE 305 +#define DOT_N 306 +#define DOT_E 307 +#define DOT_W 308 +#define DOT_S 309 +#define DOT_NE 310 +#define DOT_SE 311 +#define DOT_NW 312 +#define DOT_SW 313 +#define DOT_C 314 +#define DOT_START 315 +#define DOT_END 316 +#define DOT_X 317 +#define DOT_Y 318 +#define DOT_HT 319 +#define DOT_WID 320 +#define DOT_RAD 321 +#define SIN 322 +#define COS 323 +#define ATAN2 324 +#define LOG 325 +#define EXP 326 +#define SQRT 327 +#define K_MAX 328 +#define K_MIN 329 +#define INT 330 +#define RAND 331 +#define COPY 332 +#define THRU 333 +#define TOP 334 +#define BOTTOM 335 +#define UPPER 336 +#define LOWER 337 +#define SH 338 +#define PRINT 339 +#define CW 340 +#define CCW 341 +#define FOR 342 +#define DO 343 +#define IF 344 +#define ELSE 345 +#define ANDAND 346 +#define OROR 347 +#define NOTEQUAL 348 +#define EQUALEQUAL 349 +#define LESSEQUAL 350 +#define GREATEREQUAL 351 +#define LEFT_CORNER 352 +#define RIGHT_CORNER 353 +#define CENTER 354 +#define END 355 +#define START 356 +#define RESET 357 +#define UNTIL 358 +#define PLOT 359 +#define THICKNESS 360 +#define FILL 361 +#define ALIGNED 362 +#define SPRINTF 363 +#define COMMAND 364 +#define DEFINE 365 +#define UNDEF 366 +#define YYERRCODE 256 +short yylhs[] = { -1, + 0, 0, 16, 17, 17, 28, 28, 29, 29, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 31, 30, + 30, 32, 33, 30, 34, 35, 30, 36, 30, 30, + 37, 30, 30, 30, 38, 38, 38, 26, 26, 27, + 27, 27, 39, 7, 23, 23, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, + 15, 15, 15, 15, 40, 42, 15, 15, 41, 41, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 43, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 25, 25, 24, 24, 19, 19, + 6, 6, 6, 6, 6, 6, 44, 44, 5, 5, + 13, 13, 13, 13, 13, 14, 14, 14, 22, 22, + 21, 21, 8, 8, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 11, 11, 12, 12, 12, 10, 10, + 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, }; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 8, 10, 14, 15, 17, 19, 22, - 26, 31, 33, 35, 37, 39, 41, 44, 47, 48, - 52, 55, 56, 57, 65, 66, 67, 74, 75, 86, - 88, 89, 94, 96, 98, 101, 104, 108, 110, 113, - 115, 117, 119, 120, 126, 127, 130, 132, 134, 138, - 142, 146, 150, 154, 158, 162, 166, 169, 170, 173, - 177, 179, 184, 189, 194, 195, 196, 203, 205, 206, - 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, - 229, 233, 234, 239, 243, 247, 251, 255, 258, 261, - 265, 268, 272, 275, 279, 282, 286, 290, 294, 298, - 302, 306, 309, 312, 316, 319, 323, 326, 330, 333, - 337, 340, 343, 346, 349, 352, 355, 358, 361, 364, - 367, 370, 373, 377, 380, 382, 388, 389, 393, 395, - 397, 399, 403, 407, 413, 419, 426, 428, 433, 437, - 441, 443, 446, 449, 453, 455, 457, 459, 463, 465, - 469, 471, 474, 477, 480, 482, 484, 486, 488, 490, - 492, 494, 497, 499, 502, 506, 508, 510, 513, 515, - 520, 524, 528, 531, 533, 535, 537, 539, 541, 543, - 545, 547, 549, 551, 553, 555, 557, 559, 561, 564, - 567, 570, 573, 575, 577, 580, 583, 586, 589, 591, - 593, 595, 597, 599, 602, 605, 608, 611, 614, 618, - 622, 626, 630, 634, 638, 641, 645, 650, 655, 662, - 667, 672, 677, 684, 691, 696, 701, 705, 709, 713, - 717, 721, 725, 729, 733, 737 +short yylen[] = { 2, + 1, 1, 3, 1, 3, 0, 1, 1, 2, 3, + 4, 1, 1, 1, 1, 1, 2, 2, 0, 3, + 2, 0, 0, 7, 0, 0, 6, 0, 10, 1, + 0, 4, 1, 1, 2, 2, 3, 1, 2, 1, + 1, 1, 0, 5, 0, 2, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 0, 2, 3, + 1, 4, 4, 4, 0, 0, 6, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 3, 0, 4, 3, 3, 3, 3, 2, 2, 3, + 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, + 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 1, 5, 0, 3, 1, 1, + 1, 3, 3, 5, 5, 6, 1, 4, 3, 3, + 1, 2, 2, 3, 1, 1, 1, 3, 1, 3, + 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 2, 3, 1, 1, 2, 1, 4, + 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 2, 3, 4, 4, 6, 4, + 4, 4, 6, 6, 4, 4, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, }; - -#endif - -static const short yyrhs[] = { 137, - 0, 135, 0, 137, 136, 137, 0, 156, 0, 136, - 138, 156, 0, 0, 138, 0, 125, 0, 138, 125, - 0, 4, 126, 153, 0, 4, 127, 126, 153, 0, - 15, 0, 16, 0, 17, 0, 18, 0, 7, 0, - 110, 148, 0, 85, 148, 0, 0, 84, 140, 8, - 0, 78, 6, 0, 0, 0, 78, 6, 79, 141, - 8, 142, 152, 0, 0, 0, 78, 79, 143, 8, - 144, 152, 0, 0, 88, 4, 126, 178, 32, 178, - 155, 89, 145, 8, 0, 150, 0, 0, 150, 91, - 146, 8, 0, 147, 0, 103, 0, 103, 4, 0, - 147, 4, 0, 147, 115, 4, 0, 149, 0, 148, - 149, 0, 178, 0, 162, 0, 164, 0, 0, 90, - 153, 36, 151, 8, 0, 0, 104, 6, 0, 178, - 0, 154, 0, 162, 95, 162, 0, 162, 94, 162, - 0, 154, 92, 154, 0, 154, 92, 178, 0, 178, - 92, 154, 0, 154, 93, 154, 0, 154, 93, 178, - 0, 178, 93, 154, 0, 123, 154, 0, 0, 35, - 178, 0, 35, 120, 178, 0, 160, 0, 3, 127, - 137, 156, 0, 3, 127, 137, 165, 0, 3, 127, - 137, 168, 0, 0, 0, 128, 157, 135, 129, 158, - 159, 0, 139, 0, 0, 156, 0, 19, 0, 20, - 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, - 0, 26, 0, 162, 0, 105, 178, 0, 105, 178, - 162, 0, 0, 130, 161, 135, 131, 0, 160, 27, - 178, 0, 160, 28, 178, 0, 160, 29, 178, 0, - 160, 30, 178, 0, 160, 178, 0, 160, 15, 0, - 160, 15, 178, 0, 160, 16, 0, 160, 16, 178, - 0, 160, 18, 0, 160, 18, 178, 0, 160, 17, - 0, 160, 17, 178, 0, 160, 31, 164, 0, 160, - 32, 164, 0, 160, 33, 164, 0, 160, 34, 176, - 0, 160, 35, 167, 0, 160, 36, 0, 160, 37, - 0, 160, 37, 178, 0, 160, 38, 0, 160, 38, - 178, 0, 160, 107, 0, 160, 107, 178, 0, 160, - 39, 0, 160, 39, 178, 0, 160, 40, 0, 160, - 41, 0, 160, 11, 0, 160, 12, 0, 160, 13, - 0, 160, 86, 0, 160, 87, 0, 160, 162, 0, - 160, 42, 0, 160, 43, 0, 160, 44, 0, 160, - 45, 0, 160, 106, 178, 0, 160, 108, 0, 6, - 0, 109, 113, 6, 163, 132, 0, 0, 163, 115, - 178, 0, 165, 0, 168, 0, 167, 0, 164, 118, - 167, 0, 164, 119, 167, 0, 113, 164, 115, 164, - 132, 0, 178, 166, 164, 50, 164, 0, 178, 116, - 164, 115, 164, 117, 0, 49, 0, 46, 47, 48, - 49, 0, 178, 115, 178, 0, 113, 167, 132, 0, - 169, 0, 169, 177, 0, 177, 169, 0, 177, 46, - 169, 0, 51, 0, 3, 0, 172, 0, 169, 133, - 3, 0, 9, 0, 114, 153, 10, 0, 14, 0, - 170, 14, 0, 170, 173, 0, 171, 173, 0, 19, - 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, - 0, 26, 0, 130, 131, 0, 6, 0, 133, 3, - 0, 174, 133, 3, 0, 177, 0, 174, 0, 174, - 177, 0, 175, 0, 9, 14, 173, 175, 0, 14, - 173, 175, 0, 9, 173, 175, 0, 3, 175, 0, - 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, - 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, - 62, 0, 80, 0, 81, 0, 17, 0, 18, 0, - 82, 17, 0, 83, 17, 0, 82, 18, 0, 83, - 18, 0, 98, 0, 99, 0, 82, 98, 0, 83, - 98, 0, 82, 99, 0, 83, 99, 0, 100, 0, - 102, 0, 101, 0, 4, 0, 5, 0, 168, 63, - 0, 168, 64, 0, 168, 65, 0, 168, 66, 0, - 168, 67, 0, 178, 118, 178, 0, 178, 119, 178, - 0, 178, 120, 178, 0, 178, 121, 178, 0, 178, - 122, 178, 0, 178, 124, 178, 0, 119, 178, 0, - 113, 153, 132, 0, 68, 113, 153, 132, 0, 69, - 113, 153, 132, 0, 70, 113, 153, 115, 153, 132, - 0, 71, 113, 153, 132, 0, 72, 113, 153, 132, - 0, 73, 113, 153, 132, 0, 74, 113, 153, 115, - 153, 132, 0, 75, 113, 153, 115, 153, 132, 0, - 76, 113, 153, 132, 0, 77, 113, 153, 132, 0, - 77, 113, 132, 0, 178, 116, 178, 0, 178, 96, - 178, 0, 178, 117, 178, 0, 178, 97, 178, 0, - 178, 95, 178, 0, 178, 94, 178, 0, 178, 92, - 178, 0, 178, 93, 178, 0, 123, 178, 0 +short yydefred[] = { 0, + 8, 0, 2, 0, 0, 0, 0, 125, 16, 12, + 13, 14, 15, 71, 72, 73, 74, 75, 76, 77, + 78, 0, 19, 0, 0, 0, 0, 0, 0, 0, + 65, 82, 0, 4, 0, 0, 79, 68, 0, 9, + 0, 0, 0, 0, 25, 0, 146, 202, 203, 149, + 151, 187, 188, 145, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 185, 186, 0, 0, 193, + 194, 199, 201, 200, 0, 0, 0, 0, 0, 131, + 129, 147, 0, 0, 0, 0, 0, 0, 41, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 31, 3, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 0, 0, 0, 111, 112, + 119, 120, 121, 122, 116, 117, 0, 0, 124, 0, + 118, 36, 0, 0, 10, 0, 22, 0, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 191, 195, 197, 190, 192, 196, 198, 0, 0, 0, + 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 205, 206, 207, 208, 0, + 142, 0, 0, 163, 155, 156, 157, 158, 159, 160, + 161, 0, 154, 152, 153, 39, 0, 0, 57, 0, + 0, 0, 43, 0, 0, 0, 0, 81, 127, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 166, 100, 0, 169, 0, 0, 101, 0, 0, 0, + 0, 0, 37, 0, 0, 0, 0, 0, 0, 62, + 0, 11, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 227, 0, 216, 140, 0, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 132, + 133, 162, 0, 0, 53, 0, 0, 0, 0, 0, + 51, 0, 0, 50, 49, 0, 66, 83, 32, 173, + 0, 0, 0, 164, 0, 168, 0, 0, 23, 0, + 217, 218, 0, 220, 221, 222, 0, 0, 225, 226, + 0, 0, 0, 0, 0, 44, 0, 126, 0, 0, + 172, 171, 165, 0, 0, 27, 0, 0, 0, 134, + 138, 0, 0, 0, 0, 70, 67, 170, 24, 46, + 219, 223, 224, 136, 0, 0, 0, 0, 28, 0, + 0, 29, }; - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 273, 275, 283, 288, 291, 295, 297, 300, 302, 305, - 311, 323, 325, 327, 329, 331, 336, 341, 346, 349, - 354, 361, 364, 366, 374, 377, 379, 386, 389, 395, - 403, 406, 417, 418, 422, 425, 427, 431, 434, 452, - 460, 462, 470, 474, 477, 480, 484, 487, 491, 498, - 504, 506, 508, 510, 512, 514, 516, 521, 524, 526, - 530, 545, 547, 555, 561, 567, 574, 577, 585, 588, - 592, 597, 601, 605, 610, 617, 624, 631, 638, 643, - 648, 655, 670, 682, 688, 694, 700, 706, 725, 732, - 739, 746, 753, 760, 767, 774, 781, 788, 803, 815, - 821, 828, 840, 846, 852, 858, 864, 869, 875, 891, - 908, 913, 918, 923, 928, 933, 938, 943, 950, 959, - 968, 977, 986, 992, 999, 1004, 1014, 1021, 1042, 1045, - 1053, 1056, 1061, 1066, 1071, 1076, 1083, 1085, 1088, 1091, - 1095, 1098, 1104, 1110, 1116, 1124, 1135, 1139, 1147, 1150, - 1157, 1160, 1164, 1179, 1195, 1198, 1200, 1202, 1204, 1206, - 1208, 1210, 1212, 1216, 1221, 1228, 1236, 1240, 1247, 1253, - 1259, 1265, 1271, 1279, 1282, 1284, 1286, 1288, 1290, 1292, - 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, - 1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332, - 1334, 1338, 1347, 1349, 1356, 1363, 1370, 1377, 1384, 1386, - 1388, 1390, 1398, 1406, 1419, 1421, 1423, 1432, 1441, 1454, - 1463, 1472, 1481, 1483, 1485, 1487, 1489, 1495, 1497, 1499, - 1501, 1503, 1505, 1507, 1509, 1511 +short yydgoto[] = { 2, + 105, 179, 107, 396, 90, 91, 33, 92, 93, 262, + 263, 264, 108, 95, 34, 3, 35, 36, 96, 223, + 97, 98, 376, 336, 109, 100, 101, 241, 5, 38, + 46, 283, 374, 158, 350, 401, 243, 39, 329, 114, + 387, 369, 115, 202, }; - -static const char * const yytname[] = { "$","error","$illegal.","LABEL","VARIABLE", -"NUMBER","TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD", -"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX", -"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS","WIDTH", -"DIAMETER","FROM","TO","AT","WITH","BY","THEN","DOTTED","DASHED","CHOP","SAME", -"INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE","WAY","BETWEEN","AND", -"HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE","DOT_NW","DOT_SW","DOT_C", -"DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT","DOT_WID","DOT_RAD","SIN","COS", -"ATAN2","LOG","EXP","SQRT","MAX","MIN","INT","RAND","COPY","THRU","TOP","BOTTOM", -"UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR", -"NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER", -"CENTER","END","START","RESET","UNTIL","PLOT","THICKNESS","FILL","ALIGNED","SPRINTF", -"COMMAND","DEFINE","UNDEF","'('","'`'","','","'<'","'>'","'+'","'-'","'*'","'/'", -"'%'","'!'","'^'","';'","'='","':'","'{'","'}'","'['","']'","')'","'.'","top", -"element_list","middle_element_list","optional_separator","separator","placeless_element", -"@1","@2","@3","@4","@5","@6","@7","reset_variables","print_args","print_arg", -"simple_if","@8","until","any_expr","text_expr","optional_by","element","@9", -"@10","optional_element","object_spec","@11","text","sprintf_args","position", -"position_not_place","between","expr_pair","place","label","ordinal","optional_ordinal_last", -"nth_primitive","object_type","label_path","relative_path","path","corner","expr", -"" +short yysindex[] = { -52, + 0, 0, 0, 5088, -25, -11, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -243, 0,10878, -206,11047, -204,11505, 19,10878, + 0, 0, -275, 0, -52,10742, 0, 0, -42, 0, + -52,11047, 16, -239, 0, -165, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 93, 98, 106, 108, + 120, 139, 147, 153, 156, 0, 0, -110, 44, 0, + 0, 0, 0, 0,11177,11047,11505,11505, 1055, 0, + 0, 0, -45, -61, 2441, -19, 747, 312, 0,10878, + 0, 152,11047,11047, 1515, -89, -228, -61, -98, 0, + 637, -38,10878, -52, -52, 0, 0, 9673, 0, 0, + 0,11829,11829,11829,11829,11505,11505,11505,11505,11621, +11621,11621, 2099,11726, 0,11829,11829,11829, 0, 0, + 0, 0, 0, 0, 0, 0,11505,11829, 0, 1527, + 0, 0, -41,10520, 0,11047, 0, -32, 0,11047, +11047,11047,11047,11047,11047,11047,11047,11047, 9002, 0, + 0, 0, 0, 0, 0, 0, 0, 1494, 183, 187, + -4, -30, 143, 143, -53, 0,11505,11505,11505,11505, +11505,11505,11505,11621,11505,11505,11505,11505,11505,11505, +11505,11621, -43, 199, 0, 0, 0, 0, 0, -17, + 0,11726,11726, 0, 0, 0, 0, 0, 0, 0, + 0, 168, 0, 0, 0, 0,11505, 143, 0,11047, +11047,11505, 0,11047,11047, -229, -229, 0, 0, 148, + 5088, 171, 15, 0, 1527, 1527, 1527, 1527, 1527, 1527, + 1527, 1527, 1055, -19, -19, -19, 1989, 699, 747, 23, + 0, 0, 2428, 0,11284, 648, 0, 1527, 1527, 1527, + 1527, 1527, 0, -11, 21, 0, 0, 0, -61, 0, + -19, 0, 17, 0, 240, 244, 242, 249, 255, 257, + 256, 258, 260, 0, 262, 0, 0,11621, 0, -9, + -27, 184, 252, 252, 1, 1, 1527, -34, 40, 1, + 155, 155, 143, 143, 143, 143, -22, 199, 0, 0, + 0, 0, 1088, -27, 0, 1048, -40, 1, 42, -27, + 0, 1048, -40, 0, 0, 47, 0, 0, 0, 0, + 747, 1989, 1989, 0, 48, 0, 1076, 187, 0, -51, + 0, 0,11047, 0, 0, 0,11047,11047, 0, 0, + 100, 5,11621,11621,11505, 0,11505, 0, 5088, 1989, + 0, 0, 0, -51, 49, 0, 272, 284, 287, 0, + 0, 30, -19, 1487, 1527, 0, 0, 0, 0, 0, + 0, 0, 0, 0,11385, -14,11505, 1527, 0, 1527, + 72, 0, }; -#endif - -static const short yyr1[] = { 0, - 134, 134, 135, 136, 136, 137, 137, 138, 138, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 140, 139, - 139, 141, 142, 139, 143, 144, 139, 145, 139, 139, - 146, 139, 139, 139, 147, 147, 147, 148, 148, 149, - 149, 149, 151, 150, 152, 152, 153, 153, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 155, 155, 155, - 156, 156, 156, 156, 157, 158, 156, 156, 159, 159, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 161, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 162, 162, 163, 163, 164, 164, - 165, 165, 165, 165, 165, 165, 166, 166, 167, 167, - 168, 168, 168, 168, 168, 169, 169, 169, 170, 170, - 171, 171, 172, 172, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 174, 174, 175, 175, 175, 176, 176, - 176, 176, 176, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178 +short yyrindex[] = { 219, + 0, 0, 0, 344, 109, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, + 0, 0, 57, 0, 65, 58, 0, 0, 390, 0, +10629, 0, 0, 412, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9146, 0, + 0, 0, 0, 4421, 8691, 9247, 0, 0, 0, 500, + 0, 0, 0, 0, 411, 0, 564, 0, 0, 0, +10123, 0, 508, 5512, 5512, 0, 0, 122, 0, 0, + 0, 66, 9595, 9353, 9486, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9700, 9804, 9909, 0, 0, + 0, 0, 0, 0, 0, 0, 0,10013, 0, 4967, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 304, 0, 227, + 0, 0, 469, 577, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,10455, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5284, 5391, 5708, 5815, 6132, 6239, + 6556, 6663, 0, 6980, 7087, 7404, 0, 0, 0, 0, + 0, 0, 8873, 0, 0, 0, 0, 7511, 7828, 7935, + 8252, 8359, 0,10222, 1933, 1729, 3046, 919, 947, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3982, 4089, 3211, 3543, 2226, 2333, 4860, 8766, 0, 2665, + 1787, 1894, 909, 1016, 1348, 1455, 0, 3650, 0, 0, + 0, 0, 0, 8845, 0, 27, 28, 2772, 0, 140, + 0, 194, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 304, 0, 0, 547, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 575, 0, + 0, 0, 0, 547, 0, 0, 0, 0, 0, 0, + 0, 0, 4528, 33, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, + 0, 0, }; - -static const short yyr2[] = { 0, - 1, 1, 3, 1, 3, 0, 1, 1, 2, 3, - 4, 1, 1, 1, 1, 1, 2, 2, 0, 3, - 2, 0, 0, 7, 0, 0, 6, 0, 10, 1, - 0, 4, 1, 1, 2, 2, 3, 1, 2, 1, - 1, 1, 0, 5, 0, 2, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 0, 2, 3, - 1, 4, 4, 4, 0, 0, 6, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 3, 0, 4, 3, 3, 3, 3, 2, 2, 3, - 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, - 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 1, 5, 0, 3, 1, 1, - 1, 3, 3, 5, 5, 6, 1, 4, 3, 3, - 1, 2, 2, 3, 1, 1, 1, 3, 1, 3, - 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 2, 3, 1, 1, 2, 1, 4, - 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 3, 2, 3, 4, 4, 6, 4, - 4, 4, 6, 6, 4, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2 +short yygindex[] = { 0, + -24, 498, -99, 0, -56, 237, 0, 0, -59, 0, + 0, -215, 515, -74, -117, 161, 0, 0, 1810, -73, + 0, 0, 18, 0, 26, 368, -68, 14, 364, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, }; - -static const short yydefact[] = { 6, - 8, 2, 1, 7, 0, 0, 125, 16, 12, 13, - 14, 15, 71, 72, 73, 74, 75, 76, 77, 78, - 0, 19, 0, 0, 0, 34, 0, 0, 0, 65, - 82, 6, 68, 33, 30, 4, 61, 79, 9, 6, - 0, 0, 21, 25, 0, 146, 202, 203, 149, 151, - 187, 188, 145, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 186, 0, 0, 193, 194, - 199, 201, 200, 0, 0, 0, 0, 18, 38, 41, - 42, 129, 131, 130, 141, 0, 0, 147, 0, 40, - 0, 0, 0, 0, 48, 0, 0, 47, 35, 80, - 0, 17, 6, 6, 3, 7, 36, 0, 31, 113, - 114, 115, 89, 91, 95, 93, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 103, 105, 109, 111, - 112, 119, 120, 121, 122, 116, 117, 0, 107, 124, - 118, 88, 0, 10, 0, 22, 0, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 191, - 195, 197, 190, 192, 196, 198, 0, 0, 131, 47, - 0, 215, 236, 39, 0, 0, 204, 205, 206, 207, - 208, 0, 142, 163, 152, 155, 156, 157, 158, 159, - 160, 161, 0, 153, 154, 0, 143, 0, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 236, 43, 0, - 0, 0, 0, 0, 0, 0, 81, 127, 0, 0, - 0, 5, 37, 0, 90, 92, 96, 94, 84, 85, - 86, 87, 97, 0, 98, 99, 0, 0, 0, 0, - 167, 169, 100, 166, 0, 101, 0, 104, 106, 110, - 123, 108, 146, 202, 187, 188, 62, 0, 63, 64, - 11, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 227, 0, 216, 0, 140, 150, 132, 133, - 148, 162, 144, 0, 234, 235, 233, 232, 229, 231, - 139, 0, 228, 230, 209, 210, 211, 212, 213, 214, - 0, 0, 0, 51, 52, 54, 55, 50, 49, 53, - 234, 56, 235, 228, 0, 66, 83, 32, 173, 0, - 0, 0, 164, 0, 168, 0, 47, 23, 45, 217, - 218, 0, 220, 221, 222, 0, 0, 225, 226, 0, - 0, 0, 0, 0, 44, 0, 126, 69, 0, 172, - 171, 165, 45, 0, 27, 0, 0, 0, 134, 138, - 0, 135, 58, 128, 70, 67, 170, 24, 46, 219, - 223, 224, 136, 0, 0, 0, 59, 28, 60, 0, - 29, 0, 0, 0 +#define YYTABLESIZE 12185 +short yytable[] = { 89, + 244, 153, 200, 111, 229, 89, 1, 198, 196, 200, + 197, 150, 199, 4, 198, 196, 44, 197, 204, 199, + 212, 34, 213, 212, 225, 213, 235, 56, 180, 37, + 8, 226, 232, 40, 195, 211, 280, 200, 212, 298, + 213, 340, 198, 196, 226, 197, 41, 199, 117, 99, + 86, 102, 86, 110, 154, 99, 30, 61, 112, 201, + 178, 151, 183, 184, 6, 89, 201, 235, 56, 116, + 235, 56, 212, 261, 213, 89, 156, 267, 43, 228, + 34, 42, 212, 363, 213, 235, 56, 368, 89, 45, + 367, 394, 128, 157, 201, 128, 159, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 253, 253, 7, 266, + 160, 268, 269, 270, 34, 30, 61, 234, 235, 235, + 56, 7, 271, 272, 89, 99, 371, 372, 318, 253, + 325, 327, 161, 29, 331, 333, 238, 162, 99, 52, + 380, 7, 212, 37, 213, 163, 34, 164, 7, 30, + 61, 235, 56, 7, 388, 320, 321, 6, 89, 165, + 170, 171, 301, 302, 303, 304, 305, 306, 307, 308, + 310, 311, 312, 313, 314, 315, 316, 253, 166, 37, + 52, 30, 61, 52, 342, 343, 167, 266, 266, 6, + 89, 200, 168, 55, 54, 169, 198, 261, 52, 7, + 233, 199, 323, 346, 7, 324, 326, 328, 348, 330, + 332, 47, 227, 47, 7, 152, 273, 50, 6, 50, + 200, 239, 51, 296, 51, 198, 196, 297, 197, 284, + 199, 7, 52, 299, 55, 54, 201, 55, 54, 319, + 347, 172, 173, 232, 210, 195, 7, 300, 201, 236, + 237, 386, 55, 54, 203, 205, 206, 207, 208, 209, + 322, 334, 335, 338, 52, 185, 37, 370, 186, 131, + 131, 131, 337, 253, 240, 242, 339, 201, 349, 344, + 351, 364, 261, 261, 352, 353, 55, 54, 200, 354, + 235, 56, 362, 198, 196, 355, 197, 356, 199, 357, + 359, 358, 360, 366, 373, 234, 375, 381, 390, 6, + 261, 232, 391, 195, 174, 175, 235, 56, 55, 54, + 189, 190, 191, 192, 392, 89, 235, 393, 399, 235, + 89, 89, 89, 402, 89, 89, 89, 89, 253, 253, + 384, 6, 385, 1, 47, 201, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 7, 7, 7, 7, 7, + 398, 7, 400, 235, 56, 58, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 33, + 278, 389, 59, 60, 37, 176, 177, 113, 118, 0, + 0, 0, 222, 52, 0, 89, 89, 0, 0, 0, + 47, 21, 0, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 89, 89, 89, 89, 52, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 0, 7, 7, 7, 7, 7, 7, 33, 0, + 7, 47, 7, 0, 47, 0, 0, 55, 54, 0, + 7, 7, 7, 7, 7, 7, 0, 7, 215, 47, + 21, 7, 7, 0, 0, 6, 6, 0, 6, 6, + 0, 0, 33, 55, 54, 52, 52, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, + 0, 215, 0, 47, 21, 215, 0, 17, 215, 215, + 215, 215, 215, 215, 33, 215, 0, 0, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 215, 215, 187, + 215, 189, 190, 191, 192, 47, 21, 0, 94, 155, + 55, 54, 0, 0, 94, 0, 45, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 6, 6, 18, 0, + 6, 215, 6, 48, 215, 0, 17, 0, 0, 0, + 0, 214, 0, 0, 69, 6, 236, 6, 0, 224, + 0, 6, 6, 182, 215, 216, 217, 218, 219, 220, + 0, 221, 18, 215, 0, 0, 0, 0, 0, 94, + 17, 191, 192, 0, 48, 45, 0, 48, 0, 236, + 0, 0, 0, 236, 94, 0, 236, 236, 236, 236, + 236, 236, 48, 236, 18, 0, 0, 94, 0, 0, + 0, 0, 17, 69, 0, 236, 236, 0, 236, 45, + 0, 0, 0, 0, 94, 94, 94, 0, 0, 0, + 0, 0, 0, 282, 0, 0, 48, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 295, 69, 279, 236, + 0, 45, 236, 200, 47, 0, 0, 0, 198, 196, + 0, 197, 0, 199, 200, 0, 0, 0, 48, 198, + 196, 193, 197, 0, 199, 0, 232, 0, 195, 69, + 47, 236, 0, 0, 0, 0, 0, 232, 94, 195, + 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, + 0, 0, 0, 0, 0, 215, 215, 215, 215, 0, + 201, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 201, 0, 0, 0, 0, 0, 0, 0, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 0, + 0, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 0, 0, 0, 0, 222, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 0, 0, 215, 215, 215, 215, 0, 0, 215, 215, + 0, 215, 94, 0, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 0, 0, 48, 215, 215, + 215, 215, 0, 236, 236, 236, 236, 222, 0, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 0, + 377, 0, 0, 48, 378, 379, 0, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 94, 94, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 0, 0, 0, 8, 0, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 211, 0, + 236, 236, 236, 236, 0, 0, 236, 236, 63, 236, + 0, 0, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 0, 0, 0, 236, 236, 236, 236, + 0, 211, 0, 0, 0, 211, 64, 0, 211, 211, + 211, 211, 211, 211, 0, 211, 0, 0, 214, 0, + 0, 129, 0, 129, 0, 0, 341, 211, 211, 0, + 211, 215, 216, 217, 218, 219, 220, 63, 221, 0, + 0, 0, 187, 188, 189, 190, 191, 192, 0, 130, + 0, 130, 0, 187, 188, 189, 190, 191, 192, 29, + 0, 211, 0, 0, 211, 64, 214, 0, 0, 0, + 0, 63, 0, 0, 0, 212, 0, 0, 0, 215, + 216, 217, 218, 219, 220, 0, 221, 0, 0, 0, + 0, 0, 0, 211, 0, 0, 0, 0, 0, 64, + 0, 0, 0, 63, 0, 0, 0, 0, 212, 0, + 0, 0, 212, 0, 0, 212, 212, 212, 212, 212, + 212, 0, 212, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 212, 212, 0, 212, 0, 0, + 0, 0, 0, 0, 200, 0, 0, 0, 0, 198, + 196, 200, 197, 0, 199, 0, 198, 196, 193, 197, + 0, 199, 0, 0, 0, 0, 0, 232, 212, 195, + 0, 212, 200, 0, 194, 0, 195, 198, 196, 193, + 197, 0, 199, 0, 200, 0, 0, 0, 0, 198, + 196, 0, 197, 0, 199, 232, 0, 195, 0, 0, + 212, 201, 0, 0, 0, 0, 0, 232, 201, 195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 211, 211, 211, 201, + 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 201, 0, 0, 0, 0, 0, 0, 0, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 0, + 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 0, 0, 211, 211, 211, 211, 0, 0, 211, 211, + 0, 211, 0, 0, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 0, 0, 0, 211, 211, + 211, 211, 212, 212, 212, 212, 0, 0, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 0, 0, + 0, 0, 0, 0, 0, 0, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 0, 0, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 0, 0, 0, 0, 0, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 213, 0, 212, + 212, 212, 212, 0, 185, 212, 212, 186, 212, 0, + 0, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 0, 365, 0, 212, 212, 212, 212, 0, + 213, 0, 0, 0, 213, 0, 0, 213, 213, 213, + 213, 213, 213, 230, 213, 189, 190, 191, 192, 0, + 187, 188, 189, 190, 191, 192, 213, 213, 0, 213, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 231, 189, 190, 191, 192, 0, 0, 0, + 0, 0, 0, 187, 188, 189, 190, 191, 192, 0, + 213, 0, 0, 213, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, + 0, 214, 0, 0, 214, 214, 214, 214, 214, 214, + 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 214, 214, 0, 214, 0, 0, 0, + 0, 0, 0, 200, 0, 0, 0, 0, 198, 196, + 200, 197, 0, 199, 0, 198, 196, 193, 197, 0, + 199, 0, 0, 0, 0, 0, 232, 214, 195, 0, + 214, 200, 0, 194, 0, 195, 198, 196, 0, 197, + 0, 199, 0, 200, 0, 0, 0, 0, 198, 196, + 0, 197, 0, 199, 232, 0, 195, 0, 0, 214, + 201, 0, 0, 0, 0, 0, 232, 201, 195, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 213, 213, 213, 213, 201, 0, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 201, 0, 0, 0, 0, 0, 0, 0, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 0, 0, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 0, 0, 0, 0, 0, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 0, + 0, 213, 213, 213, 213, 0, 0, 213, 213, 0, + 213, 0, 0, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 0, 0, 0, 213, 213, 213, + 213, 214, 214, 214, 214, 0, 0, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 0, 14, 0, + 0, 0, 0, 0, 0, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 0, 0, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 0, 0, 0, 0, 395, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 209, 14, 214, 214, + 214, 214, 0, 185, 214, 214, 186, 214, 0, 0, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 0, 0, 0, 214, 214, 214, 214, 0, 209, + 0, 14, 0, 0, 187, 0, 209, 209, 0, 209, + 209, 209, 187, 188, 189, 190, 191, 192, 0, 230, + 231, 189, 190, 191, 192, 209, 209, 0, 209, 0, + 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, + 230, 231, 189, 190, 191, 192, 0, 0, 0, 0, + 0, 0, 187, 188, 189, 190, 191, 192, 0, 209, + 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 181, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, + 0, 0, 0, 210, 210, 0, 210, 210, 210, 254, + 255, 256, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 210, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 281, 0, 0, 0, 0, 0, 202, + 0, 0, 0, 0, 202, 202, 202, 202, 0, 202, + 0, 0, 0, 0, 0, 187, 210, 0, 0, 210, + 0, 187, 202, 0, 202, 0, 187, 0, 0, 0, + 0, 0, 0, 309, 0, 0, 0, 0, 0, 0, + 0, 317, 0, 0, 0, 0, 0, 0, 210, 0, + 0, 0, 0, 0, 0, 0, 202, 0, 187, 0, + 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 209, 209, 209, 209, 0, 0, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 0, 0, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 0, 0, 0, 0, 361, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 0, 0, + 209, 209, 209, 209, 0, 0, 209, 209, 0, 209, + 0, 0, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 0, 260, 0, 209, 209, 209, 209, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 382, 383, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 0, 0, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 0, 0, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 229, 0, 210, 210, 210, + 210, 0, 202, 210, 210, 202, 210, 0, 0, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 0, 0, 0, 210, 210, 210, 210, 0, 229, 52, + 53, 0, 0, 0, 0, 229, 229, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, + 202, 202, 202, 202, 229, 229, 0, 229, 0, 0, + 0, 0, 0, 0, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, + 0, 229, 76, 77, 78, 79, 0, 0, 0, 0, + 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, + 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 257, 0, 0, 0, 0, + 0, 258, 0, 0, 0, 231, 259, 0, 0, 52, + 53, 0, 231, 231, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 231, 231, 0, 231, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 231, 0, + 0, 0, 76, 77, 78, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 81, 82, 83, 84, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 345, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 229, 229, 229, 210, 0, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 0, 0, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 0, 0, 0, 0, 0, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 0, 0, 229, + 229, 229, 229, 0, 0, 229, 229, 0, 229, 0, + 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 0, 0, 0, 229, 229, 229, 229, 231, + 231, 231, 231, 0, 0, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 231, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, + 231, 231, 231, 0, 0, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 0, + 0, 0, 0, 0, 231, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 230, 0, 231, 231, 231, 231, + 0, 0, 231, 231, 0, 231, 0, 0, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 231, 231, 0, + 0, 0, 231, 231, 231, 231, 0, 230, 52, 53, + 0, 0, 0, 0, 230, 230, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 230, 230, 0, 230, 0, 0, 0, + 0, 0, 0, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 0, 0, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 230, 0, 0, + 230, 76, 77, 78, 79, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 76, 77, 78, 79, 0, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 230, + 0, 0, 80, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 228, 228, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 228, 0, 228, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 230, 230, 230, 0, 0, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 0, 0, 0, 0, 0, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, + 230, 230, 0, 0, 230, 230, 0, 230, 0, 0, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 0, 0, 0, 230, 230, 230, 230, 228, 228, + 228, 228, 0, 0, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 0, 15, 0, 0, 0, 0, + 0, 0, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 0, 0, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 0, 0, + 0, 0, 0, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 143, 15, 228, 228, 228, 228, 0, + 0, 228, 228, 0, 228, 0, 0, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 0, 0, + 0, 228, 228, 228, 228, 0, 143, 0, 15, 0, + 0, 188, 0, 143, 143, 0, 143, 143, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 143, 0, 0, 143, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 143, 0, 0, 143, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, + 233, 233, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 233, 0, 0, 233, 0, 188, 0, + 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 143, 143, 143, 143, 0, 0, 143, 0, 143, 143, + 143, 143, 143, 143, 143, 143, 0, 0, 0, 0, + 0, 0, 0, 0, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 0, 0, 0, 0, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 0, 0, 143, 143, 143, + 143, 0, 0, 143, 143, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 143, 143, 143, 143, 143, + 0, 0, 0, 143, 143, 143, 143, 233, 233, 233, + 233, 0, 0, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 0, 0, 0, 0, 0, 0, 0, + 0, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 0, 0, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 0, 0, 0, + 0, 0, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 232, 0, 233, 233, 233, 233, 0, 0, + 233, 233, 0, 233, 0, 0, 233, 233, 233, 233, + 0, 0, 233, 233, 233, 233, 233, 0, 0, 0, + 233, 233, 233, 233, 0, 232, 0, 0, 0, 0, + 0, 0, 232, 232, 0, 0, 232, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 232, 0, 0, 232, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 144, 0, 0, 0, 0, 0, 0, 144, + 144, 0, 144, 144, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, + 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 144, 0, 0, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, + 232, 232, 232, 0, 0, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 0, 0, 0, 0, 0, + 0, 0, 0, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 0, 0, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 0, + 0, 0, 0, 0, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 0, 0, 232, 232, 232, 232, + 0, 0, 232, 232, 0, 232, 0, 0, 232, 232, + 232, 232, 0, 0, 232, 232, 232, 232, 232, 0, + 0, 0, 232, 232, 232, 232, 144, 144, 144, 144, + 0, 0, 144, 0, 144, 144, 144, 144, 144, 144, + 144, 144, 0, 0, 0, 0, 0, 0, 0, 0, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 0, + 0, 0, 0, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 234, 0, 144, 144, 144, 144, 0, 0, 144, + 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 0, 0, 0, 144, + 144, 144, 144, 0, 234, 0, 0, 0, 0, 0, + 0, 234, 234, 0, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 234, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 235, 0, 0, 0, 0, 0, 0, 235, 235, + 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 235, 0, 0, 235, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 234, 234, + 234, 234, 0, 0, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 0, 0, 0, 0, 0, 0, + 0, 0, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 0, 0, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, 0, 0, + 0, 0, 0, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 0, 0, 234, 234, 234, 234, 0, + 0, 234, 234, 0, 234, 0, 0, 234, 234, 0, + 0, 0, 0, 234, 234, 234, 234, 234, 0, 0, + 0, 234, 234, 234, 234, 235, 235, 235, 235, 0, + 0, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 0, 0, 0, 0, 0, 0, 0, 0, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 0, + 0, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 0, 0, 0, 0, 0, + 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, + 130, 0, 235, 235, 235, 235, 0, 0, 235, 235, + 0, 235, 0, 0, 0, 235, 0, 0, 0, 0, + 235, 235, 235, 235, 235, 0, 0, 0, 235, 235, + 235, 235, 0, 130, 0, 0, 0, 0, 0, 0, + 130, 130, 0, 130, 130, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, + 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 130, 0, 0, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 0, 135, 135, 0, + 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 0, 0, 135, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 135, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, + 130, 0, 0, 130, 0, 130, 130, 130, 130, 130, + 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 0, 0, 0, 0, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 0, 0, 0, + 0, 0, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 0, 0, 130, 130, 130, 130, 0, 0, + 130, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 130, 130, 130, 130, 130, 0, 0, 0, + 130, 130, 130, 130, 135, 135, 135, 135, 0, 0, + 135, 0, 135, 135, 135, 135, 135, 135, 135, 135, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 0, 0, 0, + 0, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 0, 0, 0, 0, 0, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 139, + 0, 135, 135, 135, 135, 0, 0, 135, 135, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 135, 135, 135, 135, 0, 0, 0, 135, 135, 135, + 135, 0, 139, 0, 0, 0, 0, 0, 0, 139, + 139, 0, 0, 139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 139, 0, 0, 139, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 139, 139, 139, 139, + 0, 0, 139, 0, 139, 139, 139, 139, 139, 139, + 139, 139, 0, 0, 0, 0, 0, 0, 0, 0, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 0, + 0, 0, 0, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 0, 0, 32, 0, + 0, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 0, 0, 139, 139, 139, 139, 0, 0, 139, + 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 139, 139, 139, 139, 139, 0, 0, 0, 139, + 139, 139, 139, 88, 88, 88, 88, 0, 0, 88, + 0, 88, 88, 88, 88, 88, 88, 88, 88, 0, + 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 0, 0, 0, 0, + 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 90, 0, 0, 0, 0, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 0, 0, + 88, 88, 88, 88, 0, 0, 88, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 0, 88, 88, + 88, 88, 88, 90, 0, 0, 88, 88, 88, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 0, 6, 7, 0, 8, 9, 0, + 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 0, 0, 90, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 0, 0, 0, 92, 0, 23, 24, 0, 0, 25, + 92, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 28, 0, 0, 92, + 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 90, 90, 90, 0, 0, 90, 0, 90, 90, + 90, 90, 90, 90, 90, 90, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 0, 0, 0, 0, 0, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 0, 0, 6, 0, 0, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 0, 0, 90, 90, 90, + 90, 0, 0, 90, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 90, 90, 90, 90, 90, + 0, 0, 0, 90, 90, 90, 90, 92, 92, 92, + 92, 0, 0, 92, 0, 92, 92, 92, 92, 92, + 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, + 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 96, 0, 0, + 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 0, 0, 92, 92, 92, 92, 0, 0, + 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 92, 92, 92, 92, 92, 96, 0, 0, + 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 6, 6, + 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 94, 0, 6, + 6, 0, 0, 6, 94, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 6, 0, 0, 94, 6, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 96, 96, 96, 0, 0, + 96, 0, 96, 96, 96, 96, 96, 96, 96, 96, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 0, 0, 0, + 0, 0, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 0, 0, 0, 0, 0, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, + 0, 96, 96, 96, 96, 0, 0, 96, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 96, 96, 96, 96, 0, 0, 0, 96, 96, 96, + 96, 94, 94, 94, 94, 0, 0, 94, 0, 94, + 94, 94, 94, 94, 94, 94, 94, 0, 0, 0, + 0, 0, 0, 0, 0, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 0, 0, 0, 0, 0, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 84, 0, 0, 0, 0, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 0, 0, 94, 94, + 94, 94, 0, 0, 94, 94, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 94, 94, 94, 94, + 94, 84, 0, 0, 94, 94, 94, 94, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 0, 0, 0, 0, 0, 0, 85, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 85, 0, 0, 85, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, + 84, 84, 0, 0, 84, 0, 84, 84, 84, 84, + 84, 84, 84, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 0, 0, 0, 0, 0, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 0, 0, + 0, 0, 0, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 0, 0, 84, 84, 84, 84, 0, + 0, 84, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 84, 84, 84, 84, 0, 0, + 0, 84, 84, 84, 84, 85, 85, 85, 85, 0, + 0, 85, 0, 85, 85, 85, 85, 85, 85, 85, + 85, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 0, 0, + 0, 0, 0, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 86, 0, 0, 0, 0, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 0, 0, 85, 85, 85, 85, 0, 0, 85, 85, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, + 85, 85, 85, 85, 85, 86, 0, 0, 85, 85, + 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, + 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 0, 0, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 86, 86, 86, 86, 0, 0, 86, 0, + 86, 86, 86, 86, 86, 86, 86, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 0, 0, 0, 0, 0, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 0, 0, 86, + 86, 86, 86, 0, 0, 86, 86, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 86, 86, + 86, 86, 0, 0, 0, 86, 86, 86, 86, 87, + 87, 87, 87, 0, 0, 87, 0, 87, 87, 87, + 87, 87, 87, 87, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 0, 0, 0, 0, 0, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 97, + 0, 0, 0, 0, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 0, 0, 87, 87, 87, 87, + 0, 0, 87, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 97, 0, 87, 87, 87, 87, 87, 97, + 0, 0, 87, 87, 87, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 97, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, + 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, + 0, 0, 97, 0, 97, 97, 97, 97, 97, 97, + 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, + 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 0, 0, 0, 0, + 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 0, 0, 97, 97, 97, 97, 0, 0, 97, + 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, + 97, 97, 97, 98, 98, 98, 98, 0, 0, 98, + 0, 98, 98, 98, 98, 98, 98, 98, 98, 0, + 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 0, 0, 0, 0, + 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 99, 0, 0, 0, 0, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, + 98, 98, 98, 98, 0, 0, 98, 98, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 98, 98, + 98, 98, 98, 99, 0, 0, 98, 98, 98, 98, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 0, 99, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 104, 0, 0, 104, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 99, 99, 99, 99, 0, 0, 99, 0, 99, 99, + 99, 99, 99, 99, 99, 99, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 0, 0, 0, 0, 0, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 0, 0, 0, 0, 0, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 0, 0, 99, 99, 99, + 99, 0, 0, 99, 99, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 99, 99, 99, 99, + 0, 0, 0, 99, 99, 99, 99, 104, 104, 104, + 104, 0, 0, 104, 0, 104, 104, 104, 104, 104, + 104, 104, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 0, 0, 0, 0, 0, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 106, 0, 0, + 0, 0, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 0, 0, 104, 104, 104, 104, 0, 0, + 104, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 104, 104, 104, 104, 104, 106, 0, 0, + 104, 104, 104, 104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 106, 106, 106, 0, 0, + 106, 0, 106, 106, 106, 106, 106, 106, 106, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 0, 0, 0, + 0, 0, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 0, 0, 0, 0, 0, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 0, + 0, 106, 106, 106, 106, 0, 0, 106, 106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 106, 106, 106, 106, 0, 0, 0, 106, 106, 106, + 106, 110, 110, 110, 110, 0, 0, 110, 0, 110, + 110, 110, 110, 110, 110, 110, 110, 0, 0, 0, + 0, 0, 0, 0, 0, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 0, 0, 0, 0, 0, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 123, 0, 0, 0, 0, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 0, 0, 110, 110, + 110, 110, 0, 0, 110, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 0, 110, 110, 110, 110, + 110, 123, 0, 0, 110, 110, 110, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 123, 0, 0, 123, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, + 123, 123, 0, 0, 123, 0, 123, 123, 123, 123, + 123, 123, 123, 123, 0, 0, 0, 0, 0, 0, + 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, + 123, 0, 0, 0, 0, 0, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 0, 0, + 0, 0, 0, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 0, 0, 123, 123, 123, 123, 0, + 0, 123, 123, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 123, 123, 123, 123, 123, 0, 0, + 0, 123, 123, 123, 123, 108, 108, 108, 108, 0, + 0, 108, 0, 108, 108, 108, 108, 108, 108, 108, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 108, 0, 0, + 0, 0, 0, 108, 108, 108, 108, 108, 108, 108, + 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, + 141, 0, 108, 108, 108, 108, 0, 0, 108, 108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 108, 108, 108, 108, 0, 0, 0, 108, 108, + 108, 108, 0, 141, 0, 0, 0, 0, 0, 0, + 141, 141, 0, 141, 141, 141, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, + 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 141, 0, 0, 141, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 228, 228, 0, 0, 228, + 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 228, 0, 228, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 234, 0, 0, 234, 0, + 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 234, 0, 167, 0, 0, 0, 0, + 0, 0, 167, 0, 0, 0, 0, 167, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 0, 0, 0, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, + 141, 0, 0, 141, 0, 141, 141, 141, 141, 141, + 141, 141, 141, 0, 0, 167, 0, 0, 167, 234, + 0, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 0, 0, 0, 0, 141, 141, 0, 167, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 228, 228, 228, 228, 0, 0, 228, 0, + 141, 141, 0, 228, 104, 0, 228, 228, 0, 0, + 0, 103, 294, 0, 0, 0, 87, 0, 0, 0, + 141, 141, 141, 141, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 0, 0, 0, 0, 0, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 86, 0, 228, + 228, 228, 228, 0, 0, 0, 0, 0, 234, 0, + 0, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 0, 0, 0, 0, 0, 0, 228, 167, + 167, 167, 167, 0, 234, 167, 0, 167, 167, 167, + 167, 167, 167, 0, 234, 40, 0, 234, 0, 0, + 0, 0, 0, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 167, 167, 0, 0, 0, 0, 0, 167, 40, 0, + 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, + 234, 234, 0, 0, 167, 167, 167, 167, 167, 167, + 167, 167, 167, 167, 40, 0, 0, 0, 0, 0, + 0, 0, 167, 167, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 167, 167, 167, 0, 0, 40, 0, + 0, 40, 0, 0, 0, 0, 42, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, + 49, 8, 0, 0, 50, 0, 0, 0, 0, 51, + 40, 0, 52, 53, 0, 0, 0, 0, 0, 42, + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 42, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, + 0, 0, 0, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 0, 0, 76, 77, 78, 79, 42, + 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 80, 81, 82, 83, 84, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 40, 40, 40, 40, 0, 0, 40, 0, + 0, 95, 0, 40, 0, 0, 40, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 0, 0, 0, 0, 0, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 95, 0, 40, + 40, 40, 40, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, + 40, 40, 0, 42, 42, 42, 42, 0, 40, 42, + 0, 0, 0, 0, 42, 0, 0, 42, 42, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, + 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 0, 0, 0, 0, 0, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 93, 0, + 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 0, 42, 42, + 42, 42, 42, 0, 0, 0, 0, 0, 0, 42, + 93, 0, 95, 0, 0, 0, 0, 95, 95, 95, + 0, 95, 95, 95, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 187, 91, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, + 0, 0, 95, 95, 0, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 95, 95, 95, 0, 0, 0, 91, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 93, 93, 93, 0, 93, 93, 93, 93, 103, 0, + 0, 0, 0, 32, 0, 0, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 188, 0, 0, 0, 0, + 0, 0, 103, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 93, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 93, 93, 93, 93, 0, + 0, 0, 0, 0, 91, 0, 0, 0, 0, 91, + 91, 91, 105, 91, 91, 91, 91, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 0, 0, 105, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 6, + 7, 0, 8, 9, 91, 91, 0, 0, 0, 0, + 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 0, 91, 91, 91, 91, 0, 103, + 0, 0, 0, 0, 103, 103, 103, 109, 103, 103, + 103, 103, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 0, + 0, 109, 0, 0, 22, 0, 0, 0, 0, 0, + 23, 24, 107, 0, 25, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 28, 0, 109, 0, 29, 30, 0, 0, 103, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, + 103, 103, 103, 105, 0, 0, 0, 0, 105, 105, + 105, 107, 105, 105, 105, 105, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, + 0, 0, 0, 105, 105, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 0, 80, 105, 105, 105, 105, 0, 109, 0, + 0, 0, 0, 109, 109, 109, 0, 109, 109, 109, + 109, 80, 0, 0, 0, 0, 0, 0, 0, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, + 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 109, 109, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 146, 0, 146, 146, 109, 109, + 109, 109, 107, 0, 0, 0, 0, 107, 107, 107, + 146, 107, 107, 107, 107, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 0, 0, 146, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, + 0, 0, 107, 107, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 107, 107, 107, 107, 0, 0, 0, 80, + 80, 80, 0, 0, 0, 80, 0, 80, 80, 80, + 80, 80, 80, 80, 80, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 0, 0, 0, 0, 0, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 0, + 0, 0, 0, 0, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 236, 0, 80, 80, 80, 80, + 0, 0, 80, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 80, 80, 80, 80, 0, + 0, 0, 80, 80, 80, 0, 0, 0, 0, 0, + 0, 236, 146, 146, 0, 236, 236, 236, 236, 236, + 0, 236, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 236, 236, 0, 236, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 0, 0, 0, 0, 236, 0, 0, + 0, 0, 88, 0, 0, 146, 146, 146, 146, 85, + 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 146, 146, 146, 146, 146, 0, 236, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 86, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 236, 6, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 236, 0, 0, 236, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 88, 0, 274, 275, 49, 8, + 9, 103, 50, 0, 0, 0, 87, 51, 10, 11, + 276, 277, 14, 15, 16, 17, 18, 19, 20, 21, + 236, 236, 236, 236, 236, 236, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 0, 86, 0, 0, + 0, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 22, 0, 76, 77, 78, 79, 23, 24, 0, + 0, 25, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 80, 81, 82, 83, 84, 27, 0, 28, 0, + 0, 0, 29, 30, 0, 6, 6, 6, 6, 6, + 0, 6, 0, 0, 0, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, + 88, 0, 0, 0, 0, 0, 0, 85, 0, 0, + 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 0, 6, 6, 6, 6, 6, 6, 0, 0, + 6, 0, 6, 86, 0, 0, 0, 0, 0, 0, + 6, 6, 6, 6, 6, 6, 0, 6, 0, 0, + 0, 6, 6, 0, 0, 0, 0, 0, 47, 48, + 49, 8, 0, 0, 50, 0, 119, 120, 121, 51, + 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 0, 0, 0, 0, 0, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, + 0, 0, 0, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 0, 0, 76, 77, 78, 79, 104, + 0, 145, 146, 0, 0, 0, 103, 0, 0, 0, + 0, 87, 0, 80, 81, 82, 83, 84, 0, 0, + 0, 147, 148, 149, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 48, 49, 8, 0, 0, + 50, 0, 86, 0, 0, 51, 0, 0, 52, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 0, 0, 0, 0, 0, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 104, + 0, 76, 77, 78, 79, 0, 85, 0, 0, 0, + 0, 87, 0, 0, 0, 0, 0, 0, 0, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 48, 49, 8, 0, 0, 50, + 0, 0, 0, 0, 51, 0, 104, 52, 53, 0, + 0, 0, 0, 265, 0, 0, 0, 0, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 0, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 0, 86, + 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 29, + 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, + 0, 0, 0, 0, 103, 0, 397, 0, 0, 87, + 0, 0, 0, 47, 48, 49, 8, 0, 0, 50, + 0, 0, 0, 0, 51, 0, 0, 52, 53, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 0, 0, 0, 0, 0, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 0, 0, + 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, + 82, 83, 84, 0, 0, 0, 0, 88, 0, 29, + 47, 48, 49, 8, 103, 0, 50, 0, 0, 87, + 0, 51, 0, 0, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 86, 0, 0, 0, 0, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 0, 0, 76, 77, 78, + 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, + 0, 47, 48, 49, 0, 0, 29, 50, 0, 0, + 0, 0, 51, 88, 0, 52, 53, 0, 0, 0, + 85, 0, 0, 0, 0, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 0, 0, 0, 0, 0, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 86, 0, 76, 77, + 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, + 0, 47, 48, 49, 0, 265, 0, 50, 0, 0, + 87, 0, 51, 0, 0, 52, 53, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 86, 0, 0, 0, 0, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 0, 0, 76, 77, + 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, + 84, 88, 0, 0, 0, 0, 0, 0, 103, 0, + 0, 0, 0, 87, 0, 0, 0, 47, 48, 49, + 0, 0, 0, 50, 0, 0, 0, 0, 51, 0, + 0, 52, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, + 0, 0, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 0, 0, 76, 77, 78, 79, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 81, 82, 83, 84, 0, 0, 0, + 0, 0, 47, 48, 49, 0, 0, 0, 50, 0, + 0, 0, 0, 51, 0, 0, 52, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 0, 0, 0, 0, 0, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 0, 0, 76, + 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 80, 81, 82, + 83, 84, 0, 0, 0, 47, 48, 49, 0, 0, + 0, 50, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 0, 0, 76, 77, 78, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 81, 82, 83, 84, }; - -static const short yydefgoto[] = { 402, - 2, 32, 240, 4, 33, 45, 282, 373, 157, 349, - 400, 244, 34, 88, 89, 35, 323, 375, 177, 105, - 395, 36, 113, 368, 386, 37, 114, 106, 335, 91, - 92, 225, 93, 107, 95, 96, 97, 98, 204, 261, - 262, 263, 99, 108 -}; - -static const short yypact[] = { -118, --32768,-32768, 640, -113, -100, -59,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 5,-32768, 860, 28, 972, 30, 1406, -61, 860,-32768, --32768, -118,-32768, 12, -34,-32768, 748,-32768,-32768, -118, - 972, -67, -24,-32768, 71,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, -51, -2, 11, 31, 48, 51, - 55, 73, 91, 92,-32768,-32768, 68, 129,-32768,-32768, --32768,-32768,-32768, 1084, 972, 1406, 1406, 860,-32768,-32768, - -36,-32768,-32768, 192, 1995, -1, 273,-32768, 67, 1987, - 2, 972, 972, 104, -5, 4, 192, 2072,-32768, 592, - 174, 860, -118, -118,-32768, 612,-32768, 202,-32768,-32768, --32768,-32768, 1855, 1855, 1693, 1774, 1406, 1406, 1406, 1406, - 1509, 1509, 1509, 251, 1612,-32768, 1855, 1855, 1855,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 1406, 1855,-32768, --32768, 2105, 494,-32768, 972,-32768, 201,-32768, 972, 972, - 972, 972, 972, 972, 972, 972, 972, 373,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 78, -46, 83, 2020, - 212, 100, 100,-32768, 1612, 1612,-32768,-32768,-32768,-32768, --32768, 222,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 95,-32768,-32768, 34, 96, 183,-32768, 1406, - 1406, 1406, 1406, 1406, 1406, 1406, 1509, 1406, 1406, 1406, - 1406, 1406, 1406, 1406, 1509, 1406,-32768, 100,-32768, 972, - 972, 27, 27, 972, 972, 1406,-32768,-32768, 108, 640, - 110,-32768,-32768, 236, 2105, 2105, 2105, 2105, 2105, 2105, - 2105, 2105, -36, 1987, -36, -36, 1927, 264, 273, 242, - 1941,-32768,-32768,-32768, 1196,-32768, 2030, 2105, 2105, 2105, - 2105, 2105, -100, -59, 53, 54,-32768, -36, 3, 153, --32768, 240,-32768, 119, 135, 146, 143, 144, 150, 159, - 176, 157,-32768, 166,-32768, 1509,-32768,-32768,-32768,-32768, --32768,-32768, 96, 252, 241, 2114, 289, 289, 114, 114, - 2105, -41, 197, 114, 142, 142, 100, 100, 100, 100, - -22, 556, 293,-32768, 241, 228, 2123,-32768,-32768,-32768, - 241, 228, 2123, 114, -76,-32768,-32768,-32768,-32768, 273, - 1927, 1927,-32768, 311,-32768, 83, 2063,-32768, 218,-32768, --32768, 972,-32768,-32768,-32768, 972, 972,-32768,-32768, -72, - 274, 1509, 1509, 1406,-32768, 1406,-32768, 640, 1927,-32768, --32768,-32768, 218, 318,-32768, 193, 194, 195,-32768,-32768, - 15, -36, 1310, 2105,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1299, 239, 1406, 2105,-32768, 2105, 321, --32768, 330, 344,-32768 +short yycheck[] = { 24, + 118, 44, 37, 28, 104, 30, 59, 42, 43, 37, + 45, 36, 47, 0, 42, 43, 260, 45, 93, 47, + 43, 0, 45, 43, 98, 45, 0, 0, 85, 4, + 260, 100, 60, 59, 62, 95, 154, 37, 43, 44, + 45, 257, 42, 43, 113, 45, 58, 47, 35, 24, + 96, 258, 96, 258, 41, 30, 0, 0, 40, 94, + 85, 36, 87, 88, 0, 0, 94, 41, 41, 345, + 44, 44, 43, 133, 45, 100, 61, 134, 58, 104, + 59, 61, 43, 44, 45, 59, 59, 41, 113, 333, + 44, 62, 41, 333, 94, 44, 262, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 0, 134, + 40, 136, 137, 138, 93, 59, 59, 346, 347, 93, + 93, 0, 147, 148, 59, 100, 342, 343, 203, 154, + 230, 231, 40, 363, 234, 235, 111, 40, 113, 0, + 41, 33, 43, 118, 45, 40, 125, 40, 40, 93, + 93, 125, 125, 45, 370, 212, 213, 93, 93, 40, + 271, 272, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 40, 154, + 41, 125, 125, 44, 258, 259, 40, 212, 213, 125, + 125, 37, 40, 0, 0, 40, 42, 257, 59, 91, + 290, 47, 227, 263, 96, 230, 231, 232, 265, 234, + 235, 257, 61, 257, 93, 258, 258, 263, 0, 263, + 37, 260, 268, 41, 268, 42, 43, 41, 45, 262, + 47, 123, 93, 264, 41, 41, 94, 44, 44, 257, + 265, 352, 353, 60, 46, 62, 125, 301, 94, 348, + 349, 369, 59, 59, 300, 317, 318, 319, 320, 321, + 93, 236, 237, 93, 125, 300, 241, 341, 303, 43, + 44, 45, 125, 298, 114, 115, 262, 94, 262, 257, + 41, 304, 342, 343, 41, 44, 93, 93, 37, 41, + 264, 264, 302, 42, 43, 41, 45, 41, 47, 44, + 41, 44, 41, 262, 257, 346, 358, 303, 260, 91, + 370, 60, 41, 62, 271, 272, 290, 290, 125, 125, + 348, 349, 350, 351, 41, 260, 300, 41, 343, 303, + 265, 266, 267, 262, 269, 270, 271, 272, 363, 364, + 365, 123, 367, 0, 41, 94, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 257, 258, 259, 260, 261, + 395, 263, 397, 347, 347, 343, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, + 154, 374, 343, 343, 369, 352, 353, 30, 35, -1, + -1, -1, 91, 264, -1, 340, 341, -1, -1, -1, + 0, 0, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 360, 361, 362, 363, 290, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, -1, 334, 335, 336, 337, 338, 339, 59, -1, + 342, 41, 344, -1, 44, -1, -1, 264, 264, -1, + 352, 353, 354, 355, 356, 357, -1, 359, 0, 59, + 59, 363, 364, -1, -1, 257, 258, -1, 260, 261, + -1, -1, 93, 290, 290, 346, 347, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 0, + -1, 33, -1, 93, 93, 37, -1, 0, 40, 41, + 42, 43, 44, 45, 125, 47, -1, -1, -1, -1, + -1, -1, -1, 26, -1, -1, -1, 59, 60, 346, + 62, 348, 349, 350, 351, 125, 125, -1, 24, 42, + 347, 347, -1, -1, 30, -1, 0, -1, -1, -1, + 332, -1, -1, -1, -1, -1, 338, 339, 59, -1, + 342, 93, 344, 0, 96, -1, 59, -1, -1, -1, + -1, 260, -1, -1, 0, 357, 0, 359, -1, 268, + -1, 363, 364, 86, 273, 274, 275, 276, 277, 278, + -1, 280, 93, 125, -1, -1, -1, -1, -1, 85, + 93, 350, 351, -1, 41, 59, -1, 44, -1, 33, + -1, -1, -1, 37, 100, -1, 40, 41, 42, 43, + 44, 45, 59, 47, 125, -1, -1, 113, -1, -1, + -1, -1, 125, 59, -1, 59, 60, -1, 62, 93, + -1, -1, -1, -1, 130, 131, 132, -1, -1, -1, + -1, -1, -1, 156, -1, -1, 93, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 93, 154, 93, + -1, 125, 96, 37, 264, -1, -1, -1, 42, 43, + -1, 45, -1, 47, 37, -1, -1, -1, 125, 42, + 43, 44, 45, -1, 47, -1, 60, -1, 62, 125, + 290, 125, -1, -1, -1, -1, -1, 60, 194, 62, + -1, -1, -1, -1, -1, -1, 202, -1, -1, -1, + -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, + 94, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 94, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, -1, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, 91, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, -1, 334, 335, 336, 337, -1, -1, 340, 341, + -1, 343, 298, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, 264, 360, 361, + 362, 363, -1, 257, 258, 259, 260, 91, -1, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, + 353, -1, -1, 290, 357, 358, -1, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 363, 364, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, 260, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 0, -1, + 334, 335, 336, 337, -1, -1, 340, 341, 0, 343, + -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, 360, 361, 362, 363, + -1, 33, -1, -1, -1, 37, 0, -1, 40, 41, + 42, 43, 44, 45, -1, 47, -1, -1, 260, -1, + -1, 43, -1, 45, -1, -1, 268, 59, 60, -1, + 62, 273, 274, 275, 276, 277, 278, 59, 280, -1, + -1, -1, 346, 347, 348, 349, 350, 351, -1, 43, + -1, 45, -1, 346, 347, 348, 349, 350, 351, 363, + -1, 93, -1, -1, 96, 59, 260, -1, -1, -1, + -1, 93, -1, -1, -1, 0, -1, -1, -1, 273, + 274, 275, 276, 277, 278, -1, 280, -1, -1, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, 93, + -1, -1, -1, 125, -1, -1, -1, -1, 33, -1, + -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, 59, 60, -1, 62, -1, -1, + -1, -1, -1, -1, 37, -1, -1, -1, -1, 42, + 43, 37, 45, -1, 47, -1, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, 60, 93, 62, + -1, 96, 37, -1, 60, -1, 62, 42, 43, 44, + 45, -1, 47, -1, 37, -1, -1, -1, -1, 42, + 43, -1, 45, -1, 47, 60, -1, 62, -1, -1, + 125, 94, -1, -1, -1, -1, -1, 60, 94, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 257, 258, 259, 260, 94, + -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 94, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, -1, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, -1, 334, 335, 336, 337, -1, -1, 340, 341, + -1, 343, -1, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, 360, 361, + 362, 363, 257, 258, 259, 260, -1, -1, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, + -1, -1, -1, -1, -1, -1, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, -1, -1, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 0, -1, 334, + 335, 336, 337, -1, 300, 340, 341, 303, 343, -1, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, 286, -1, 360, 361, 362, 363, -1, + 33, -1, -1, -1, 37, -1, -1, 40, 41, 42, + 43, 44, 45, 346, 47, 348, 349, 350, 351, -1, + 346, 347, 348, 349, 350, 351, 59, 60, -1, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 346, 347, 348, 349, 350, 351, -1, -1, -1, + -1, -1, -1, 346, 347, 348, 349, 350, 351, -1, + 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, 60, -1, 62, -1, -1, -1, + -1, -1, -1, 37, -1, -1, -1, -1, 42, 43, + 37, 45, -1, 47, -1, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, 60, 93, 62, -1, + 96, 37, -1, 60, -1, 62, 42, 43, -1, 45, + -1, 47, -1, 37, -1, -1, -1, -1, 42, 43, + -1, 45, -1, 47, 60, -1, 62, -1, -1, 125, + 94, -1, -1, -1, -1, -1, 60, 94, 62, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, 94, -1, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 94, -1, -1, -1, -1, -1, -1, -1, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, -1, -1, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, + 343, -1, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, + 363, 257, 258, 259, 260, -1, -1, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, -1, 0, -1, + -1, -1, -1, -1, -1, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, -1, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, -1, 289, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 0, 59, 334, 335, + 336, 337, -1, 300, 340, 341, 303, 343, -1, -1, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, 360, 361, 362, 363, -1, 33, + -1, 93, -1, -1, 96, -1, 40, 41, -1, 43, + 44, 45, 346, 347, 348, 349, 350, 351, -1, 346, + 347, 348, 349, 350, 351, 59, 60, -1, 62, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, + -1, -1, 346, 347, 348, 349, 350, 351, -1, 93, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 0, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, + -1, -1, -1, 40, 41, -1, 43, 44, 45, 130, + 131, 132, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 59, 60, -1, 62, -1, -1, -1, -1, + -1, -1, -1, 154, -1, -1, -1, -1, -1, 37, + -1, -1, -1, -1, 42, 43, 44, 45, -1, 47, + -1, -1, -1, -1, -1, 257, 93, -1, -1, 96, + -1, 263, 60, -1, 62, -1, 268, -1, -1, -1, + -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, + -1, 202, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, 94, -1, 300, -1, + -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, + -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, + -1, -1, -1, -1, -1, -1, -1, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, -1, -1, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, -1, 298, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + 334, 335, 336, 337, -1, -1, 340, 341, -1, 343, + -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, 46, -1, 360, 361, 362, 363, + 257, 258, 259, 260, -1, -1, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, + -1, -1, 363, 364, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, -1, -1, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 0, -1, 334, 335, 336, + 337, -1, 300, 340, 341, 303, 343, -1, -1, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + -1, -1, -1, 360, 361, 362, 363, -1, 33, 271, + 272, -1, -1, -1, -1, 40, 41, -1, -1, 44, + -1, -1, -1, -1, -1, -1, -1, -1, 346, 347, + 348, 349, 350, 351, 59, 60, -1, 62, -1, -1, + -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, 96, 334, 335, 336, 337, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + 125, -1, -1, -1, -1, 257, -1, -1, -1, -1, + -1, 263, -1, -1, -1, 33, 268, -1, -1, 271, + 272, -1, 40, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, 60, -1, 62, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, + -1, -1, 334, 335, 336, 337, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 352, 353, 354, 355, 356, -1, -1, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, 46, -1, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, + -1, -1, -1, -1, -1, -1, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, -1, -1, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, + 335, 336, 337, -1, -1, 340, 341, -1, 343, -1, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, 360, 361, 362, 363, 257, + 258, 259, 260, -1, -1, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, -1, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, -1, 334, 335, 336, 337, + -1, -1, 340, 341, -1, 343, -1, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, 360, 361, 362, 363, -1, 33, 271, 272, + -1, -1, -1, -1, 40, 41, -1, -1, 44, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, 60, -1, 62, -1, -1, -1, + -1, -1, -1, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 93, -1, -1, + 96, 334, 335, 336, 337, -1, -1, -1, -1, -1, + -1, 0, -1, -1, 334, 335, 336, 337, -1, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, 125, + -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, + -1, 40, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, 259, 260, -1, -1, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, + -1, -1, -1, -1, -1, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, -1, -1, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, + 336, 337, -1, -1, 340, 341, -1, 343, -1, -1, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, 360, 361, 362, 363, 257, 258, + 259, 260, -1, -1, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, -1, 0, -1, -1, -1, -1, + -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, -1, -1, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 0, 59, 334, 335, 336, 337, -1, + -1, 340, 341, -1, 343, -1, -1, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, 360, 361, 362, 363, -1, 33, -1, 93, -1, + -1, 96, -1, 40, 41, -1, 43, 44, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 59, -1, -1, 62, -1, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + 40, 41, -1, -1, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 93, -1, -1, 96, -1, 263, -1, + -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 300, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, 259, 260, -1, -1, 263, -1, 265, 266, + 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, + -1, -1, -1, -1, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, -1, -1, -1, -1, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, + 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, + -1, -1, -1, 360, 361, 362, 363, 257, 258, 259, + 260, -1, -1, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, + -1, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, -1, -1, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 0, -1, 334, 335, 336, 337, -1, -1, + 340, 341, -1, 343, -1, -1, 346, 347, 348, 349, + -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, + 360, 361, 362, 363, -1, 33, -1, -1, -1, -1, + -1, -1, 40, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, + 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, + 258, 259, 260, -1, -1, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, -1, -1, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, -1, 334, 335, 336, 337, + -1, -1, 340, 341, -1, 343, -1, -1, 346, 347, + 348, 349, -1, -1, 352, 353, 354, 355, 356, -1, + -1, -1, 360, 361, 362, 363, 257, 258, 259, 260, + -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, + 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, + -1, -1, -1, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 0, -1, 334, 335, 336, 337, -1, -1, 340, + 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 352, 353, 354, 355, 356, -1, -1, -1, 360, + 361, 362, 363, -1, 33, -1, -1, -1, -1, -1, + -1, 40, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, -1, 40, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, + 259, 260, -1, -1, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, + -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, -1, -1, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, + -1, 340, 341, -1, 343, -1, -1, 346, 347, -1, + -1, -1, -1, 352, 353, 354, 355, 356, -1, -1, + -1, 360, 361, 362, 363, 257, 258, 259, 260, -1, + -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, -1, + -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, -1, 334, 335, 336, 337, -1, -1, 340, 341, + -1, 343, -1, -1, -1, 347, -1, -1, -1, -1, + 352, 353, 354, 355, 356, -1, -1, -1, 360, 361, + 362, 363, -1, 33, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33, -1, -1, -1, -1, -1, -1, 40, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, + 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, + 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, + -1, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + -1, -1, -1, -1, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, + 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, + 360, 361, 362, 363, 257, 258, 259, 260, -1, -1, + 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, + -1, -1, -1, -1, -1, -1, -1, -1, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, -1, -1, -1, + -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, + -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 352, + 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, + 363, -1, 33, -1, -1, -1, -1, -1, -1, 40, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, + 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, + -1, -1, -1, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, 91, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, -1, 334, 335, 336, 337, -1, -1, 340, + 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, 352, 353, 354, 355, 356, -1, -1, -1, 360, + 361, 362, 363, 257, 258, 259, 260, -1, -1, 263, + -1, 265, 266, 267, 268, 269, 270, 271, 272, -1, + -1, -1, -1, -1, -1, -1, -1, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, -1, -1, -1, -1, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 0, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + 334, 335, 336, 337, -1, -1, 340, 341, -1, -1, + -1, -1, -1, -1, -1, -1, 33, -1, 352, 353, + 354, 355, 356, 40, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 59, -1, 257, 258, -1, 260, 261, -1, + -1, -1, -1, -1, -1, -1, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, + -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 332, + -1, -1, -1, 33, -1, 338, 339, -1, -1, 342, + 40, 344, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 357, -1, 359, -1, -1, 59, + 363, 364, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, 259, 260, -1, -1, 263, -1, 265, 266, + 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, + -1, -1, -1, -1, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, -1, -1, -1, -1, -1, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 91, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, + 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, 352, 353, 354, 355, 356, + -1, -1, -1, 360, 361, 362, 363, 257, 258, 259, + 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, + 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, + -1, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + -1, -1, -1, -1, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 0, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, + 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, + 33, -1, 352, 353, 354, 355, 356, 40, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, 257, 258, + -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, -1, -1, -1, -1, -1, -1, -1, -1, + 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 332, -1, -1, -1, 33, -1, 338, + 339, -1, -1, 342, 40, 344, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 357, -1, + 359, -1, -1, 59, 363, 364, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, -1, -1, + 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, + -1, -1, -1, -1, -1, -1, -1, -1, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, -1, -1, -1, + -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 352, + 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, + 363, 257, 258, 259, 260, -1, -1, 263, -1, 265, + 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, + -1, -1, -1, -1, -1, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, -1, -1, -1, -1, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, + 336, 337, -1, -1, 340, 341, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, 352, 353, 354, 355, + 356, 40, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, + 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, + 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, + -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, -1, -1, -1, -1, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, + -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 352, 353, 354, 355, 356, -1, -1, + -1, 360, 361, 362, 363, 257, 258, 259, 260, -1, + -1, 263, -1, 265, 266, 267, 268, 269, 270, 271, + 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, -1, -1, + -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 0, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, -1, 334, 335, 336, 337, -1, -1, 340, 341, + -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, + 352, 353, 354, 355, 356, 40, -1, -1, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, -1, -1, 263, -1, + 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, + -1, -1, -1, -1, -1, -1, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, -1, -1, -1, -1, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, + 335, 336, 337, -1, -1, 340, 341, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 352, 353, 354, + 355, 356, -1, -1, -1, 360, 361, 362, 363, 257, + 258, 259, 260, -1, -1, 263, -1, 265, 266, 267, + 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, -1, -1, -1, -1, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, -1, 334, 335, 336, 337, + -1, -1, 340, 341, -1, -1, -1, -1, -1, -1, + -1, -1, 33, -1, 352, 353, 354, 355, 356, 40, + -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, -1, -1, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, + 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, + -1, -1, -1, -1, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, -1, 334, 335, 336, 337, -1, -1, 340, + 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 352, 353, 354, 355, 356, -1, -1, -1, 360, + 361, 362, 363, 257, 258, 259, 260, -1, -1, 263, + -1, 265, 266, 267, 268, 269, 270, 271, 272, -1, + -1, -1, -1, -1, -1, -1, -1, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, -1, -1, -1, -1, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 0, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + 334, 335, 336, 337, -1, -1, 340, 341, -1, -1, + -1, -1, -1, -1, -1, -1, 33, -1, 352, 353, + 354, 355, 356, 40, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, 259, 260, -1, -1, 263, -1, 265, 266, + 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, + -1, -1, -1, -1, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, -1, -1, -1, -1, -1, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, + 337, -1, -1, 340, 341, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, + -1, -1, -1, 360, 361, 362, 363, 257, 258, 259, + 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, + 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, + -1, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + -1, -1, -1, -1, -1, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 0, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, + 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, + 33, -1, 352, 353, 354, 355, 356, 40, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, -1, -1, + 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, + -1, -1, -1, -1, -1, -1, -1, -1, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, -1, -1, -1, + -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + -1, 334, 335, 336, 337, -1, -1, 340, 341, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 352, + 353, 354, 355, 356, -1, -1, -1, 360, 361, 362, + 363, 257, 258, 259, 260, -1, -1, 263, -1, 265, + 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, + -1, -1, -1, -1, -1, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, -1, -1, -1, -1, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, + 336, 337, -1, -1, 340, 341, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, 352, 353, 354, 355, + 356, 40, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, + 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, + 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, + -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, -1, -1, -1, -1, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, 336, 337, -1, + -1, 340, 341, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 352, 353, 354, 355, 356, -1, -1, + -1, 360, 361, 362, 363, 257, 258, 259, 260, -1, + -1, 263, -1, 265, 266, 267, 268, 269, 270, 271, + 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, -1, -1, + -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 0, -1, 334, 335, 336, 337, -1, -1, 340, 341, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 352, 353, 354, 355, 356, -1, -1, -1, 360, 361, + 362, 363, -1, 33, -1, -1, -1, -1, -1, -1, + 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, + -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, + -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, 59, 60, -1, 62, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, -1, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, + 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, + 270, 271, 272, -1, -1, 93, -1, -1, 96, 125, + -1, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + -1, -1, -1, -1, 304, 305, -1, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 257, 258, 259, 260, -1, -1, 263, -1, + 340, 341, -1, 268, 33, -1, 271, 272, -1, -1, + -1, 40, 41, -1, -1, -1, 45, -1, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 96, -1, 334, + 335, 336, 337, -1, -1, -1, -1, -1, 264, -1, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, -1, -1, 363, 257, + 258, 259, 260, -1, 290, 263, -1, 265, 266, 267, + 268, 269, 270, -1, 300, 0, -1, 303, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, -1, -1, -1, -1, -1, 305, 33, -1, + -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, + 346, 347, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 59, -1, -1, -1, -1, -1, + -1, -1, 340, 341, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 360, 361, 362, 363, -1, -1, 93, -1, + -1, 96, -1, -1, -1, -1, 0, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, + 259, 260, -1, -1, 263, -1, -1, -1, -1, 268, + 125, -1, 271, 272, -1, -1, -1, -1, -1, 33, + -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, 336, 337, 93, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, 352, 353, 354, 355, 356, -1, -1, + -1, -1, -1, -1, 363, -1, -1, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, 258, 259, 260, -1, -1, 263, -1, + -1, 59, -1, 268, -1, -1, 271, 272, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 125, -1, 334, + 335, 336, 337, -1, -1, 0, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 352, 353, 354, + 355, 356, -1, 257, 258, 259, 260, -1, 363, 263, + -1, -1, -1, -1, 268, -1, -1, 271, 272, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 93, -1, + 334, 335, 336, 337, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 0, -1, -1, -1, 352, 353, + 354, 355, 356, -1, -1, -1, -1, -1, -1, 363, + 125, -1, 260, -1, -1, -1, -1, 265, 266, 267, + -1, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 59, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, 340, 341, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 360, 361, 362, 363, -1, -1, -1, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, + 265, 266, 267, -1, 269, 270, 271, 272, 59, -1, + -1, -1, -1, 91, -1, -1, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, -1, -1, -1, -1, + -1, -1, 93, -1, -1, 123, -1, -1, -1, -1, + -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 125, 340, 341, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, + -1, -1, -1, -1, 260, -1, -1, -1, -1, 265, + 266, 267, 59, 269, 270, 271, 272, -1, -1, -1, + -1, -1, -1, -1, -1, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, 257, + 258, -1, 260, 261, 340, 341, -1, -1, -1, -1, + -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, -1, 360, 361, 362, 363, -1, 260, + -1, -1, -1, -1, 265, 266, 267, 59, 269, 270, + 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, -1, + -1, 93, -1, -1, 332, -1, -1, -1, -1, -1, + 338, 339, 0, -1, 342, -1, 344, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 357, + -1, 359, -1, 125, -1, 363, 364, -1, -1, 340, + 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 360, + 361, 362, 363, 260, -1, -1, -1, -1, 265, 266, + 267, 59, 269, 270, 271, 272, -1, -1, -1, -1, + -1, -1, -1, -1, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, + -1, -1, -1, 340, 341, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, + -1, -1, 40, 360, 361, 362, 363, -1, 260, -1, + -1, -1, -1, 265, 266, 267, -1, 269, 270, 271, + 272, 59, -1, -1, -1, -1, -1, -1, -1, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, + -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 125, 340, 341, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 43, -1, 45, 46, 360, 361, + 362, 363, 260, -1, -1, -1, -1, 265, 266, 267, + 59, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, 340, 341, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 360, 361, 362, 363, -1, -1, -1, 257, + 258, 259, -1, -1, -1, 263, -1, 265, 266, 267, + 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, + -1, -1, -1, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, -1, -1, -1, -1, -1, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 0, -1, 334, 335, 336, 337, + -1, -1, 340, 341, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 352, 353, 354, 355, 356, -1, + -1, -1, 360, 361, 362, -1, -1, -1, -1, -1, + -1, 37, 271, 272, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, 60, -1, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, -1, -1, -1, -1, 93, -1, -1, + -1, -1, 33, -1, -1, 334, 335, 336, 337, 40, + -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, 352, 353, 354, 355, 356, -1, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 264, 91, + -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 290, -1, -1, -1, -1, -1, + -1, 123, -1, -1, 300, -1, -1, 303, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, 257, 258, 259, 260, + 261, 40, 263, -1, -1, -1, 45, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 346, 347, 348, 349, 350, 351, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, 96, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, -1, 334, 335, 336, 337, 338, 339, -1, + -1, 342, -1, 344, -1, -1, -1, -1, -1, -1, + -1, 352, 353, 354, 355, 356, 357, -1, 359, -1, + -1, -1, 363, 364, -1, 257, 258, 259, 260, 261, + -1, 263, -1, -1, -1, -1, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, + 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, + -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, -1, 334, 335, 336, 337, 338, 339, -1, -1, + 342, -1, 344, 96, -1, -1, -1, -1, -1, -1, + 352, 353, 354, 355, 356, 357, -1, 359, -1, -1, + -1, 363, 364, -1, -1, -1, -1, -1, 257, 258, + 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, + 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, + -1, -1, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, -1, -1, -1, -1, -1, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, 336, 337, 33, + -1, 340, 341, -1, -1, -1, 40, -1, -1, -1, + -1, 45, -1, 352, 353, 354, 355, 356, -1, -1, + -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 258, 259, 260, -1, -1, + 263, -1, 96, -1, -1, 268, -1, -1, 271, 272, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 33, + -1, 334, 335, 336, 337, -1, 40, -1, -1, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, + 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, + -1, -1, -1, -1, 268, -1, 33, 271, 272, -1, + -1, -1, -1, 40, -1, -1, -1, -1, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, 96, + 334, 335, 336, 337, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 352, 353, + 354, 355, 356, -1, -1, -1, -1, -1, -1, 363, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, 40, -1, 42, -1, -1, 45, + -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, + -1, -1, -1, -1, 268, -1, -1, 271, 272, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 96, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + 334, 335, 336, 337, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 33, -1, 363, + 257, 258, 259, 260, 40, -1, 263, -1, -1, 45, + -1, 268, -1, -1, 271, 272, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 96, -1, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, -1, 334, 335, 336, + 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 352, 353, 354, 355, 356, + -1, 257, 258, 259, -1, -1, 363, 263, -1, -1, + -1, -1, 268, 33, -1, 271, 272, -1, -1, -1, + 40, -1, -1, -1, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 96, -1, 334, 335, + 336, 337, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, + 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, + -1, 257, 258, 259, -1, 40, -1, 263, -1, -1, + 45, -1, 268, -1, -1, 271, 272, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 96, -1, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, + 336, 337, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 352, 353, 354, 355, + 356, 33, -1, -1, -1, -1, -1, -1, 40, -1, + -1, -1, -1, 45, -1, -1, -1, 257, 258, 259, + -1, -1, -1, 263, -1, -1, -1, -1, 268, -1, + -1, 271, 272, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 96, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, 334, 335, 336, 337, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, 257, 258, 259, -1, -1, -1, 263, -1, + -1, -1, -1, 268, -1, -1, 271, 272, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, + 335, 336, 337, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 352, 353, 354, + 355, 356, -1, -1, -1, 257, 258, 259, -1, -1, + -1, 263, -1, -1, -1, -1, 268, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, -1, 334, 335, 336, 337, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 352, 353, 354, 355, 356, }; - -static const short yypgoto[] = {-32768, - 61,-32768, 26, 313,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 319, -71,-32768,-32768, -19, -10, -58, --32768, -115,-32768,-32768,-32768,-32768,-32768, 7,-32768, -82, - 203,-32768, -44, 6, -75,-32768,-32768,-32768, -88,-32768, - -249,-32768, -92, -23 -}; - - -#define YYLAST 2247 - - -static const short yytable[] = { 100, - 242, 178, 193, 110, 194, 100, 1, 339, 205, 38, - 43, 39, 195, 152, 104, 117, 184, 196, 197, 198, - 199, 200, 201, 207, 202, 3, 40, 363, 94, 90, - 154, 101, 7, 109, 94, 90, 46, 277, 366, 179, - 184, 264, 49, 151, 227, 185, 186, 50, 253, 255, - 256, 111, -14, -15, 156, 367, 119, 115, 155, 379, - 180, 159, 182, 183, 100, 153, 41, 42, 296, 46, - 278, 185, 186, 362, 181, 49, 185, 186, 158, 228, - 50, 185, 186, 44, 169, 170, 230, 231, 100, 94, - 266, 370, 371, 94, 90, 185, 186, 232, 233, 245, - 246, 247, 248, 249, 250, 251, 252, 254, 254, 254, - 160, 267, 206, 268, 269, 270, 237, 94, 90, 387, - -129, -129, 38, 161, 271, 272, 118, 226, 203, 254, - 303, 393, 185, 186, 312, 28, 94, 94, 94, 229, - 299, 300, 321, 162, 281, 173, 174, 85, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 294, 280, 38, - 163, 267, 267, 164, 264, 171, 172, 165, 345, 341, - 342, 324, 326, 239, 241, 330, 332, -14, -15, 238, - 85, -14, -15, -14, -15, 166, 305, 306, 307, 308, - 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, - 320, 254, 322, 167, 168, 243, 325, 327, 283, 295, - 331, 333, 334, 360, 297, 187, 188, 189, 190, 191, - 346, 298, 94, 224, 301, 302, 175, 176, 192, 304, - 94, 219, 220, 221, 222, 223, 336, 224, 328, 329, - 337, 347, 208, 338, 343, 209, 38, 348, 264, 264, - 350, 369, 385, 257, 187, 188, 189, 190, 191, 258, - 352, 221, 222, 223, 259, 224, 351, 51, 52, 194, - -130, -130, 254, 356, 353, 354, 264, 340, 194, 381, - 382, 355, 196, 197, 198, 199, 200, 201, 358, 202, - 357, 196, 197, 198, 199, 200, 201, 359, 202, 361, - 365, 94, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 372, 219, 220, 221, 222, 223, 230, - 224, 374, 380, 389, 390, 391, 392, 398, 401, 403, - 75, 76, 77, 78, 212, 213, 214, 215, 254, 254, - 383, 376, 384, 404, 116, 377, 378, 112, 79, 80, - 81, 82, 83, 388, 0, 279, 236, 218, 219, 220, - 221, 222, 223, 0, 224, 0, 0, 94, 94, 0, - 397, 0, 399, 0, 38, 46, 47, 48, 7, 0, - 0, 49, 0, 260, 214, 215, 50, 0, 0, 51, - 52, 0, 0, 203, 0, 0, 0, 0, 0, 0, - 0, 0, 203, 0, 236, 218, 219, 220, 221, 222, - 223, 0, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 0, 0, 75, 76, 77, 78, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 80, 81, 82, 83, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 102, 85, 0, 0, 0, - 0, 86, 0, 0, 0, 103, 273, 274, 48, 7, - 8, 0, 49, 0, 293, 0, 0, 50, 9, 10, - 275, 276, 13, 14, 15, 16, 17, 18, 19, 20, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, - 0, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 21, 0, 75, 76, 77, 78, 22, 23, 0, - 0, 24, 0, 25, 0, 0, 0, 364, 0, 0, - 0, 79, 80, 81, 82, 83, 26, 7, 27, 0, - 0, 0, 28, 29, 0, 0, 84, 85, 0, 0, - 0, 0, 86, 0, 5, 6, 87, 7, 8, 0, - 0, 30, 0, 31, 0, 0, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 0, 0, - 0, 0, 5, 6, 0, 7, 8, 210, 211, 212, - 213, 214, 215, 0, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 0, 0, 0, 0, - 0, 236, 218, 219, 220, 221, 222, 223, 0, 224, - 0, 0, 0, 210, 211, 212, 213, 214, 215, 21, - 0, 0, 0, 0, 0, 22, 23, 0, 0, 24, - 28, 25, 0, 0, 0, 0, 0, 236, 218, 219, - 220, 221, 222, 223, 26, 224, 27, 21, 0, 0, - 28, 29, 0, 22, 23, 0, 0, 24, 0, 25, - 0, 0, 0, 0, 0, 0, 39, 0, 0, 30, - 0, 31, 26, 0, 27, 0, 0, 0, 28, 29, - 46, 47, 48, 7, 0, 0, 49, 0, 120, 121, - 122, 50, 123, 124, 125, 126, 0, 30, 0, 31, - 0, 0, 0, 0, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 0, 0, 0, 0, 0, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 0, 0, 75, 76, 77, - 78, 0, 0, 146, 147, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 79, 80, 81, 82, 83, - 0, 0, 0, 148, 149, 150, 28, 0, 0, 0, - 102, 85, 46, 47, 48, 7, 86, 0, 49, 0, - 87, 0, 0, 50, 0, 0, 51, 52, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 0, 0, 0, 0, 0, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 0, 0, 75, - 76, 77, 78, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 79, 80, 81, - 82, 83, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 84, 85, 46, 47, 48, 7, 86, 0, - 49, 0, 87, 0, 0, 50, 0, 0, 51, 52, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 0, 0, 0, 0, 0, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, - 0, 75, 76, 77, 78, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, - 80, 81, 82, 83, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 0, 102, 85, 46, 47, 48, 7, - 86, 0, 49, 0, 103, 0, 0, 50, 0, 0, - 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, - 0, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 0, 0, 75, 76, 77, 78, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 79, 80, 81, 82, 83, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 0, 84, 85, 46, 47, - 48, 7, 86, 0, 49, 0, 103, 0, 0, 50, - 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 0, 0, 75, 76, 77, 78, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 79, 80, 81, 82, 83, 0, 0, - 0, 46, 47, 48, 28, 0, 0, 49, 265, 85, - 0, 0, 50, 0, 86, 51, 52, 0, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 394, 0, 0, 0, 0, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 0, 0, 75, 76, - 77, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 80, 81, 82, - 83, 210, 211, 212, 213, 214, 215, 0, 46, 47, - 48, 102, 85, 0, 49, 0, 0, 86, 396, 50, - 0, 87, 51, 52, 0, 236, 218, 219, 220, 221, - 222, 223, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, - 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 0, 0, 75, 76, 77, 78, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 79, 80, 81, 82, 83, 0, 0, - 0, 46, 47, 48, 0, 0, 0, 49, 102, 85, - 0, 0, 50, 0, 86, 51, 52, 0, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 0, 0, 0, 0, 0, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 0, 0, 75, 76, - 77, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 79, 80, 81, 82, - 83, 0, 0, 0, 46, 47, 48, 0, 0, 0, - 49, 84, 85, 0, 0, 50, 0, 86, 51, 52, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 0, 0, 0, 0, 0, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, - 0, 75, 76, 77, 78, 46, 47, 48, 0, 0, - 0, 49, 0, 0, 0, 0, 50, 0, 0, 79, - 80, 81, 82, 83, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 265, 85, 0, 0, 0, 0, - 86, 0, 0, 0, 87, 0, 0, 0, -187, 0, - 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 0, 0, 75, 76, 77, 78, 46, 47, 48, 0, - 0, 0, 49, 0, 0, 0, 0, 50, 0, 0, - 79, 80, 81, 82, 83, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 85, 0, 0, 0, - 0, 86, 0, 0, 0, 87, 0, 0, 0, -188, - 0, 0, 0, 0, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, - 0, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 0, 0, 75, 76, 77, 78, 46, 47, 48, - 0, 0, 0, 49, 0, 0, 0, 0, 50, 0, - 0, 79, 80, 81, 82, 83, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 102, 85, 0, 0, - 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, - 0, 0, 0, 0, 0, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, - 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 0, 0, 75, 76, 77, 78, 0, 0, - 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, - 0, 0, 79, 80, 81, 82, 83, 51, 52, 0, - 0, 0, 0, 0, 0, 0, 0, 102, 85, 0, - 0, 0, 0, 86, 0, 0, 0, 87, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, - 0, 0, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 0, 0, 0, 75, 76, 77, 78, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 0, - 0, 0, 208, 0, 0, 209, 0, 0, 79, 80, - 81, 82, 83, 0, 0, 0, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 0, 0, 260, - 0, 0, 0, 0, 0, 208, 0, 0, 209, 0, - 0, 0, 0, 344, 75, 76, 77, 78, 210, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 0, - 0, 0, 79, 80, 81, 82, 83, 0, 0, 0, - 0, 216, 217, 218, 219, 220, 221, 222, 223, 0, - 224, 234, 235, 212, 213, 214, 215, 0, 0, 0, - 0, 210, 211, 212, 213, 214, 215, 192, 0, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 220, 221, - 222, 223, 0, 224, 216, 236, 218, 219, 220, 221, - 222, 223, 0, 224, 234, 235, 212, 213, 214, 215, - 0, 0, 0, 234, 235, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 236, 218, - 219, 220, 221, 222, 223, 0, 224, 236, 218, 219, - 220, 221, 222, 223, 0, 224, 210, 211, 212, 213, - 214, 215, 0, 0, 0, 210, 0, 212, 213, 214, - 215, 0, 0, 0, 234, 0, 212, 213, 214, 215, - 236, 218, 219, 220, 221, 222, 223, 0, 224, 236, - 218, 219, 220, 221, 222, 223, 0, 224, 236, 218, - 219, 220, 221, 222, 223, 0, 224 +#define YYFINAL 2 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 366 +#if YYDEBUG +char *yyname[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +"'!'",0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0, +0,0,0,0,0,"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,"'`'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LABEL","VARIABLE","NUMBER", +"TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD", +"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX", +"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS", +"WIDTH","DIAMETER","FROM","TO","AT","WITH","BY","THEN","DOTTED","DASHED","CHOP", +"SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE","WAY","BETWEEN", +"AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE","DOT_NW", +"DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT","DOT_WID", +"DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT","K_MAX","K_MIN","INT","RAND", +"COPY","THRU","TOP","BOTTOM","UPPER","LOWER","SH","PRINT","CW","CCW","FOR","DO", +"IF","ELSE","ANDAND","OROR","NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL", +"LEFT_CORNER","RIGHT_CORNER","CENTER","END","START","RESET","UNTIL","PLOT", +"THICKNESS","FILL","ALIGNED","SPRINTF","COMMAND","DEFINE","UNDEF", }; - -static const short yycheck[] = { 23, - 116, 84, 95, 27, 6, 29, 125, 257, 97, 3, - 6, 125, 14, 37, 25, 4, 88, 19, 20, 21, - 22, 23, 24, 99, 26, 0, 127, 50, 23, 23, - 41, 4, 6, 4, 29, 29, 3, 153, 115, 84, - 112, 134, 9, 37, 103, 118, 119, 14, 131, 132, - 133, 113, 0, 0, 79, 132, 91, 32, 126, 132, - 84, 113, 86, 87, 88, 40, 126, 127, 115, 3, - 153, 118, 119, 115, 85, 9, 118, 119, 8, 103, - 14, 118, 119, 79, 17, 18, 92, 93, 112, 84, - 135, 341, 342, 88, 88, 118, 119, 94, 95, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 113, 135, 46, 137, 138, 139, 110, 112, 112, 369, - 118, 119, 116, 113, 148, 149, 115, 126, 130, 153, - 206, 117, 118, 119, 217, 109, 131, 132, 133, 36, - 185, 186, 225, 113, 155, 17, 18, 114, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 153, 153, - 113, 185, 186, 113, 257, 98, 99, 113, 261, 258, - 259, 230, 231, 113, 114, 234, 235, 125, 125, 6, - 114, 129, 129, 131, 131, 113, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 113, 113, 4, 230, 231, 8, 132, - 234, 235, 236, 296, 132, 63, 64, 65, 66, 67, - 265, 10, 217, 124, 3, 131, 98, 99, 133, 47, - 225, 118, 119, 120, 121, 122, 129, 124, 232, 233, - 131, 265, 46, 8, 3, 49, 240, 8, 341, 342, - 132, 340, 368, 3, 63, 64, 65, 66, 67, 9, - 115, 120, 121, 122, 14, 124, 132, 17, 18, 6, - 118, 119, 296, 115, 132, 132, 369, 14, 6, 362, - 363, 132, 19, 20, 21, 22, 23, 24, 132, 26, - 115, 19, 20, 21, 22, 23, 24, 132, 26, 48, - 8, 296, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 3, 118, 119, 120, 121, 122, 92, - 124, 104, 49, 6, 132, 132, 132, 89, 8, 0, - 80, 81, 82, 83, 94, 95, 96, 97, 362, 363, - 364, 352, 366, 0, 32, 356, 357, 29, 98, 99, - 100, 101, 102, 373, -1, 153, 116, 117, 118, 119, - 120, 121, 122, -1, 124, -1, -1, 362, 363, -1, - 394, -1, 396, -1, 368, 3, 4, 5, 6, -1, - -1, 9, -1, 133, 96, 97, 14, -1, -1, 17, - 18, -1, -1, 130, -1, -1, -1, -1, -1, -1, - -1, -1, 130, -1, 116, 117, 118, 119, 120, 121, - 122, -1, 124, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - -1, -1, 80, 81, 82, 83, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 98, 99, 100, 101, 102, -1, -1, -1, -1, -1, - -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, - -1, 119, -1, -1, -1, 123, 3, 4, 5, 6, - 7, -1, 9, -1, 132, -1, -1, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, -1, 80, 81, 82, 83, 84, 85, -1, - -1, 88, -1, 90, -1, -1, -1, 32, -1, -1, - -1, 98, 99, 100, 101, 102, 103, 6, 105, -1, - -1, -1, 109, 110, -1, -1, 113, 114, -1, -1, - -1, -1, 119, -1, 3, 4, 123, 6, 7, -1, - -1, 128, -1, 130, -1, -1, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, - -1, -1, 3, 4, -1, 6, 7, 92, 93, 94, - 95, 96, 97, -1, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, -1, -1, -1, -1, - -1, 116, 117, 118, 119, 120, 121, 122, -1, 124, - -1, -1, -1, 92, 93, 94, 95, 96, 97, 78, - -1, -1, -1, -1, -1, 84, 85, -1, -1, 88, - 109, 90, -1, -1, -1, -1, -1, 116, 117, 118, - 119, 120, 121, 122, 103, 124, 105, 78, -1, -1, - 109, 110, -1, 84, 85, -1, -1, 88, -1, 90, - -1, -1, -1, -1, -1, -1, 125, -1, -1, 128, - -1, 130, 103, -1, 105, -1, -1, -1, 109, 110, - 3, 4, 5, 6, -1, -1, 9, -1, 11, 12, - 13, 14, 15, 16, 17, 18, -1, 128, -1, 130, - -1, -1, -1, -1, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, -1, -1, -1, -1, -1, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - -1, -1, -1, -1, -1, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, -1, -1, 80, 81, 82, - 83, -1, -1, 86, 87, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 98, 99, 100, 101, 102, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - 113, 114, 3, 4, 5, 6, 119, -1, 9, -1, - 123, -1, -1, 14, -1, -1, 17, 18, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, -1, -1, -1, -1, -1, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, - 81, 82, 83, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 98, 99, 100, - 101, 102, -1, -1, -1, -1, -1, -1, 109, -1, - -1, -1, 113, 114, 3, 4, 5, 6, 119, -1, - 9, -1, 123, -1, -1, 14, -1, -1, 17, 18, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, 82, 83, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, - 99, 100, 101, 102, -1, -1, -1, -1, -1, -1, - 109, -1, -1, -1, 113, 114, 3, 4, 5, 6, - 119, -1, 9, -1, 123, -1, -1, 14, -1, -1, - 17, 18, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, 80, 81, 82, 83, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 98, 99, 100, 101, 102, -1, -1, -1, -1, - -1, -1, 109, -1, -1, -1, 113, 114, 3, 4, - 5, 6, 119, -1, 9, -1, 123, -1, -1, 14, - -1, -1, 17, 18, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, 82, 83, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 98, 99, 100, 101, 102, -1, -1, - -1, 3, 4, 5, 109, -1, -1, 9, 113, 114, - -1, -1, 14, -1, 119, 17, 18, -1, 123, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 35, -1, -1, -1, -1, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 98, 99, 100, 101, - 102, 92, 93, 94, 95, 96, 97, -1, 3, 4, - 5, 113, 114, -1, 9, -1, -1, 119, 120, 14, - -1, 123, 17, 18, -1, 116, 117, 118, 119, 120, - 121, 122, -1, 124, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, -1, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, -1, -1, 80, 81, 82, 83, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 98, 99, 100, 101, 102, -1, -1, - -1, 3, 4, 5, -1, -1, -1, 9, 113, 114, - -1, -1, 14, -1, 119, 17, 18, -1, 123, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, -1, -1, -1, -1, -1, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, - 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 98, 99, 100, 101, - 102, -1, -1, -1, 3, 4, 5, -1, -1, -1, - 9, 113, 114, -1, -1, 14, -1, 119, 17, 18, - -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, -1, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, - -1, 80, 81, 82, 83, 3, 4, 5, -1, -1, - -1, 9, -1, -1, -1, -1, 14, -1, -1, 98, - 99, 100, 101, 102, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 113, 114, -1, -1, -1, -1, - 119, -1, -1, -1, 123, -1, -1, -1, 46, -1, - -1, -1, -1, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, -1, -1, -1, -1, -1, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - -1, -1, 80, 81, 82, 83, 3, 4, 5, -1, - -1, -1, 9, -1, -1, -1, -1, 14, -1, -1, - 98, 99, 100, 101, 102, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 113, 114, -1, -1, -1, - -1, 119, -1, -1, -1, 123, -1, -1, -1, 46, - -1, -1, -1, -1, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, -1, 80, 81, 82, 83, 3, 4, 5, - -1, -1, -1, 9, -1, -1, -1, -1, 14, -1, - -1, 98, 99, 100, 101, 102, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 113, 114, -1, -1, - -1, -1, 119, -1, -1, -1, 123, -1, -1, -1, - -1, -1, -1, -1, -1, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, - -1, -1, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, -1, -1, 80, 81, 82, 83, -1, -1, - -1, -1, -1, 17, 18, -1, -1, -1, -1, -1, - -1, -1, 98, 99, 100, 101, 102, 17, 18, -1, - -1, -1, -1, -1, -1, -1, -1, 113, 114, -1, - -1, -1, -1, 119, -1, -1, -1, 123, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, -1, - -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, -1, -1, -1, 80, 81, 82, 83, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, 81, 82, 83, 98, 99, 100, 101, 102, -1, - -1, -1, 46, -1, -1, 49, -1, -1, 98, 99, - 100, 101, 102, -1, -1, -1, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, -1, -1, 133, - -1, -1, -1, -1, -1, 46, -1, -1, 49, -1, - -1, -1, -1, 133, 80, 81, 82, 83, 92, 93, - 94, 95, 96, 97, -1, -1, -1, -1, -1, -1, - -1, -1, 98, 99, 100, 101, 102, -1, -1, -1, - -1, 115, 116, 117, 118, 119, 120, 121, 122, -1, - 124, 92, 93, 94, 95, 96, 97, -1, -1, -1, - -1, 92, 93, 94, 95, 96, 97, 133, -1, -1, - -1, -1, -1, -1, 115, 116, 117, 118, 119, 120, - 121, 122, -1, 124, 115, 116, 117, 118, 119, 120, - 121, 122, -1, 124, 92, 93, 94, 95, 96, 97, - -1, -1, -1, 92, 93, 94, 95, 96, 97, -1, - -1, -1, -1, -1, -1, -1, -1, 115, 116, 117, - 118, 119, 120, 121, 122, -1, 124, 116, 117, 118, - 119, 120, 121, 122, -1, 124, 92, 93, 94, 95, - 96, 97, -1, -1, -1, 92, -1, 94, 95, 96, - 97, -1, -1, -1, 92, -1, 94, 95, 96, 97, - 116, 117, 118, 119, 120, 121, 122, -1, 124, 116, - 117, 118, 119, 120, 121, 122, -1, 124, 116, 117, - 118, 119, 120, 121, 122, -1, 124 +char *yyrule[] = { +"$accept : top", +"top : optional_separator", +"top : element_list", +"element_list : optional_separator middle_element_list optional_separator", +"middle_element_list : element", +"middle_element_list : middle_element_list separator element", +"optional_separator :", +"optional_separator : separator", +"separator : ';'", +"separator : separator ';'", +"placeless_element : VARIABLE '=' any_expr", +"placeless_element : VARIABLE ':' '=' any_expr", +"placeless_element : UP", +"placeless_element : DOWN", +"placeless_element : LEFT", +"placeless_element : RIGHT", +"placeless_element : COMMAND_LINE", +"placeless_element : COMMAND print_args", +"placeless_element : PRINT print_args", +"$$1 :", +"placeless_element : SH $$1 DELIMITED", +"placeless_element : COPY TEXT", +"$$2 :", +"$$3 :", +"placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until", +"$$4 :", +"$$5 :", +"placeless_element : COPY THRU $$4 DELIMITED $$5 until", +"$$6 :", +"placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED", +"placeless_element : simple_if", +"$$7 :", +"placeless_element : simple_if ELSE $$7 DELIMITED", +"placeless_element : reset_variables", +"placeless_element : RESET", +"reset_variables : RESET VARIABLE", +"reset_variables : reset_variables VARIABLE", +"reset_variables : reset_variables ',' VARIABLE", +"print_args : print_arg", +"print_args : print_args print_arg", +"print_arg : expr", +"print_arg : text", +"print_arg : position", +"$$8 :", +"simple_if : IF any_expr THEN $$8 DELIMITED", +"until :", +"until : UNTIL TEXT", +"any_expr : expr", +"any_expr : text_expr", +"text_expr : text EQUALEQUAL text", +"text_expr : text NOTEQUAL text", +"text_expr : text_expr ANDAND text_expr", +"text_expr : text_expr ANDAND expr", +"text_expr : expr ANDAND text_expr", +"text_expr : text_expr OROR text_expr", +"text_expr : text_expr OROR expr", +"text_expr : expr OROR text_expr", +"text_expr : '!' text_expr", +"optional_by :", +"optional_by : BY expr", +"optional_by : BY '*' expr", +"element : object_spec", +"element : LABEL ':' optional_separator element", +"element : LABEL ':' optional_separator position_not_place", +"element : LABEL ':' optional_separator place", +"$$9 :", +"$$10 :", +"element : '{' $$9 element_list '}' $$10 optional_element", +"element : placeless_element", +"optional_element :", +"optional_element : element", +"object_spec : BOX", +"object_spec : CIRCLE", +"object_spec : ELLIPSE", +"object_spec : ARC", +"object_spec : LINE", +"object_spec : ARROW", +"object_spec : MOVE", +"object_spec : SPLINE", +"object_spec : text", +"object_spec : PLOT expr", +"object_spec : PLOT expr text", +"$$11 :", +"object_spec : '[' $$11 element_list ']'", +"object_spec : object_spec HEIGHT expr", +"object_spec : object_spec RADIUS expr", +"object_spec : object_spec WIDTH expr", +"object_spec : object_spec DIAMETER expr", +"object_spec : object_spec expr", +"object_spec : object_spec UP", +"object_spec : object_spec UP expr", +"object_spec : object_spec DOWN", +"object_spec : object_spec DOWN expr", +"object_spec : object_spec RIGHT", +"object_spec : object_spec RIGHT expr", +"object_spec : object_spec LEFT", +"object_spec : object_spec LEFT expr", +"object_spec : object_spec FROM position", +"object_spec : object_spec TO position", +"object_spec : object_spec AT position", +"object_spec : object_spec WITH path", +"object_spec : object_spec BY expr_pair", +"object_spec : object_spec THEN", +"object_spec : object_spec DOTTED", +"object_spec : object_spec DOTTED expr", +"object_spec : object_spec DASHED", +"object_spec : object_spec DASHED expr", +"object_spec : object_spec FILL", +"object_spec : object_spec FILL expr", +"object_spec : object_spec CHOP", +"object_spec : object_spec CHOP expr", +"object_spec : object_spec SAME", +"object_spec : object_spec INVISIBLE", +"object_spec : object_spec LEFT_ARROW_HEAD", +"object_spec : object_spec RIGHT_ARROW_HEAD", +"object_spec : object_spec DOUBLE_ARROW_HEAD", +"object_spec : object_spec CW", +"object_spec : object_spec CCW", +"object_spec : object_spec text", +"object_spec : object_spec LJUST", +"object_spec : object_spec RJUST", +"object_spec : object_spec ABOVE", +"object_spec : object_spec BELOW", +"object_spec : object_spec THICKNESS expr", +"object_spec : object_spec ALIGNED", +"text : TEXT", +"text : SPRINTF '(' TEXT sprintf_args ')'", +"sprintf_args :", +"sprintf_args : sprintf_args ',' expr", +"position : position_not_place", +"position : place", +"position_not_place : expr_pair", +"position_not_place : position '+' expr_pair", +"position_not_place : position '-' expr_pair", +"position_not_place : '(' position ',' position ')'", +"position_not_place : expr between position AND position", +"position_not_place : expr '<' position ',' position '>'", +"between : BETWEEN", +"between : OF THE WAY BETWEEN", +"expr_pair : expr ',' expr", +"expr_pair : '(' expr_pair ')'", +"place : label", +"place : label corner", +"place : corner label", +"place : corner OF label", +"place : HERE", +"label : LABEL", +"label : nth_primitive", +"label : label '.' LABEL", +"ordinal : ORDINAL", +"ordinal : '`' any_expr TH", +"optional_ordinal_last : LAST", +"optional_ordinal_last : ordinal LAST", +"nth_primitive : ordinal object_type", +"nth_primitive : optional_ordinal_last object_type", +"object_type : BOX", +"object_type : CIRCLE", +"object_type : ELLIPSE", +"object_type : ARC", +"object_type : LINE", +"object_type : ARROW", +"object_type : SPLINE", +"object_type : '[' ']'", +"object_type : TEXT", +"label_path : '.' LABEL", +"label_path : label_path '.' LABEL", +"relative_path : corner", +"relative_path : label_path", +"relative_path : label_path corner", +"path : relative_path", +"path : ORDINAL LAST object_type relative_path", +"path : LAST object_type relative_path", +"path : ORDINAL object_type relative_path", +"path : LABEL relative_path", +"corner : DOT_N", +"corner : DOT_E", +"corner : DOT_W", +"corner : DOT_S", +"corner : DOT_NE", +"corner : DOT_SE", +"corner : DOT_NW", +"corner : DOT_SW", +"corner : DOT_C", +"corner : DOT_START", +"corner : DOT_END", +"corner : TOP", +"corner : BOTTOM", +"corner : LEFT", +"corner : RIGHT", +"corner : UPPER LEFT", +"corner : LOWER LEFT", +"corner : UPPER RIGHT", +"corner : LOWER RIGHT", +"corner : LEFT_CORNER", +"corner : RIGHT_CORNER", +"corner : UPPER LEFT_CORNER", +"corner : LOWER LEFT_CORNER", +"corner : UPPER RIGHT_CORNER", +"corner : LOWER RIGHT_CORNER", +"corner : CENTER", +"corner : START", +"corner : END", +"expr : VARIABLE", +"expr : NUMBER", +"expr : place DOT_X", +"expr : place DOT_Y", +"expr : place DOT_HT", +"expr : place DOT_WID", +"expr : place DOT_RAD", +"expr : expr '+' expr", +"expr : expr '-' expr", +"expr : expr '*' expr", +"expr : expr '/' expr", +"expr : expr '%' expr", +"expr : expr '^' expr", +"expr : '-' expr", +"expr : '(' any_expr ')'", +"expr : SIN '(' any_expr ')'", +"expr : COS '(' any_expr ')'", +"expr : ATAN2 '(' any_expr ',' any_expr ')'", +"expr : LOG '(' any_expr ')'", +"expr : EXP '(' any_expr ')'", +"expr : SQRT '(' any_expr ')'", +"expr : K_MAX '(' any_expr ',' any_expr ')'", +"expr : K_MIN '(' any_expr ',' any_expr ')'", +"expr : INT '(' any_expr ')'", +"expr : RAND '(' any_expr ')'", +"expr : RAND '(' ')'", +"expr : expr '<' expr", +"expr : expr LESSEQUAL expr", +"expr : expr '>' expr", +"expr : expr GREATEREQUAL expr", +"expr : expr EQUALEQUAL expr", +"expr : expr NOTEQUAL expr", +"expr : expr ANDAND expr", +"expr : expr OROR expr", +"expr : '!' expr", }; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/local/lib/bison.simple" - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman - - 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) -#include <alloca.h> -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include <malloc.h> -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include <malloc.h> - #pragma alloca -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#define YYLEX yylex(&yylval, &yylloc) -#else -#define YYLEX yylex(&yylval) #endif +#define yyclearin (yychar=(-1)) +#define yyerrok (yyerrflag=0) +#ifdef YYSTACKSIZE +#ifndef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE #endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ +#else +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 #endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 #endif +int yydebug; +int yynerrs; +int yyerrflag; +int yychar; +short *yyssp; +YYSTYPE *yyvsp; +YYSTYPE yyval; +YYSTYPE yylval; +short yyss[YYSTACKSIZE]; +YYSTYPE yyvs[YYSTACKSIZE]; +#define yystacksize YYSTACKSIZE +#line 1514 "/u/jjc/groff/pic/pic.y" -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif +/* bison defines const to be empty unless __STDC__ is defined, which it +isn't under cfront */ -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +#ifdef const +#undef const #endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_bcopy(FROM,TO,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 -__yy_bcopy (from, to, count) - char *from; - char *to; - int count; -{ - register char *f = from; - register char *t = to; - register int i = count; +static struct { + const char *name; + double val; + int scaled; // non-zero if val should be multiplied by scale +} defaults_table[] = { + "arcrad", .25, 1, + "arrowht", .1, 1, + "arrowwid", .05, 1, + "circlerad", .25, 1, + "boxht", .5, 1, + "boxwid", .75, 1, + "boxrad", 0.0, 1, + "dashwid", .05, 1, + "ellipseht", .5, 1, + "ellipsewid", .75, 1, + "moveht", .5, 1, + "movewid", .5, 1, + "lineht", .5, 1, + "linewid", .5, 1, + "textht", 0.0, 1, + "textwid", 0.0, 1, + "scale", 1.0, 0, + "linethick", -1.0, 0, // in points + "fillval", .5, 0, + "arrowhead", 1.0, 0, + "maxpswid", 8.5, 0, + "maxpsht", 11.0, 0, +}; - while (i-- > 0) - *t++ = *f++; +place *lookup_label(const char *label) +{ + saved_state *state = current_saved_state; + PTABLE(place) *tbl = current_table; + for (;;) { + place *pl = tbl->lookup(label); + if (pl) + return pl; + if (!state) + return 0; + tbl = state->tbl; + state = state->prev; + } } -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_bcopy (char *from, char *to, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; +void define_label(const char *label, const place *pl) +{ + place *p = new place; + *p = *pl; + current_table->define(label, p); } -#endif -#endif - -#line 169 "/usr/local/lib/bison.simple" -int -yyparse() +int lookup_variable(const char *name, double *val) { - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif + place *pl = lookup_label(name); + if (pl) { + *val = pl->x; + return 1; + } + return 0; +} - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ +void define_variable(const char *name, double val) +{ + place *p = new place; + p->obj = 0; + p->x = val; + p->y = 0.0; + current_table->define(name, p); + if (strcmp(name, "scale") == 0) { + // When the scale changes, reset all scaled pre-defined variables to + // their default values. + for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) + if (defaults_table[i].scaled) + define_variable(defaults_table[i].name, val*defaults_table[i].val); + } +} - int yylen; +// called once only (not once per parse) -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif +void parse_init() +{ + current_direction = RIGHT_DIRECTION; + current_position.x = 0.0; + current_position.y = 0.0; + // This resets everything to its default value. + reset_all(); +} - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ +void reset(const char *nm) +{ + for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) + if (strcmp(nm, defaults_table[i].name) == 0) { + double val = defaults_table[i].val; + if (defaults_table[i].scaled) { + double scale; + lookup_variable("scale", &scale); + val *= scale; + } + define_variable(defaults_table[i].name, val); + return; + } + lex_error("`%1' is not a predefined variable", nm); +} - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ +void reset_all() +{ + // We only have to explicitly reset the pre-defined variables that + // aren't scaled because `scale' is not scaled, and changing the + // value of `scale' will reset all the pre-defined variables that + // are scaled. + for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) + if (!defaults_table[i].scaled) + define_variable(defaults_table[i].name, defaults_table[i].val); +} - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif +// called after each parse -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: +void parse_cleanup() +{ + while (current_saved_state != 0) { + delete current_table; + current_table = current_saved_state->tbl; + saved_state *tem = current_saved_state; + current_saved_state = current_saved_state->prev; + delete tem; + } + assert(current_table == &top_table); + PTABLE_ITERATOR(place) iter(current_table); + const char *key; + place *pl; + while (iter.next(&key, &pl)) + if (pl->obj != 0) { + position pos = pl->obj->origin(); + pl->obj = 0; + pl->x = pos.x; + pl->y = pos.y; + } + while (olist.head != 0) { + object *tem = olist.head; + olist.head = olist.head->next; + delete tem; + } + olist.tail = 0; + current_direction = RIGHT_DIRECTION; + current_position.x = 0.0; + current_position.y = 0.0; +} - *++yyssp = yystate; +const char *ordinal_postfix(int n) +{ + if (n < 10 || n > 20) + switch (n % 10) { + case 1: + return "st"; + case 2: + return "nd"; + case 3: + return "rd"; + } + return "th"; +} - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif +const char *object_type_name(object_type type) +{ + switch (type) { + case BOX_OBJECT: + return "box"; + case CIRCLE_OBJECT: + return "circle"; + case ELLIPSE_OBJECT: + return "ellipse"; + case ARC_OBJECT: + return "arc"; + case SPLINE_OBJECT: + return "spline"; + case LINE_OBJECT: + return "line"; + case ARROW_OBJECT: + return "arrow"; + case MOVE_OBJECT: + return "move"; + case TEXT_OBJECT: + return "\"\""; + case BLOCK_OBJECT: + return "[]"; + case OTHER_OBJECT: + case MARK_OBJECT: + default: + break; + } + return "object"; +} - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; +static char sprintf_buf[1024]; -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), -#ifdef YYLSP_NEEDED - &yyls1, size * sizeof (*yylsp), -#endif - &yystacksize); +char *format_number(const char *form, double n) +{ + if (form == 0) + form = "%g"; + else { + // this is a fairly feeble attempt at validation of the format + int nspecs = 0; + for (const char *p = form; *p != '\0'; p++) + if (*p == '%') { + if (p[1] == '%') + p++; + else + nspecs++; + } + if (nspecs > 1) { + lex_error("bad format `%1'", form); + return strsave(form); + } + } + sprintf(sprintf_buf, form, n); + return strsave(sprintf_buf); +} - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; +char *do_sprintf(const char *form, const double *v, int nv) +{ + string result; + int i = 0; + string one_format; + while (*form) { + if (*form == '%') { + one_format += *form++; + for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++) + one_format += *form; + if (*form == '\0' || strchr("eEfgG%", *form) == 0) { + lex_error("bad sprintf format"); + result += one_format; + result += form; + break; + } + if (*form == '%') { + one_format += *form++; + one_format += '\0'; + sprintf(sprintf_buf, one_format.contents()); + } + else { + if (i >= nv) { + lex_error("too few arguments to sprintf"); + result += one_format; + result += form; + break; } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; + one_format += *form++; + one_format += '\0'; + sprintf(sprintf_buf, one_format.contents(), v[i++]); + } + one_format.clear(); + result += sprintf_buf; } + else + result += *form++; + } + result += '\0'; + return strsave(result.contents()); +} +#line 3387 "y.tab.c" +#define YYABORT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab +int +yyparse() +{ + register int yym, yyn, yystate; +#if YYDEBUG + register char *yys; + extern char *getenv(); -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); + if (yys = getenv("YYDEBUG")) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } #endif - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ + yynerrs = 0; + yyerrflag = 0; + yychar = (-1); - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) +yyloop: + if (yyn = yydefred[yystate]) goto yyreduce; + if (yychar < 0) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } #endif - yychar = YYLEX; } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); #endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + yychar = (-1); + if (yyerrflag > 0) --yyerrflag; + goto yyloop; } - else + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; +#ifdef lint + goto yynewerror; #endif - fprintf (stderr, ")\n"); - } +yynewerror: + yyerror("syntax error"); +#ifdef lint + goto yyerrlab; #endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) +yyerrlab: + ++yynerrs; +yyinrecovery: + if (yyerrflag < 3) { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, error recovery shifting\ + to state %d\n", *yyssp, yytable[yyn]); #endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("yydebug: error recovery discarding state %d\n", + *yyssp); #endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) + if (yyssp <= yyss) goto yyabort; + --yyssp; + --yyvsp; + } + } + } + else { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + if (yychar == 0) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, error recovery discards token %d (%s)\n", + yystate, yychar, yys); + } +#endif + yychar = (-1); + goto yyloop; } +yyreduce: +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); #endif - - - switch (yyn) { - + yym = yylen[yyn]; + yyval = yyvsp[1-yym]; + switch (yyn) + { case 2: -#line 276 "pic.y" +#line 272 "/u/jjc/groff/pic/pic.y" { if (olist.head) print_picture(olist.head); - ; - break;} + } +break; case 3: -#line 285 "pic.y" -{ yyval.pl = yyvsp[-1].pl; ; - break;} +#line 281 "/u/jjc/groff/pic/pic.y" +{ yyval.pl = yyvsp[-1].pl; } +break; case 4: -#line 290 "pic.y" -{ yyval.pl = yyvsp[0].pl; ; - break;} +#line 286 "/u/jjc/groff/pic/pic.y" +{ yyval.pl = yyvsp[0].pl; } +break; case 5: -#line 292 "pic.y" -{ yyval.pl = yyvsp[-2].pl; ; - break;} +#line 288 "/u/jjc/groff/pic/pic.y" +{ yyval.pl = yyvsp[-2].pl; } +break; case 10: -#line 307 "pic.y" +#line 303 "/u/jjc/groff/pic/pic.y" { define_variable(yyvsp[-2].str, yyvsp[0].x); a_delete yyvsp[-2].str; - ; - break;} + } +break; case 11: -#line 312 "pic.y" +#line 308 "/u/jjc/groff/pic/pic.y" { place *p = lookup_label(yyvsp[-3].str); if (!p) { @@ -1517,132 +3561,133 @@ case 11: p->x = yyvsp[0].x; p->y = 0.0; a_delete yyvsp[-3].str; - ; - break;} + } +break; case 12: -#line 324 "pic.y" -{ current_direction = UP_DIRECTION; ; - break;} +#line 320 "/u/jjc/groff/pic/pic.y" +{ current_direction = UP_DIRECTION; } +break; case 13: -#line 326 "pic.y" -{ current_direction = DOWN_DIRECTION; ; - break;} +#line 322 "/u/jjc/groff/pic/pic.y" +{ current_direction = DOWN_DIRECTION; } +break; case 14: -#line 328 "pic.y" -{ current_direction = LEFT_DIRECTION; ; - break;} +#line 324 "/u/jjc/groff/pic/pic.y" +{ current_direction = LEFT_DIRECTION; } +break; case 15: -#line 330 "pic.y" -{ current_direction = RIGHT_DIRECTION; ; - break;} +#line 326 "/u/jjc/groff/pic/pic.y" +{ current_direction = RIGHT_DIRECTION; } +break; case 16: -#line 332 "pic.y" +#line 328 "/u/jjc/groff/pic/pic.y" { olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno)); - ; - break;} + } +break; case 17: -#line 337 "pic.y" +#line 333 "/u/jjc/groff/pic/pic.y" { olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno)); - ; - break;} + } +break; case 18: -#line 342 "pic.y" +#line 338 "/u/jjc/groff/pic/pic.y" { fprintf(stderr, "%s\n", yyvsp[0].lstr.str); + a_delete yyvsp[0].lstr.str; fflush(stderr); - ; - break;} + } +break; case 19: -#line 347 "pic.y" -{ delim_flag = 1; ; - break;} +#line 344 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 1; } +break; case 20: -#line 349 "pic.y" +#line 346 "/u/jjc/groff/pic/pic.y" { delim_flag = 0; system(yyvsp[0].str); a_delete yyvsp[0].str; - ; - break;} + } +break; case 21: -#line 355 "pic.y" +#line 352 "/u/jjc/groff/pic/pic.y" { if (yychar < 0) do_lookahead(); do_copy(yyvsp[0].lstr.str); - // do not delete the filename - ; - break;} + /* do not delete the filename*/ + } +break; case 22: -#line 362 "pic.y" -{ delim_flag = 2; ; - break;} +#line 359 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 2; } +break; case 23: -#line 364 "pic.y" -{ delim_flag = 0; ; - break;} +#line 361 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 0; } +break; case 24: -#line 366 "pic.y" +#line 363 "/u/jjc/groff/pic/pic.y" { if (yychar < 0) do_lookahead(); copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str); - // do not delete the filename + /* do not delete the filename*/ a_delete yyvsp[-2].str; a_delete yyvsp[0].str; - ; - break;} + } +break; case 25: -#line 375 "pic.y" -{ delim_flag = 2; ; - break;} +#line 372 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 2; } +break; case 26: -#line 377 "pic.y" -{ delim_flag = 0; ; - break;} +#line 374 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 0; } +break; case 27: -#line 379 "pic.y" +#line 376 "/u/jjc/groff/pic/pic.y" { if (yychar < 0) do_lookahead(); copy_rest_thru(yyvsp[-2].str, yyvsp[0].str); a_delete yyvsp[-2].str; a_delete yyvsp[0].str; - ; - break;} + } +break; case 28: -#line 387 "pic.y" -{ delim_flag = 1; ; - break;} +#line 384 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 1; } +break; case 29: -#line 389 "pic.y" +#line 386 "/u/jjc/groff/pic/pic.y" { delim_flag = 0; if (yychar < 0) do_lookahead(); do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str); - ; - break;} + } +break; case 30: -#line 396 "pic.y" +#line 393 "/u/jjc/groff/pic/pic.y" { if (yychar < 0) do_lookahead(); if (yyvsp[0].if_data.x != 0.0) push_body(yyvsp[0].if_data.body); a_delete yyvsp[0].if_data.body; - ; - break;} + } +break; case 31: -#line 404 "pic.y" -{ delim_flag = 1; ; - break;} +#line 401 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 1; } +break; case 32: -#line 406 "pic.y" +#line 403 "/u/jjc/groff/pic/pic.y" { delim_flag = 0; if (yychar < 0) @@ -1653,30 +3698,30 @@ case 32: push_body(yyvsp[0].str); a_delete yyvsp[-3].if_data.body; a_delete yyvsp[0].str; - ; - break;} + } +break; case 34: -#line 419 "pic.y" -{ define_variable("scale", 1.0); ; - break;} +#line 416 "/u/jjc/groff/pic/pic.y" +{ define_variable("scale", 1.0); } +break; case 35: -#line 424 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ; - break;} +#line 421 "/u/jjc/groff/pic/pic.y" +{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } +break; case 36: -#line 426 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ; - break;} +#line 423 "/u/jjc/groff/pic/pic.y" +{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } +break; case 37: -#line 428 "pic.y" -{ reset(yyvsp[0].str); a_delete yyvsp[0].str; ; - break;} +#line 425 "/u/jjc/groff/pic/pic.y" +{ reset(yyvsp[0].str); a_delete yyvsp[0].str; } +break; case 38: -#line 433 "pic.y" -{ yyval.lstr = yyvsp[0].lstr; ; - break;} +#line 430 "/u/jjc/groff/pic/pic.y" +{ yyval.lstr = yyvsp[0].lstr; } +break; case 39: -#line 435 "pic.y" +#line 432 "/u/jjc/groff/pic/pic.y" { yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1]; strcpy(yyval.lstr.str, yyvsp[-1].lstr.str); @@ -1691,112 +3736,112 @@ case 39: yyval.lstr.filename = yyvsp[0].lstr.filename; yyval.lstr.lineno = yyvsp[0].lstr.lineno; } - ; - break;} + } +break; case 40: -#line 454 "pic.y" +#line 451 "/u/jjc/groff/pic/pic.y" { yyval.lstr.str = new char[GDIGITS + 1]; sprintf(yyval.lstr.str, "%g", yyvsp[0].x); yyval.lstr.filename = 0; yyval.lstr.lineno = 0; - ; - break;} + } +break; case 41: -#line 461 "pic.y" -{ yyval.lstr = yyvsp[0].lstr; ; - break;} +#line 458 "/u/jjc/groff/pic/pic.y" +{ yyval.lstr = yyvsp[0].lstr; } +break; case 42: -#line 463 "pic.y" +#line 460 "/u/jjc/groff/pic/pic.y" { yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1]; sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y); yyval.lstr.filename = 0; yyval.lstr.lineno = 0; - ; - break;} + } +break; case 43: -#line 472 "pic.y" -{ delim_flag = 1; ; - break;} +#line 469 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 1; } +break; case 44: -#line 474 "pic.y" -{ delim_flag = 0; yyval.if_data.x = yyvsp[-3].x; yyval.if_data.body = yyvsp[0].str; ; - break;} +#line 471 "/u/jjc/groff/pic/pic.y" +{ delim_flag = 0; yyval.if_data.x = yyvsp[-3].x; yyval.if_data.body = yyvsp[0].str; } +break; case 45: -#line 479 "pic.y" -{ yyval.str = 0; ; - break;} +#line 476 "/u/jjc/groff/pic/pic.y" +{ yyval.str = 0; } +break; case 46: -#line 481 "pic.y" -{ yyval.str = yyvsp[0].lstr.str; ; - break;} +#line 478 "/u/jjc/groff/pic/pic.y" +{ yyval.str = yyvsp[0].lstr.str; } +break; case 47: -#line 486 "pic.y" -{ yyval.x = yyvsp[0].x; ; - break;} +#line 483 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[0].x; } +break; case 48: -#line 488 "pic.y" -{ yyval.x = yyvsp[0].x; ; - break;} +#line 485 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[0].x; } +break; case 49: -#line 493 "pic.y" +#line 490 "/u/jjc/groff/pic/pic.y" { yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0; a_delete yyvsp[-2].lstr.str; a_delete yyvsp[0].lstr.str; - ; - break;} + } +break; case 50: -#line 499 "pic.y" +#line 496 "/u/jjc/groff/pic/pic.y" { yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0; a_delete yyvsp[-2].lstr.str; a_delete yyvsp[0].lstr.str; - ; - break;} + } +break; case 51: -#line 505 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ; - break;} +#line 502 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } +break; case 52: -#line 507 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ; - break;} +#line 504 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } +break; case 53: -#line 509 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ; - break;} +#line 506 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } +break; case 54: -#line 511 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ; - break;} +#line 508 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } +break; case 55: -#line 513 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ; - break;} +#line 510 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } +break; case 56: -#line 515 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ; - break;} +#line 512 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } +break; case 57: -#line 517 "pic.y" -{ yyval.x = (yyvsp[0].x == 0.0); ; - break;} +#line 514 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[0].x == 0.0); } +break; case 58: -#line 523 "pic.y" -{ yyval.by.val = 1.0; yyval.by.is_multiplicative = 0; ; - break;} +#line 520 "/u/jjc/groff/pic/pic.y" +{ yyval.by.val = 1.0; yyval.by.is_multiplicative = 0; } +break; case 59: -#line 525 "pic.y" -{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 0; ; - break;} +#line 522 "/u/jjc/groff/pic/pic.y" +{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 0; } +break; case 60: -#line 527 "pic.y" -{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 1; ; - break;} +#line 524 "/u/jjc/groff/pic/pic.y" +{ yyval.by.val = yyvsp[0].x; yyval.by.is_multiplicative = 1; } +break; case 61: -#line 532 "pic.y" +#line 529 "/u/jjc/groff/pic/pic.y" { yyval.pl.obj = yyvsp[0].spec->make_object(¤t_position, ¤t_direction); @@ -1809,154 +3854,154 @@ case 61: yyval.pl.x = current_position.x; yyval.pl.y = current_position.y; } - ; - break;} + } +break; case 62: -#line 546 "pic.y" -{ yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; ; - break;} +#line 543 "/u/jjc/groff/pic/pic.y" +{ yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; } +break; case 63: -#line 548 "pic.y" +#line 545 "/u/jjc/groff/pic/pic.y" { yyval.pl.obj = 0; yyval.pl.x = yyvsp[0].pair.x; yyval.pl.y = yyvsp[0].pair.y; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; - ; - break;} + } +break; case 64: -#line 556 "pic.y" +#line 553 "/u/jjc/groff/pic/pic.y" { yyval.pl = yyvsp[0].pl; define_label(yyvsp[-3].str, & yyval.pl); a_delete yyvsp[-3].str; - ; - break;} + } +break; case 65: -#line 562 "pic.y" +#line 559 "/u/jjc/groff/pic/pic.y" { yyval.state.x = current_position.x; yyval.state.y = current_position.y; yyval.state.dir = current_direction; - ; - break;} + } +break; case 66: -#line 568 "pic.y" +#line 565 "/u/jjc/groff/pic/pic.y" { current_position.x = yyvsp[-2].state.x; current_position.y = yyvsp[-2].state.y; current_direction = yyvsp[-2].state.dir; - ; - break;} + } +break; case 67: -#line 574 "pic.y" +#line 571 "/u/jjc/groff/pic/pic.y" { yyval.pl = yyvsp[-3].pl; - ; - break;} + } +break; case 68: -#line 578 "pic.y" +#line 575 "/u/jjc/groff/pic/pic.y" { yyval.pl.obj = 0; yyval.pl.x = current_position.x; yyval.pl.y = current_position.y; - ; - break;} + } +break; case 69: -#line 587 "pic.y" -{; - break;} +#line 584 "/u/jjc/groff/pic/pic.y" +{} +break; case 70: -#line 589 "pic.y" -{; - break;} +#line 586 "/u/jjc/groff/pic/pic.y" +{} +break; case 71: -#line 594 "pic.y" +#line 591 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(BOX_OBJECT); - ; - break;} + } +break; case 72: -#line 598 "pic.y" +#line 595 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(CIRCLE_OBJECT); - ; - break;} + } +break; case 73: -#line 602 "pic.y" +#line 599 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(ELLIPSE_OBJECT); - ; - break;} + } +break; case 74: -#line 606 "pic.y" +#line 603 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(ARC_OBJECT); yyval.spec->dir = current_direction; - ; - break;} + } +break; case 75: -#line 611 "pic.y" +#line 608 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(LINE_OBJECT); lookup_variable("lineht", & yyval.spec->segment_height); lookup_variable("linewid", & yyval.spec->segment_width); yyval.spec->dir = current_direction; - ; - break;} + } +break; case 76: -#line 618 "pic.y" +#line 615 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(ARROW_OBJECT); lookup_variable("lineht", & yyval.spec->segment_height); lookup_variable("linewid", & yyval.spec->segment_width); yyval.spec->dir = current_direction; - ; - break;} + } +break; case 77: -#line 625 "pic.y" +#line 622 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(MOVE_OBJECT); lookup_variable("moveht", & yyval.spec->segment_height); lookup_variable("movewid", & yyval.spec->segment_width); yyval.spec->dir = current_direction; - ; - break;} + } +break; case 78: -#line 632 "pic.y" +#line 629 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(SPLINE_OBJECT); lookup_variable("lineht", & yyval.spec->segment_height); lookup_variable("linewid", & yyval.spec->segment_width); yyval.spec->dir = current_direction; - ; - break;} + } +break; case 79: -#line 639 "pic.y" +#line 636 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(TEXT_OBJECT); yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); - ; - break;} + } +break; case 80: -#line 644 "pic.y" +#line 641 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(TEXT_OBJECT); yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1); - ; - break;} + } +break; case 81: -#line 649 "pic.y" +#line 646 "/u/jjc/groff/pic/pic.y" { yyval.spec = new object_spec(TEXT_OBJECT); yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x), yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); a_delete yyvsp[0].lstr.str; - ; - break;} + } +break; case 82: -#line 656 "pic.y" +#line 653 "/u/jjc/groff/pic/pic.y" { saved_state *p = new saved_state; yyval.pstate = p; @@ -1970,10 +4015,10 @@ case 82: current_table = new PTABLE(place); current_saved_state = p; olist.append(make_mark_object()); - ; - break;} + } +break; case 83: -#line 671 "pic.y" +#line 668 "/u/jjc/groff/pic/pic.y" { current_position.x = yyvsp[-2].pstate->x; current_position.y = yyvsp[-2].pstate->y; @@ -1984,42 +4029,42 @@ case 83: current_table = yyvsp[-2].pstate->tbl; current_saved_state = yyvsp[-2].pstate->prev; delete yyvsp[-2].pstate; - ; - break;} + } +break; case 84: -#line 683 "pic.y" +#line 680 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->height = yyvsp[0].x; yyval.spec->flags |= HAS_HEIGHT; - ; - break;} + } +break; case 85: -#line 689 "pic.y" +#line 686 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->radius = yyvsp[0].x; yyval.spec->flags |= HAS_RADIUS; - ; - break;} + } +break; case 86: -#line 695 "pic.y" +#line 692 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->width = yyvsp[0].x; yyval.spec->flags |= HAS_WIDTH; - ; - break;} + } +break; case 87: -#line 701 "pic.y" +#line 698 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->radius = yyvsp[0].x/2.0; yyval.spec->flags |= HAS_RADIUS; - ; - break;} + } +break; case 88: -#line 707 "pic.y" +#line 704 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= HAS_SEGMENT; @@ -2037,91 +4082,91 @@ case 88: yyval.spec->segment_pos.x -= yyvsp[0].x; break; } - ; - break;} + } +break; case 89: -#line 726 "pic.y" +#line 723 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->dir = UP_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.y += yyval.spec->segment_height; - ; - break;} + } +break; case 90: -#line 733 "pic.y" +#line 730 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->dir = UP_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.y += yyvsp[0].x; - ; - break;} + } +break; case 91: -#line 740 "pic.y" +#line 737 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->dir = DOWN_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.y -= yyval.spec->segment_height; - ; - break;} + } +break; case 92: -#line 747 "pic.y" +#line 744 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->dir = DOWN_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.y -= yyvsp[0].x; - ; - break;} + } +break; case 93: -#line 754 "pic.y" +#line 751 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->dir = RIGHT_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.x += yyval.spec->segment_width; - ; - break;} + } +break; case 94: -#line 761 "pic.y" +#line 758 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->dir = RIGHT_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.x += yyvsp[0].x; - ; - break;} + } +break; case 95: -#line 768 "pic.y" +#line 765 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->dir = LEFT_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.x -= yyval.spec->segment_width; - ; - break;} + } +break; case 96: -#line 775 "pic.y" +#line 772 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->dir = LEFT_DIRECTION; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.x -= yyvsp[0].x; - ; - break;} + } +break; case 97: -#line 782 "pic.y" +#line 779 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= HAS_FROM; yyval.spec->from.x = yyvsp[0].pair.x; yyval.spec->from.y = yyvsp[0].pair.y; - ; - break;} + } +break; case 98: -#line 789 "pic.y" +#line 786 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; if (yyval.spec->flags & HAS_SEGMENT) @@ -2135,10 +4180,10 @@ case 98: yyval.spec->flags |= HAS_TO; yyval.spec->to.x = yyvsp[0].pair.x; yyval.spec->to.y = yyvsp[0].pair.y; - ; - break;} + } +break; case 99: -#line 804 "pic.y" +#line 801 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= HAS_AT; @@ -2149,27 +4194,27 @@ case 99: yyval.spec->from.x = yyvsp[0].pair.x; yyval.spec->from.y = yyvsp[0].pair.y; } - ; - break;} + } +break; case 100: -#line 816 "pic.y" +#line 813 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= HAS_WITH; yyval.spec->with = yyvsp[0].pth; - ; - break;} + } +break; case 101: -#line 822 "pic.y" +#line 819 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= HAS_SEGMENT; yyval.spec->segment_pos.x += yyvsp[0].pair.x; yyval.spec->segment_pos.y += yyvsp[0].pair.y; - ; - break;} + } +break; case 102: -#line 829 "pic.y" +#line 826 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; if (yyval.spec->flags & HAS_SEGMENT) { @@ -2180,60 +4225,60 @@ case 102: yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0; yyval.spec->segment_is_absolute = 0; } - ; - break;} + } +break; case 103: -#line 841 "pic.y" +#line 838 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_DOTTED; lookup_variable("dashwid", & yyval.spec->dash_width); - ; - break;} + } +break; case 104: -#line 847 "pic.y" +#line 844 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= IS_DOTTED; yyval.spec->dash_width = yyvsp[0].x; - ; - break;} + } +break; case 105: -#line 853 "pic.y" +#line 850 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_DASHED; lookup_variable("dashwid", & yyval.spec->dash_width); - ; - break;} + } +break; case 106: -#line 859 "pic.y" +#line 856 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= IS_DASHED; yyval.spec->dash_width = yyvsp[0].x; - ; - break;} + } +break; case 107: -#line 865 "pic.y" +#line 862 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_DEFAULT_FILLED; - ; - break;} + } +break; case 108: -#line 870 "pic.y" +#line 867 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= IS_FILLED; yyval.spec->fill = yyvsp[0].x; - ; - break;} + } +break; case 109: -#line 876 "pic.y" +#line 873 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; - // line chop chop means line chop 0 chop 0 + /* line chop chop means line chop 0 chop 0*/ if (yyval.spec->flags & IS_DEFAULT_CHOPPED) { yyval.spec->flags |= IS_CHOPPED; yyval.spec->flags &= ~IS_DEFAULT_CHOPPED; @@ -2245,10 +4290,10 @@ case 109: else { yyval.spec->flags |= IS_DEFAULT_CHOPPED; } - ; - break;} + } +break; case 110: -#line 892 "pic.y" +#line 889 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; if (yyval.spec->flags & IS_DEFAULT_CHOPPED) { @@ -2264,68 +4309,68 @@ case 110: yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x; yyval.spec->flags |= IS_CHOPPED; } - ; - break;} + } +break; case 111: -#line 909 "pic.y" +#line 906 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_SAME; - ; - break;} + } +break; case 112: -#line 914 "pic.y" +#line 911 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_INVISIBLE; - ; - break;} + } +break; case 113: -#line 919 "pic.y" +#line 916 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= HAS_LEFT_ARROW_HEAD; - ; - break;} + } +break; case 114: -#line 924 "pic.y" +#line 921 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD; - ; - break;} + } +break; case 115: -#line 929 "pic.y" +#line 926 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD); - ; - break;} + } +break; case 116: -#line 934 "pic.y" +#line 931 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_CLOCKWISE; - ; - break;} + } +break; case 117: -#line 939 "pic.y" +#line 936 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags &= ~IS_CLOCKWISE; - ; - break;} + } +break; case 118: -#line 944 "pic.y" +#line 941 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; for (text_item **p = & yyval.spec->text; *p; p = &(*p)->next) ; *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); - ; - break;} + } +break; case 119: -#line 951 "pic.y" +#line 948 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; if (yyval.spec->text) { @@ -2333,10 +4378,10 @@ case 119: ; p->adj.h = LEFT_ADJUST; } - ; - break;} + } +break; case 120: -#line 960 "pic.y" +#line 957 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; if (yyval.spec->text) { @@ -2344,10 +4389,10 @@ case 120: ; p->adj.h = RIGHT_ADJUST; } - ; - break;} + } +break; case 121: -#line 969 "pic.y" +#line 966 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; if (yyval.spec->text) { @@ -2355,10 +4400,10 @@ case 121: ; p->adj.v = ABOVE_ADJUST; } - ; - break;} + } +break; case 122: -#line 978 "pic.y" +#line 975 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; if (yyval.spec->text) { @@ -2366,49 +4411,49 @@ case 122: ; p->adj.v = BELOW_ADJUST; } - ; - break;} + } +break; case 123: -#line 987 "pic.y" +#line 984 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-2].spec; yyval.spec->flags |= HAS_THICKNESS; yyval.spec->thickness = yyvsp[0].x; - ; - break;} + } +break; case 124: -#line 993 "pic.y" +#line 990 "/u/jjc/groff/pic/pic.y" { yyval.spec = yyvsp[-1].spec; yyval.spec->flags |= IS_ALIGNED; - ; - break;} + } +break; case 125: -#line 1001 "pic.y" +#line 998 "/u/jjc/groff/pic/pic.y" { yyval.lstr = yyvsp[0].lstr; - ; - break;} + } +break; case 126: -#line 1005 "pic.y" +#line 1002 "/u/jjc/groff/pic/pic.y" { yyval.lstr.filename = yyvsp[-2].lstr.filename; yyval.lstr.lineno = yyvsp[-2].lstr.lineno; yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv); a_delete yyvsp[-1].dv.v; a_delete yyvsp[-2].lstr.str; - ; - break;} + } +break; case 127: -#line 1016 "pic.y" +#line 1013 "/u/jjc/groff/pic/pic.y" { yyval.dv.v = 0; yyval.dv.nv = 0; yyval.dv.maxv = 0; - ; - break;} + } +break; case 128: -#line 1022 "pic.y" +#line 1019 "/u/jjc/groff/pic/pic.y" { yyval.dv = yyvsp[-2].dv; if (yyval.dv.nv >= yyval.dv.maxv) { @@ -2426,105 +4471,105 @@ case 128: } yyval.dv.v[yyval.dv.nv] = yyvsp[0].x; yyval.dv.nv += 1; - ; - break;} + } +break; case 129: -#line 1044 "pic.y" -{ yyval.pair = yyvsp[0].pair; ; - break;} +#line 1041 "/u/jjc/groff/pic/pic.y" +{ yyval.pair = yyvsp[0].pair; } +break; case 130: -#line 1046 "pic.y" +#line 1043 "/u/jjc/groff/pic/pic.y" { position pos = yyvsp[0].pl; yyval.pair.x = pos.x; yyval.pair.y = pos.y; - ; - break;} + } +break; case 131: -#line 1055 "pic.y" -{ yyval.pair = yyvsp[0].pair; ; - break;} +#line 1052 "/u/jjc/groff/pic/pic.y" +{ yyval.pair = yyvsp[0].pair; } +break; case 132: -#line 1057 "pic.y" +#line 1054 "/u/jjc/groff/pic/pic.y" { yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x; yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y; - ; - break;} + } +break; case 133: -#line 1062 "pic.y" +#line 1059 "/u/jjc/groff/pic/pic.y" { yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x; yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y; - ; - break;} + } +break; case 134: -#line 1067 "pic.y" +#line 1064 "/u/jjc/groff/pic/pic.y" { yyval.pair.x = yyvsp[-3].pair.x; yyval.pair.y = yyvsp[-1].pair.y; - ; - break;} + } +break; case 135: -#line 1072 "pic.y" +#line 1069 "/u/jjc/groff/pic/pic.y" { yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x; yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y; - ; - break;} + } +break; case 136: -#line 1077 "pic.y" +#line 1074 "/u/jjc/groff/pic/pic.y" { yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x; yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y; - ; - break;} + } +break; case 139: -#line 1090 "pic.y" -{ yyval.pair.x = yyvsp[-2].x; yyval.pair.y = yyvsp[0].x; ; - break;} +#line 1087 "/u/jjc/groff/pic/pic.y" +{ yyval.pair.x = yyvsp[-2].x; yyval.pair.y = yyvsp[0].x; } +break; case 140: -#line 1092 "pic.y" -{ yyval.pair = yyvsp[-1].pair; ; - break;} +#line 1089 "/u/jjc/groff/pic/pic.y" +{ yyval.pair = yyvsp[-1].pair; } +break; case 141: -#line 1097 "pic.y" -{ yyval.pl = yyvsp[0].pl; ; - break;} +#line 1094 "/u/jjc/groff/pic/pic.y" +{ yyval.pl = yyvsp[0].pl; } +break; case 142: -#line 1099 "pic.y" +#line 1096 "/u/jjc/groff/pic/pic.y" { path pth(yyvsp[0].crn); if (!pth.follow(yyvsp[-1].pl, & yyval.pl)) YYABORT; - ; - break;} + } +break; case 143: -#line 1105 "pic.y" +#line 1102 "/u/jjc/groff/pic/pic.y" { path pth(yyvsp[-1].crn); if (!pth.follow(yyvsp[0].pl, & yyval.pl)) YYABORT; - ; - break;} + } +break; case 144: -#line 1111 "pic.y" +#line 1108 "/u/jjc/groff/pic/pic.y" { path pth(yyvsp[-2].crn); if (!pth.follow(yyvsp[0].pl, & yyval.pl)) YYABORT; - ; - break;} + } +break; case 145: -#line 1117 "pic.y" +#line 1114 "/u/jjc/groff/pic/pic.y" { yyval.pl.x = current_position.x; yyval.pl.y = current_position.y; yyval.pl.obj = 0; - ; - break;} + } +break; case 146: -#line 1126 "pic.y" +#line 1123 "/u/jjc/groff/pic/pic.y" { place *p = lookup_label(yyvsp[0].str); if (!p) { @@ -2533,43 +4578,43 @@ case 146: } yyval.pl = *p; a_delete yyvsp[0].str; - ; - break;} + } +break; case 147: -#line 1136 "pic.y" +#line 1133 "/u/jjc/groff/pic/pic.y" { yyval.pl.obj = yyvsp[0].obj; - ; - break;} + } +break; case 148: -#line 1140 "pic.y" +#line 1137 "/u/jjc/groff/pic/pic.y" { path pth(yyvsp[0].str); if (!pth.follow(yyvsp[-2].pl, & yyval.pl)) YYABORT; - ; - break;} + } +break; case 149: -#line 1149 "pic.y" -{ yyval.n = yyvsp[0].n; ; - break;} +#line 1146 "/u/jjc/groff/pic/pic.y" +{ yyval.n = yyvsp[0].n; } +break; case 150: -#line 1151 "pic.y" +#line 1148 "/u/jjc/groff/pic/pic.y" { - // XXX Check for overflow (and non-integers?). + /* XXX Check for overflow (and non-integers?).*/ yyval.n = (int)yyvsp[-1].x; - ; - break;} + } +break; case 151: -#line 1159 "pic.y" -{ yyval.n = 1; ; - break;} +#line 1156 "/u/jjc/groff/pic/pic.y" +{ yyval.n = 1; } +break; case 152: -#line 1161 "pic.y" -{ yyval.n = yyvsp[-1].n; ; - break;} +#line 1158 "/u/jjc/groff/pic/pic.y" +{ yyval.n = yyvsp[-1].n; } +break; case 153: -#line 1166 "pic.y" +#line 1163 "/u/jjc/groff/pic/pic.y" { int count = 0; for (object *p = olist.head; p != 0; p = p->next) @@ -2582,10 +4627,10 @@ case 153: object_type_name(yyvsp[0].obtype)); YYABORT; } - ; - break;} + } +break; case 154: -#line 1180 "pic.y" +#line 1177 "/u/jjc/groff/pic/pic.y" { int count = 0; for (object *p = olist.tail; p != 0; p = p->prev) @@ -2598,319 +4643,319 @@ case 154: ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype)); YYABORT; } - ; - break;} + } +break; case 155: -#line 1197 "pic.y" -{ yyval.obtype = BOX_OBJECT; ; - break;} +#line 1194 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = BOX_OBJECT; } +break; case 156: -#line 1199 "pic.y" -{ yyval.obtype = CIRCLE_OBJECT; ; - break;} +#line 1196 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = CIRCLE_OBJECT; } +break; case 157: -#line 1201 "pic.y" -{ yyval.obtype = ELLIPSE_OBJECT; ; - break;} +#line 1198 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = ELLIPSE_OBJECT; } +break; case 158: -#line 1203 "pic.y" -{ yyval.obtype = ARC_OBJECT; ; - break;} +#line 1200 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = ARC_OBJECT; } +break; case 159: -#line 1205 "pic.y" -{ yyval.obtype = LINE_OBJECT; ; - break;} +#line 1202 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = LINE_OBJECT; } +break; case 160: -#line 1207 "pic.y" -{ yyval.obtype = ARROW_OBJECT; ; - break;} +#line 1204 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = ARROW_OBJECT; } +break; case 161: -#line 1209 "pic.y" -{ yyval.obtype = SPLINE_OBJECT; ; - break;} +#line 1206 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = SPLINE_OBJECT; } +break; case 162: -#line 1211 "pic.y" -{ yyval.obtype = BLOCK_OBJECT; ; - break;} +#line 1208 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = BLOCK_OBJECT; } +break; case 163: -#line 1213 "pic.y" -{ yyval.obtype = TEXT_OBJECT; ; - break;} +#line 1210 "/u/jjc/groff/pic/pic.y" +{ yyval.obtype = TEXT_OBJECT; } +break; case 164: -#line 1218 "pic.y" +#line 1215 "/u/jjc/groff/pic/pic.y" { yyval.pth = new path(yyvsp[0].str); - ; - break;} + } +break; case 165: -#line 1222 "pic.y" +#line 1219 "/u/jjc/groff/pic/pic.y" { yyval.pth = yyvsp[-2].pth; yyval.pth->append(yyvsp[0].str); - ; - break;} + } +break; case 166: -#line 1230 "pic.y" +#line 1227 "/u/jjc/groff/pic/pic.y" { yyval.pth = new path(yyvsp[0].crn); - ; - break;} + } +break; case 167: -#line 1237 "pic.y" +#line 1234 "/u/jjc/groff/pic/pic.y" { yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 168: -#line 1241 "pic.y" +#line 1238 "/u/jjc/groff/pic/pic.y" { yyval.pth = yyvsp[-1].pth; yyval.pth->append(yyvsp[0].crn); - ; - break;} + } +break; case 169: -#line 1249 "pic.y" +#line 1246 "/u/jjc/groff/pic/pic.y" { yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 170: -#line 1254 "pic.y" +#line 1251 "/u/jjc/groff/pic/pic.y" { lex_warning("`%1%2 last %3' in `with' argument ignored", yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype)); yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 171: -#line 1260 "pic.y" +#line 1257 "/u/jjc/groff/pic/pic.y" { lex_warning("`last %1' in `with' argument ignored", object_type_name(yyvsp[-1].obtype)); yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 172: -#line 1266 "pic.y" +#line 1263 "/u/jjc/groff/pic/pic.y" { lex_warning("`%1%2 %3' in `with' argument ignored", yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype)); yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 173: -#line 1272 "pic.y" +#line 1269 "/u/jjc/groff/pic/pic.y" { lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str); a_delete yyvsp[-1].str; yyval.pth = yyvsp[0].pth; - ; - break;} + } +break; case 174: -#line 1281 "pic.y" -{ yyval.crn = &object::north; ; - break;} +#line 1278 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north; } +break; case 175: -#line 1283 "pic.y" -{ yyval.crn = &object::east; ; - break;} +#line 1280 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::east; } +break; case 176: -#line 1285 "pic.y" -{ yyval.crn = &object::west; ; - break;} +#line 1282 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::west; } +break; case 177: -#line 1287 "pic.y" -{ yyval.crn = &object::south; ; - break;} +#line 1284 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south; } +break; case 178: -#line 1289 "pic.y" -{ yyval.crn = &object::north_east; ; - break;} +#line 1286 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_east; } +break; case 179: -#line 1291 "pic.y" -{ yyval.crn = &object:: south_east; ; - break;} +#line 1288 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object:: south_east; } +break; case 180: -#line 1293 "pic.y" -{ yyval.crn = &object::north_west; ; - break;} +#line 1290 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_west; } +break; case 181: -#line 1295 "pic.y" -{ yyval.crn = &object::south_west; ; - break;} +#line 1292 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south_west; } +break; case 182: -#line 1297 "pic.y" -{ yyval.crn = &object::center; ; - break;} +#line 1294 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::center; } +break; case 183: -#line 1299 "pic.y" -{ yyval.crn = &object::start; ; - break;} +#line 1296 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::start; } +break; case 184: -#line 1301 "pic.y" -{ yyval.crn = &object::end; ; - break;} +#line 1298 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::end; } +break; case 185: -#line 1303 "pic.y" -{ yyval.crn = &object::north; ; - break;} +#line 1300 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north; } +break; case 186: -#line 1305 "pic.y" -{ yyval.crn = &object::south; ; - break;} +#line 1302 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south; } +break; case 187: -#line 1307 "pic.y" -{ yyval.crn = &object::west; ; - break;} +#line 1304 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::west; } +break; case 188: -#line 1309 "pic.y" -{ yyval.crn = &object::east; ; - break;} +#line 1306 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::east; } +break; case 189: -#line 1311 "pic.y" -{ yyval.crn = &object::north_west; ; - break;} +#line 1308 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_west; } +break; case 190: -#line 1313 "pic.y" -{ yyval.crn = &object::south_west; ; - break;} +#line 1310 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south_west; } +break; case 191: -#line 1315 "pic.y" -{ yyval.crn = &object::north_east; ; - break;} +#line 1312 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_east; } +break; case 192: -#line 1317 "pic.y" -{ yyval.crn = &object::south_east; ; - break;} +#line 1314 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south_east; } +break; case 193: -#line 1319 "pic.y" -{ yyval.crn = &object::west; ; - break;} +#line 1316 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::west; } +break; case 194: -#line 1321 "pic.y" -{ yyval.crn = &object::east; ; - break;} +#line 1318 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::east; } +break; case 195: -#line 1323 "pic.y" -{ yyval.crn = &object::north_west; ; - break;} +#line 1320 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_west; } +break; case 196: -#line 1325 "pic.y" -{ yyval.crn = &object::south_west; ; - break;} +#line 1322 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south_west; } +break; case 197: -#line 1327 "pic.y" -{ yyval.crn = &object::north_east; ; - break;} +#line 1324 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::north_east; } +break; case 198: -#line 1329 "pic.y" -{ yyval.crn = &object::south_east; ; - break;} +#line 1326 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::south_east; } +break; case 199: -#line 1331 "pic.y" -{ yyval.crn = &object::center; ; - break;} +#line 1328 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::center; } +break; case 200: -#line 1333 "pic.y" -{ yyval.crn = &object::start; ; - break;} +#line 1330 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::start; } +break; case 201: -#line 1335 "pic.y" -{ yyval.crn = &object::end; ; - break;} +#line 1332 "/u/jjc/groff/pic/pic.y" +{ yyval.crn = &object::end; } +break; case 202: -#line 1340 "pic.y" +#line 1337 "/u/jjc/groff/pic/pic.y" { if (!lookup_variable(yyvsp[0].str, & yyval.x)) { lex_error("there is no variable `%1'", yyvsp[0].str); YYABORT; } a_delete yyvsp[0].str; - ; - break;} + } +break; case 203: -#line 1348 "pic.y" -{ yyval.x = yyvsp[0].x; ; - break;} +#line 1345 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[0].x; } +break; case 204: -#line 1350 "pic.y" +#line 1347 "/u/jjc/groff/pic/pic.y" { if (yyvsp[-1].pl.obj != 0) yyval.x = yyvsp[-1].pl.obj->origin().x; else yyval.x = yyvsp[-1].pl.x; - ; - break;} + } +break; case 205: -#line 1357 "pic.y" +#line 1354 "/u/jjc/groff/pic/pic.y" { if (yyvsp[-1].pl.obj != 0) yyval.x = yyvsp[-1].pl.obj->origin().y; else yyval.x = yyvsp[-1].pl.y; - ; - break;} + } +break; case 206: -#line 1364 "pic.y" +#line 1361 "/u/jjc/groff/pic/pic.y" { if (yyvsp[-1].pl.obj != 0) yyval.x = yyvsp[-1].pl.obj->height(); else yyval.x = 0.0; - ; - break;} + } +break; case 207: -#line 1371 "pic.y" +#line 1368 "/u/jjc/groff/pic/pic.y" { if (yyvsp[-1].pl.obj != 0) yyval.x = yyvsp[-1].pl.obj->width(); else yyval.x = 0.0; - ; - break;} + } +break; case 208: -#line 1378 "pic.y" +#line 1375 "/u/jjc/groff/pic/pic.y" { if (yyvsp[-1].pl.obj != 0) yyval.x = yyvsp[-1].pl.obj->radius(); else yyval.x = 0.0; - ; - break;} + } +break; case 209: -#line 1385 "pic.y" -{ yyval.x = yyvsp[-2].x + yyvsp[0].x; ; - break;} +#line 1382 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-2].x + yyvsp[0].x; } +break; case 210: -#line 1387 "pic.y" -{ yyval.x = yyvsp[-2].x - yyvsp[0].x; ; - break;} +#line 1384 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-2].x - yyvsp[0].x; } +break; case 211: -#line 1389 "pic.y" -{ yyval.x = yyvsp[-2].x * yyvsp[0].x; ; - break;} +#line 1386 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-2].x * yyvsp[0].x; } +break; case 212: -#line 1391 "pic.y" +#line 1388 "/u/jjc/groff/pic/pic.y" { if (yyvsp[0].x == 0.0) { lex_error("division by zero"); YYABORT; } yyval.x = yyvsp[-2].x/yyvsp[0].x; - ; - break;} + } +break; case 213: -#line 1399 "pic.y" +#line 1396 "/u/jjc/groff/pic/pic.y" { if (yyvsp[0].x == 0.0) { lex_error("modulus by zero"); YYABORT; } yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x); - ; - break;} + } +break; case 214: -#line 1407 "pic.y" +#line 1404 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = pow(yyvsp[-2].x, yyvsp[0].x); @@ -2922,18 +4967,18 @@ case 214: lex_error("result of `^' operator out of range"); YYABORT; } - ; - break;} + } +break; case 215: -#line 1420 "pic.y" -{ yyval.x = -yyvsp[0].x; ; - break;} +#line 1417 "/u/jjc/groff/pic/pic.y" +{ yyval.x = -yyvsp[0].x; } +break; case 216: -#line 1422 "pic.y" -{ yyval.x = yyvsp[-1].x; ; - break;} +#line 1419 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-1].x; } +break; case 217: -#line 1424 "pic.y" +#line 1421 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = sin(yyvsp[-1].x); @@ -2941,10 +4986,10 @@ case 217: lex_error("sin result out of range"); YYABORT; } - ; - break;} + } +break; case 218: -#line 1433 "pic.y" +#line 1430 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = cos(yyvsp[-1].x); @@ -2952,10 +4997,10 @@ case 218: lex_error("cos result out of range"); YYABORT; } - ; - break;} + } +break; case 219: -#line 1442 "pic.y" +#line 1439 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x); @@ -2967,10 +5012,10 @@ case 219: lex_error("atan2 result out of range"); YYABORT; } - ; - break;} + } +break; case 220: -#line 1455 "pic.y" +#line 1452 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = log10(yyvsp[-1].x); @@ -2978,10 +5023,10 @@ case 220: lex_error("log result out of range"); YYABORT; } - ; - break;} + } +break; case 221: -#line 1464 "pic.y" +#line 1461 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = pow(10.0, yyvsp[-1].x); @@ -2989,10 +5034,10 @@ case 221: lex_error("exp result out of range"); YYABORT; } - ; - break;} + } +break; case 222: -#line 1473 "pic.y" +#line 1470 "/u/jjc/groff/pic/pic.y" { errno = 0; yyval.x = sqrt(yyvsp[-1].x); @@ -3000,529 +5045,122 @@ case 222: lex_error("sqrt argument out of domain"); YYABORT; } - ; - break;} + } +break; case 223: -#line 1482 "pic.y" -{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; ; - break;} +#line 1479 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } +break; case 224: -#line 1484 "pic.y" -{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; ; - break;} +#line 1481 "/u/jjc/groff/pic/pic.y" +{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } +break; case 225: -#line 1486 "pic.y" -{ yyval.x = floor(yyvsp[-1].x); ; - break;} +#line 1483 "/u/jjc/groff/pic/pic.y" +{ yyval.x = floor(yyvsp[-1].x); } +break; case 226: -#line 1488 "pic.y" -{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); ; - break;} +#line 1485 "/u/jjc/groff/pic/pic.y" +{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); } +break; case 227: -#line 1490 "pic.y" +#line 1487 "/u/jjc/groff/pic/pic.y" { /* return a random number in the range [0,1) */ /* portable, but not very random */ yyval.x = (rand() & 0x7fff) / double(0x8000); - ; - break;} + } +break; case 228: -#line 1496 "pic.y" -{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); ; - break;} +#line 1493 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); } +break; case 229: -#line 1498 "pic.y" -{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); ; - break;} +#line 1495 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); } +break; case 230: -#line 1500 "pic.y" -{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); ; - break;} +#line 1497 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); } +break; case 231: -#line 1502 "pic.y" -{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); ; - break;} +#line 1499 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); } +break; case 232: -#line 1504 "pic.y" -{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); ; - break;} +#line 1501 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); } +break; case 233: -#line 1506 "pic.y" -{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); ; - break;} +#line 1503 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); } +break; case 234: -#line 1508 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); ; - break;} +#line 1505 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } +break; case 235: -#line 1510 "pic.y" -{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); ; - break;} +#line 1507 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } +break; case 236: -#line 1512 "pic.y" -{ yyval.x = (yyvsp[0].x == 0.0); ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 442 "/usr/local/lib/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); +#line 1509 "/u/jjc/groff/pic/pic.y" +{ yyval.x = (yyvsp[0].x == 0.0); } +break; +#line 5111 "y.tab.c" } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) + yyssp -= yym; + yystate = *yyssp; + yyvsp -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state 0 to\ + state %d\n", YYFINAL); #endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; + yystate = YYFINAL; + *++yyssp = YYFINAL; + *++yyvsp = yyval; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", + YYFINAL, yychar, yys); + } #endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + } + if (yychar == 0) goto yyaccept; + goto yyloop; } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state %d \ +to state %d\n", *yyssp, yystate); #endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) + if (yyssp >= yyss + yystacksize - 1) { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; + goto yyoverflow; } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; -} -#line 1516 "pic.y" - - -/* bison defines const to be empty unless __STDC__ is defined, which it -isn't under cfront */ - -#ifdef const -#undef const -#endif - -static struct { - const char *name; - double val; - int scaled; // non-zero if val should be multiplied by scale -} defaults_table[] = { - "arcrad", .25, 1, - "arrowht", .1, 1, - "arrowwid", .05, 1, - "circlerad", .25, 1, - "boxht", .5, 1, - "boxwid", .75, 1, - "boxrad", 0.0, 1, - "dashwid", .05, 1, - "ellipseht", .5, 1, - "ellipsewid", .75, 1, - "moveht", .5, 1, - "movewid", .5, 1, - "lineht", .5, 1, - "linewid", .5, 1, - "textht", 0.0, 1, - "textwid", 0.0, 1, - "scale", 1.0, 0, - "linethick", -1.0, 0, // in points - "fillval", .5, 0, - "arrowhead", 1.0, 0, - "maxpswid", 8.5, 0, - "maxpsht", 11.0, 0, -}; - -place *lookup_label(const char *label) -{ - saved_state *state = current_saved_state; - PTABLE(place) *tbl = current_table; - for (;;) { - place *pl = tbl->lookup(label); - if (pl) - return pl; - if (!state) - return 0; - tbl = state->tbl; - state = state->prev; - } -} - -void define_label(const char *label, const place *pl) -{ - place *p = new place; - *p = *pl; - current_table->define(label, p); -} - -int lookup_variable(const char *name, double *val) -{ - place *pl = lookup_label(name); - if (pl) { - *val = pl->x; - return 1; - } - return 0; -} - -void define_variable(const char *name, double val) -{ - place *p = new place; - p->obj = 0; - p->x = val; - p->y = 0.0; - current_table->define(name, p); - if (strcmp(name, "scale") == 0) { - // When the scale changes, reset all scaled pre-defined variables to - // their default values. - for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) - if (defaults_table[i].scaled) - define_variable(defaults_table[i].name, val*defaults_table[i].val); - } -} - -// called once only (not once per parse) - -void parse_init() -{ - current_direction = RIGHT_DIRECTION; - current_position.x = 0.0; - current_position.y = 0.0; - // This resets everything to its default value. - reset_all(); -} - -void reset(const char *nm) -{ - for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) - if (strcmp(nm, defaults_table[i].name) == 0) { - double val = defaults_table[i].val; - if (defaults_table[i].scaled) { - double scale; - lookup_variable("scale", &scale); - val *= scale; - } - define_variable(defaults_table[i].name, val); - return; - } - lex_error("`%1' is not a predefined variable", nm); -} - -void reset_all() -{ - // We only have to explicitly reset the pre-defined variables that - // aren't scaled because `scale' is not scaled, and changing the - // value of `scale' will reset all the pre-defined variables that - // are scaled. - for (int i = 0; i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) - if (!defaults_table[i].scaled) - define_variable(defaults_table[i].name, defaults_table[i].val); -} - -// called after each parse - -void parse_cleanup() -{ - while (current_saved_state != 0) { - delete current_table; - current_table = current_saved_state->tbl; - saved_state *tem = current_saved_state; - current_saved_state = current_saved_state->prev; - delete tem; - } - assert(current_table == &top_table); - PTABLE_ITERATOR(place) iter(current_table); - const char *key; - place *pl; - while (iter.next(&key, &pl)) - if (pl->obj != 0) { - position pos = pl->obj->origin(); - pl->obj = 0; - pl->x = pos.x; - pl->y = pos.y; - } - while (olist.head != 0) { - object *tem = olist.head; - olist.head = olist.head->next; - delete tem; - } - olist.tail = 0; - current_direction = RIGHT_DIRECTION; - current_position.x = 0.0; - current_position.y = 0.0; -} - -const char *ordinal_postfix(int n) -{ - if (n < 10 || n > 20) - switch (n % 10) { - case 1: - return "st"; - case 2: - return "nd"; - case 3: - return "rd"; - } - return "th"; -} - -const char *object_type_name(object_type type) -{ - switch (type) { - case BOX_OBJECT: - return "box"; - case CIRCLE_OBJECT: - return "circle"; - case ELLIPSE_OBJECT: - return "ellipse"; - case ARC_OBJECT: - return "arc"; - case SPLINE_OBJECT: - return "spline"; - case LINE_OBJECT: - return "line"; - case ARROW_OBJECT: - return "arrow"; - case MOVE_OBJECT: - return "move"; - case TEXT_OBJECT: - return "\"\""; - case BLOCK_OBJECT: - return "[]"; - case OTHER_OBJECT: - case MARK_OBJECT: - default: - break; - } - return "object"; -} - -static char sprintf_buf[1024]; - -char *format_number(const char *form, double n) -{ - if (form == 0) - form = "%g"; - else { - // this is a fairly feeble attempt at validation of the format - int nspecs = 0; - for (const char *p = form; *p != '\0'; p++) - if (*p == '%') { - if (p[1] == '%') - p++; - else - nspecs++; - } - if (nspecs > 1) { - lex_error("bad format `%1'", form); - return strsave(form); - } - } - sprintf(sprintf_buf, form, n); - return strsave(sprintf_buf); -} - -char *do_sprintf(const char *form, const double *v, int nv) -{ - string result; - int i = 0; - string one_format; - while (*form) { - if (*form == '%') { - one_format += *form++; - for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++) - one_format += *form; - if (*form == '\0' || strchr("eEfgG%", *form) == 0) { - lex_error("bad sprintf format"); - result += one_format; - result += form; - break; - } - if (*form == '%') { - one_format += *form++; - one_format += '\0'; - sprintf(sprintf_buf, one_format.contents()); - } - else { - if (i >= nv) { - lex_error("too few arguments to sprintf"); - result += one_format; - result += form; - break; - } - one_format += *form++; - one_format += '\0'; - sprintf(sprintf_buf, one_format.contents(), v[i++]); - } - one_format.clear(); - result += sprintf_buf; - } - else - result += *form++; - } - result += '\0'; - return strsave(result.contents()); + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; +yyoverflow: + yyerror("yacc stack overflow"); +yyabort: + return (1); +yyaccept: + return (0); } diff --git a/pic/pic.tab.h b/pic/pic.tab.h index c5b931c03..c71bdfd2c 100644 --- a/pic/pic.tab.h +++ b/pic/pic.tab.h @@ -1,3 +1,113 @@ +#define LABEL 257 +#define VARIABLE 258 +#define NUMBER 259 +#define TEXT 260 +#define COMMAND_LINE 261 +#define DELIMITED 262 +#define ORDINAL 263 +#define TH 264 +#define LEFT_ARROW_HEAD 265 +#define RIGHT_ARROW_HEAD 266 +#define DOUBLE_ARROW_HEAD 267 +#define LAST 268 +#define UP 269 +#define DOWN 270 +#define LEFT 271 +#define RIGHT 272 +#define BOX 273 +#define CIRCLE 274 +#define ELLIPSE 275 +#define ARC 276 +#define LINE 277 +#define ARROW 278 +#define MOVE 279 +#define SPLINE 280 +#define HEIGHT 281 +#define RADIUS 282 +#define WIDTH 283 +#define DIAMETER 284 +#define FROM 285 +#define TO 286 +#define AT 287 +#define WITH 288 +#define BY 289 +#define THEN 290 +#define DOTTED 291 +#define DASHED 292 +#define CHOP 293 +#define SAME 294 +#define INVISIBLE 295 +#define LJUST 296 +#define RJUST 297 +#define ABOVE 298 +#define BELOW 299 +#define OF 300 +#define THE 301 +#define WAY 302 +#define BETWEEN 303 +#define AND 304 +#define HERE 305 +#define DOT_N 306 +#define DOT_E 307 +#define DOT_W 308 +#define DOT_S 309 +#define DOT_NE 310 +#define DOT_SE 311 +#define DOT_NW 312 +#define DOT_SW 313 +#define DOT_C 314 +#define DOT_START 315 +#define DOT_END 316 +#define DOT_X 317 +#define DOT_Y 318 +#define DOT_HT 319 +#define DOT_WID 320 +#define DOT_RAD 321 +#define SIN 322 +#define COS 323 +#define ATAN2 324 +#define LOG 325 +#define EXP 326 +#define SQRT 327 +#define K_MAX 328 +#define K_MIN 329 +#define INT 330 +#define RAND 331 +#define COPY 332 +#define THRU 333 +#define TOP 334 +#define BOTTOM 335 +#define UPPER 336 +#define LOWER 337 +#define SH 338 +#define PRINT 339 +#define CW 340 +#define CCW 341 +#define FOR 342 +#define DO 343 +#define IF 344 +#define ELSE 345 +#define ANDAND 346 +#define OROR 347 +#define NOTEQUAL 348 +#define EQUALEQUAL 349 +#define LESSEQUAL 350 +#define GREATEREQUAL 351 +#define LEFT_CORNER 352 +#define RIGHT_CORNER 353 +#define CENTER 354 +#define END 355 +#define START 356 +#define RESET 357 +#define UNTIL 358 +#define PLOT 359 +#define THICKNESS 360 +#define FILL 361 +#define ALIGNED 362 +#define SPRINTF 363 +#define COMMAND 364 +#define DEFINE 365 +#define UNDEF 366 typedef union { char *str; int n; @@ -16,116 +126,4 @@ typedef union { graphics_state state; object_type obtype; } YYSTYPE; -#define LABEL 258 -#define VARIABLE 259 -#define NUMBER 260 -#define TEXT 261 -#define COMMAND_LINE 262 -#define DELIMITED 263 -#define ORDINAL 264 -#define TH 265 -#define LEFT_ARROW_HEAD 266 -#define RIGHT_ARROW_HEAD 267 -#define DOUBLE_ARROW_HEAD 268 -#define LAST 269 -#define UP 270 -#define DOWN 271 -#define LEFT 272 -#define RIGHT 273 -#define BOX 274 -#define CIRCLE 275 -#define ELLIPSE 276 -#define ARC 277 -#define LINE 278 -#define ARROW 279 -#define MOVE 280 -#define SPLINE 281 -#define HEIGHT 282 -#define RADIUS 283 -#define WIDTH 284 -#define DIAMETER 285 -#define FROM 286 -#define TO 287 -#define AT 288 -#define WITH 289 -#define BY 290 -#define THEN 291 -#define DOTTED 292 -#define DASHED 293 -#define CHOP 294 -#define SAME 295 -#define INVISIBLE 296 -#define LJUST 297 -#define RJUST 298 -#define ABOVE 299 -#define BELOW 300 -#define OF 301 -#define THE 302 -#define WAY 303 -#define BETWEEN 304 -#define AND 305 -#define HERE 306 -#define DOT_N 307 -#define DOT_E 308 -#define DOT_W 309 -#define DOT_S 310 -#define DOT_NE 311 -#define DOT_SE 312 -#define DOT_NW 313 -#define DOT_SW 314 -#define DOT_C 315 -#define DOT_START 316 -#define DOT_END 317 -#define DOT_X 318 -#define DOT_Y 319 -#define DOT_HT 320 -#define DOT_WID 321 -#define DOT_RAD 322 -#define SIN 323 -#define COS 324 -#define ATAN2 325 -#define LOG 326 -#define EXP 327 -#define SQRT 328 -#define MAX 329 -#define MIN 330 -#define INT 331 -#define RAND 332 -#define COPY 333 -#define THRU 334 -#define TOP 335 -#define BOTTOM 336 -#define UPPER 337 -#define LOWER 338 -#define SH 339 -#define PRINT 340 -#define CW 341 -#define CCW 342 -#define FOR 343 -#define DO 344 -#define IF 345 -#define ELSE 346 -#define ANDAND 347 -#define OROR 348 -#define NOTEQUAL 349 -#define EQUALEQUAL 350 -#define LESSEQUAL 351 -#define GREATEREQUAL 352 -#define LEFT_CORNER 353 -#define RIGHT_CORNER 354 -#define CENTER 355 -#define END 356 -#define START 357 -#define RESET 358 -#define UNTIL 359 -#define PLOT 360 -#define THICKNESS 361 -#define FILL 362 -#define ALIGNED 363 -#define SPRINTF 364 -#define COMMAND 365 -#define DEFINE 366 -#define UNDEF 367 - - extern YYSTYPE yylval; @@ -41,10 +41,6 @@ extern "C" { /* Maximum number of characters produced by printf("%g") */ #define GDIGITS 14 -#ifndef __BORLANDC__ -#define YYDEBUG 1 -#endif /* __BORLANDC__ */ - int yylex(); void yyerror(const char *); @@ -168,8 +164,8 @@ char *do_sprintf(const char *form, const double *v, int nv); %token LOG %token EXP %token SQRT -%token MAX -%token MIN +%token K_MAX +%token K_MIN %token INT %token RAND %token COPY @@ -226,7 +222,7 @@ parses properly. */ %left CHOP DASHED DOTTED UP DOWN FILL %left LABEL -%left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT MAX MIN INT RAND LAST +%left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND LAST %left ORDINAL HERE '`' /* these need to be lower than '-' */ @@ -341,6 +337,7 @@ placeless_element: | PRINT print_args { fprintf(stderr, "%s\n", $2.str); + a_delete $2.str; fflush(stderr); } | SH @@ -1478,9 +1475,9 @@ expr: YYABORT; } } - | MAX '(' any_expr ',' any_expr ')' + | K_MAX '(' any_expr ',' any_expr ')' { $$ = $3 > $5 ? $3 : $5; } - | MIN '(' any_expr ',' any_expr ')' + | K_MIN '(' any_expr ',' any_expr ')' { $$ = $3 < $5 ? $3 : $5; } | INT '(' any_expr ')' { $$ = floor($3); } diff --git a/pic/y.output b/pic/y.output deleted file mode 100644 index e69de29bb..000000000 --- a/pic/y.output +++ /dev/null diff --git a/refer/label.cc b/refer/label.cc index 2c8bd9ce0..35ddd1b75 100644 --- a/refer/label.cc +++ b/refer/label.cc @@ -1,14 +1,8 @@ - -/* A Bison parser, made from label.y */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define TOKEN_LETTER 258 -#define TOKEN_LITERAL 259 -#define TOKEN_DIGIT 260 - -#line 21 "label.y" - +#ifndef lint +static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90"; +#endif +#define YYBYACC 1 +#line 22 "label.y" #include "refer.h" #include "refid.h" @@ -33,7 +27,7 @@ label_info *lookup_label(const string &label); struct expression { enum { - // Does the tentative label depend on the reference? + /* Does the tentative label depend on the reference?*/ CONTAINS_VARIABLE = 01, CONTAINS_STAR = 02, CONTAINS_FORMAT = 04, @@ -89,7 +83,7 @@ public: unsigned analyze() { return expr ? expr->analyze() : 0; } }; -// This caches the analysis of an expression. +/* This caches the analysis of an expression.*/ class analyzed_expr : public unary_expr { unsigned flags; @@ -206,7 +200,6 @@ static expression *parse_result; string literals; - #line 221 "label.y" typedef union { int num; @@ -214,977 +207,238 @@ typedef union { struct { int ndigits; int val; } dig; struct { int start; int len; } str; } YYSTYPE; - -#ifndef YYLTYPE -typedef - struct yyltype - { - int timestamp; - int first_line; - int first_column; - int last_line; - int last_column; - char *text; - } - yyltype; - -#define YYLTYPE yyltype -#endif - -#include <stdio.h> - -#ifndef __STDC__ -#define const -#endif - - - -#define YYFINAL 49 -#define YYFLAG -32768 -#define YYNTBASE 21 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 260 ? yytranslate[x] : 32) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 12, 9, 2, 17, - 18, 16, 14, 2, 15, 13, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 7, 2, 19, - 2, 20, 6, 11, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 2, 10, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5 +#line 211 "y.tab.c" +#define TOKEN_LETTER 257 +#define TOKEN_LITERAL 258 +#define TOKEN_DIGIT 259 +#define YYERRCODE 256 +short yylhs[] = { -1, + 0, 1, 1, 6, 6, 2, 2, 2, 3, 3, + 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 9, 9, 7, 7, 8, 8, + 10, 10, 10, }; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 10, 11, 13, 15, 19, 23, 25, - 28, 30, 34, 36, 38, 40, 43, 46, 49, 55, - 59, 63, 66, 70, 74, 75, 77, 79, 82, 84, - 87, 88, 90 +short yylen[] = { 2, + 1, 1, 5, 0, 1, 1, 3, 3, 1, 2, + 1, 3, 1, 1, 1, 2, 2, 2, 5, 3, + 3, 2, 3, 3, 0, 1, 1, 2, 1, 2, + 0, 1, 1, }; - -#endif - -static const short yyrhs[] = { 23, - 0, 24, 0, 24, 6, 23, 7, 22, 0, 0, - 22, 0, 25, 0, 24, 8, 25, 0, 24, 9, - 25, 0, 26, 0, 25, 26, 0, 27, 0, 26, - 10, 27, 0, 11, 0, 4, 0, 3, 0, 3, - 29, 0, 12, 3, 0, 12, 30, 0, 27, 13, - 31, 3, 28, 0, 27, 14, 29, 0, 27, 15, - 29, 0, 27, 16, 0, 17, 23, 18, 0, 19, - 23, 20, 0, 0, 29, 0, 5, 0, 29, 5, - 0, 5, 0, 30, 5, 0, 0, 14, 0, 15, - 0 +short yydefred[] = { 0, + 0, 14, 13, 0, 0, 0, 0, 5, 0, 0, + 0, 0, 1, 27, 0, 17, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 0, 28, + 30, 23, 24, 0, 0, 0, 32, 33, 0, 0, + 0, 0, 0, 0, 3, 0, 19, }; - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 248, 253, 256, 260, 263, 267, 270, 272, 276, 279, - 283, 286, 290, 293, 298, 300, 302, 318, 322, 353, - 355, 357, 359, 361, 365, 368, 372, 375, 379, 382, - 387, 390, 392 +short yydgoto[] = { 7, + 8, 9, 10, 11, 12, 13, 15, 18, 47, 39, }; - -static const char * const yytname[] = { "$","error","$illegal.","TOKEN_LETTER", -"TOKEN_LITERAL","TOKEN_DIGIT","'?'","':'","'|'","'&'","'~'","'@'","'%'","'.'", -"'+'","'-'","'*'","'('","')'","'<'","'>'","expr","conditional","optional_conditional", -"alternative","list","substitute","string","optional_number","number","digits", -"flag","" +short yysindex[] = { -32, + -257, 0, 0, -240, -32, -32, 0, 0, -18, -32, + -36, -114, 0, 0, -246, 0, 0, -241, -14, -39, + -32, -32, -32, -114, -21, -257, -257, 0, -32, 0, + 0, 0, 0, -25, -32, -32, 0, 0, -223, -246, + -246, -36, -32, -257, 0, -246, 0, }; -#endif - -static const short yyr1[] = { 0, - 21, 22, 22, 23, 23, 24, 24, 24, 25, 25, - 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 28, 28, 29, 29, 30, 30, - 31, 31, 31 +short yyrindex[] = { 35, + 1, 0, 0, 0, -5, -4, 0, 0, 14, 208, + 159, 224, 0, 0, 11, 0, 0, 40, 0, 0, + 2, 0, 0, 253, -220, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 263, 281, 0, 0, 0, 50, + 105, 214, 0, 115, 0, 149, 0, }; - -static const short yyr2[] = { 0, - 1, 1, 5, 0, 1, 1, 3, 3, 1, 2, - 1, 3, 1, 1, 1, 2, 2, 2, 5, 3, - 3, 2, 3, 3, 0, 1, 1, 2, 1, 2, - 0, 1, 1 -}; - -static const short yydefact[] = { 4, - 15, 14, 13, 0, 4, 4, 5, 1, 2, 6, - 9, 11, 27, 16, 17, 29, 18, 0, 0, 4, - 0, 0, 10, 0, 31, 0, 0, 22, 28, 30, - 23, 24, 0, 7, 8, 12, 32, 33, 0, 20, - 21, 0, 25, 3, 19, 26, 0, 0, 0 +short yygindex[] = { 0, + 19, 0, 7, 37, -10, 10, -23, 0, 0, 0, }; - -static const short yydefgoto[] = { 47, - 7, 8, 9, 10, 11, 12, 45, 14, 17, 39 +#define YYTABLESIZE 511 +short yytable[] = { 24, + 15, 14, 40, 41, 4, 28, 26, 5, 27, 25, + 16, 29, 30, 2, 19, 20, 16, 31, 17, 23, + 46, 37, 33, 38, 24, 24, 32, 6, 35, 36, + 34, 3, 43, 44, 4, 4, 31, 15, 15, 18, + 15, 15, 15, 15, 21, 15, 15, 16, 16, 20, + 16, 16, 16, 16, 2, 16, 16, 4, 15, 4, + 15, 45, 15, 15, 15, 42, 0, 0, 16, 0, + 16, 2, 16, 16, 16, 2, 18, 18, 0, 18, + 18, 18, 18, 0, 18, 18, 20, 20, 0, 20, + 20, 20, 20, 0, 20, 20, 0, 18, 0, 18, + 0, 18, 18, 18, 21, 22, 0, 20, 0, 20, + 0, 20, 20, 20, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 16, 0, 0, 0, + 0, 21, 21, 0, 21, 21, 21, 21, 26, 21, + 21, 25, 25, 0, 25, 25, 25, 25, 11, 25, + 25, 0, 21, 18, 21, 18, 21, 21, 21, 0, + 0, 0, 25, 20, 25, 20, 25, 25, 25, 0, + 0, 0, 0, 0, 0, 26, 26, 0, 26, 26, + 26, 26, 0, 26, 26, 11, 11, 0, 11, 11, + 0, 0, 0, 0, 0, 0, 26, 6, 26, 0, + 26, 26, 26, 12, 0, 0, 11, 0, 11, 0, + 11, 11, 11, 9, 1, 2, 0, 0, 21, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 25, 0, + 25, 0, 0, 0, 0, 6, 0, 0, 6, 0, + 12, 12, 10, 12, 12, 0, 0, 15, 15, 0, + 9, 9, 7, 9, 9, 6, 0, 16, 16, 6, + 6, 12, 26, 12, 26, 12, 12, 12, 0, 0, + 8, 9, 11, 9, 11, 9, 9, 9, 0, 10, + 10, 0, 10, 10, 0, 0, 18, 18, 0, 0, + 7, 0, 0, 7, 0, 0, 20, 20, 0, 0, + 10, 0, 10, 0, 10, 10, 10, 0, 8, 0, + 7, 8, 0, 0, 7, 7, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 12, 8, 12, + 0, 0, 8, 8, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 25, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 26, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 10, }; - -static const short yypact[] = { 0, - 4,-32768,-32768, 5, 0, 0,-32768,-32768, 7, 0, - -5, 13,-32768, 15,-32768,-32768, 27, -4, 14, 0, - 0, 0, -5, 0, 8, 4, 4,-32768,-32768,-32768, --32768,-32768, 26, 0, 0, 13,-32768,-32768, 32, 15, - 15, 0, 4,-32768,-32768, 15, 36, 37,-32768 -}; - -static const short yypgoto[] = {-32768, - -3, 1,-32768, 9, -10, 16,-32768, -25,-32768,-32768 +short yycheck[] = { 10, + 0, 259, 26, 27, 37, 42, 43, 40, 45, 46, + 0, 126, 259, 0, 5, 6, 257, 259, 259, 38, + 44, 43, 62, 45, 35, 36, 41, 60, 22, 23, + 21, 64, 58, 257, 0, 41, 257, 37, 38, 0, + 40, 41, 42, 43, 63, 45, 46, 37, 38, 0, + 40, 41, 42, 43, 41, 45, 46, 62, 58, 58, + 60, 43, 62, 63, 64, 29, -1, -1, 58, -1, + 60, 58, 62, 63, 64, 62, 37, 38, -1, 40, + 41, 42, 43, -1, 45, 46, 37, 38, -1, 40, + 41, 42, 43, -1, 45, 46, -1, 58, -1, 60, + -1, 62, 63, 64, 0, 124, -1, 58, -1, 60, + -1, 62, 63, 64, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 124, -1, 126, -1, -1, -1, + -1, -1, -1, -1, 124, -1, 126, -1, -1, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 0, 45, + 46, 37, 38, -1, 40, 41, 42, 43, 0, 45, + 46, -1, 58, 124, 60, 126, 62, 63, 64, -1, + -1, -1, 58, 124, 60, 126, 62, 63, 64, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 46, 37, 38, -1, 40, 41, + -1, -1, -1, -1, -1, -1, 58, 0, 60, -1, + 62, 63, 64, 0, -1, -1, 58, -1, 60, -1, + 62, 63, 64, 0, 257, 258, -1, -1, 124, -1, + 126, -1, -1, -1, -1, -1, -1, -1, 124, -1, + 126, -1, -1, -1, -1, 38, -1, -1, 41, -1, + 37, 38, 0, 40, 41, -1, -1, 257, 258, -1, + 37, 38, 0, 40, 41, 58, -1, 257, 258, 62, + 63, 58, 124, 60, 126, 62, 63, 64, -1, -1, + 0, 58, 124, 60, 126, 62, 63, 64, -1, 37, + 38, -1, 40, 41, -1, -1, 257, 258, -1, -1, + 38, -1, -1, 41, -1, -1, 257, 258, -1, -1, + 58, -1, 60, -1, 62, 63, 64, -1, 38, -1, + 58, 41, -1, -1, 62, 63, -1, -1, -1, -1, + -1, 124, -1, -1, -1, -1, -1, 124, 58, 126, + -1, -1, 62, 63, -1, -1, -1, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, -1, -1, -1, 124, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 124, 257, 258, -1, -1, -1, + -1, -1, -1, -1, -1, 257, 258, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, -1, -1, -1, -1, -1, -1, -1, -1, + 257, 258, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, + 258, }; - - -#define YYLAST 40 - - -static const short yytable[] = { 23, - 40, 41, 1, 2, 24, 18, 19, 15, 13, 16, - 3, 4, 20, 31, 21, 22, 5, 46, 6, 29, - 33, 37, 38, 23, 23, 25, 26, 27, 28, 34, - 35, 30, 42, 32, 43, 48, 49, 0, 44, 36 +#define YYFINAL 7 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 259 +#if YYDEBUG +char *yyname[] = { +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'","'.'",0,0,0,0,0,0,0,0,0,0,0, +"':'",0,"'<'",0,"'>'","'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0, +"'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,"TOKEN_LETTER","TOKEN_LITERAL","TOKEN_DIGIT", }; - -static const short yycheck[] = { 10, - 26, 27, 3, 4, 10, 5, 6, 3, 5, 5, - 11, 12, 6, 18, 8, 9, 17, 43, 19, 5, - 20, 14, 15, 34, 35, 13, 14, 15, 16, 21, - 22, 5, 7, 20, 3, 0, 0, -1, 42, 24 +char *yyrule[] = { +"$accept : expr", +"expr : optional_conditional", +"conditional : alternative", +"conditional : alternative '?' optional_conditional ':' conditional", +"optional_conditional :", +"optional_conditional : conditional", +"alternative : list", +"alternative : alternative '|' list", +"alternative : alternative '&' list", +"list : substitute", +"list : list substitute", +"substitute : string", +"substitute : substitute '~' string", +"string : '@'", +"string : TOKEN_LITERAL", +"string : TOKEN_LETTER", +"string : TOKEN_LETTER number", +"string : '%' TOKEN_LETTER", +"string : '%' digits", +"string : string '.' flag TOKEN_LETTER optional_number", +"string : string '+' number", +"string : string '-' number", +"string : string '*'", +"string : '(' optional_conditional ')'", +"string : '<' optional_conditional '>'", +"optional_number :", +"optional_number : number", +"number : TOKEN_DIGIT", +"number : number TOKEN_DIGIT", +"digits : TOKEN_DIGIT", +"digits : digits TOKEN_DIGIT", +"flag :", +"flag : '+'", +"flag : '-'", }; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/local/lib/bison.simple" - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman - - 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ - - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) -#include <alloca.h> -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include <malloc.h> -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include <malloc.h> - #pragma alloca -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#define YYLEX yylex(&yylval, &yylloc) -#else -#define YYLEX yylex(&yylval) -#endif -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ #endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - +#define yyclearin (yychar=(-1)) +#define yyerrok (yyerrflag=0) +#ifdef YYSTACKSIZE #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_bcopy(FROM,TO,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 -__yy_bcopy (from, to, count) - char *from; - char *to; - 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_bcopy (char *from, char *to, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif +#define YYMAXDEPTH YYSTACKSIZE #endif - -#line 169 "/usr/local/lib/bison.simple" -int -yyparse() -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), -#ifdef YYLSP_NEEDED - &yyls1, size * sizeof (*yylsp), -#endif - &yystacksize); - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 1: -#line 250 "label.y" -{ parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); ; - break;} -case 2: -#line 255 "label.y" -{ yyval.expr = yyvsp[0].expr; ; - break;} -case 3: -#line 257 "label.y" -{ yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); ; - break;} -case 4: -#line 262 "label.y" -{ yyval.expr = 0; ; - break;} -case 5: -#line 264 "label.y" -{ yyval.expr = yyvsp[0].expr; ; - break;} -case 6: -#line 269 "label.y" -{ yyval.expr = yyvsp[0].expr; ; - break;} -case 7: -#line 271 "label.y" -{ yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); ; - break;} -case 8: -#line 273 "label.y" -{ yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); ; - break;} -case 9: -#line 278 "label.y" -{ yyval.expr = yyvsp[0].expr; ; - break;} -case 10: -#line 280 "label.y" -{ yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); ; - break;} -case 11: -#line 285 "label.y" -{ yyval.expr = yyvsp[0].expr; ; - break;} -case 12: -#line 287 "label.y" -{ yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); ; - break;} -case 13: -#line 292 "label.y" -{ yyval.expr = new at_expr; ; - break;} -case 14: -#line 294 "label.y" -{ - yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start, - yyvsp[0].str.len); - ; - break;} -case 15: -#line 299 "label.y" -{ yyval.expr = new field_expr(yyvsp[0].num, 0); ; - break;} -case 16: -#line 301 "label.y" -{ yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); ; - break;} -case 17: -#line 303 "label.y" -{ - switch (yyvsp[0].num) { - case 'I': - case 'i': - case 'A': - case 'a': - yyval.expr = new format_expr(yyvsp[0].num); - break; - default: - command_error("unrecognized format `%1'", char(yyvsp[0].num)); - yyval.expr = new format_expr('a'); - break; - } - ; - break;} -case 18: -#line 319 "label.y" -{ - yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val); - ; - break;} -case 19: -#line 323 "label.y" -{ - switch (yyvsp[-1].num) { - case 'l': - yyval.expr = new map_expr(yyvsp[-4].expr, lowercase); - break; - case 'u': - yyval.expr = new map_expr(yyvsp[-4].expr, uppercase); - break; - case 'c': - yyval.expr = new map_expr(yyvsp[-4].expr, capitalize); - break; - case 'r': - yyval.expr = new map_expr(yyvsp[-4].expr, reverse_name); - break; - case 'a': - yyval.expr = new map_expr(yyvsp[-4].expr, abbreviate_name); - break; - case 'y': - yyval.expr = new extractor_expr(yyvsp[-4].expr, find_year, yyvsp[-2].num); - break; - case 'n': - yyval.expr = new extractor_expr(yyvsp[-4].expr, find_last_name, yyvsp[-2].num); - break; - default: - yyval.expr = yyvsp[-4].expr; - command_error("unknown function `%1'", char(yyvsp[-1].num)); - break; - } - ; - break;} -case 20: -#line 354 "label.y" -{ yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); ; - break;} -case 21: -#line 356 "label.y" -{ yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); ; - break;} -case 22: -#line 358 "label.y" -{ yyval.expr = new star_expr(yyvsp[-1].expr); ; - break;} -case 23: -#line 360 "label.y" -{ yyval.expr = yyvsp[-1].expr; ; - break;} -case 24: -#line 362 "label.y" -{ yyval.expr = new separator_expr(yyvsp[-1].expr); ; - break;} -case 25: -#line 367 "label.y" -{ yyval.num = -1; ; - break;} -case 26: -#line 369 "label.y" -{ yyval.num = yyvsp[0].num; ; - break;} -case 27: -#line 374 "label.y" -{ yyval.num = yyvsp[0].num; ; - break;} -case 28: -#line 376 "label.y" -{ yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; ; - break;} -case 29: -#line 381 "label.y" -{ yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; ; - break;} -case 30: -#line 383 "label.y" -{ yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; ; - break;} -case 31: -#line 389 "label.y" -{ yyval.num = 0; ; - break;} -case 32: -#line 391 "label.y" -{ yyval.num = 1; ; - break;} -case 33: -#line 393 "label.y" -{ yyval.num = -1; ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 442 "/usr/local/lib/bison.simple" - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH +#else +#define YYSTACKSIZE 500 +#define YYMAXDEPTH 500 #endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; #endif - - yystate = yyn; - goto yynewstate; -} -#line 396 "label.y" - +int yydebug; +int yynerrs; +int yyerrflag; +int yychar; +short *yyssp; +YYSTYPE *yyvsp; +YYSTYPE yyval; +YYSTYPE yylval; +short yyss[YYSTACKSIZE]; +YYSTYPE yyvs[YYSTACKSIZE]; +#define yystacksize YYSTACKSIZE +#line 397 "label.y" /* bison defines const to be empty unless __STDC__ is defined, which it isn't under cfront */ @@ -1962,3 +1216,378 @@ int reference::get_nauthors() const } return nauthors; } +#line 1220 "y.tab.c" +#define YYABORT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab +int +yyparse() +{ + register int yym, yyn, yystate; +#if YYDEBUG + register char *yys; + extern char *getenv(); + + if (yys = getenv("YYDEBUG")) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } +#endif + + yynerrs = 0; + yyerrflag = 0; + yychar = (-1); + + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; + +yyloop: + if (yyn = yydefred[yystate]) goto yyreduce; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } +#endif + } + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + yychar = (-1); + if (yyerrflag > 0) --yyerrflag; + goto yyloop; + } + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; +#ifdef lint + goto yynewerror; +#endif +yynewerror: + yyerror("syntax error"); +#ifdef lint + goto yyerrlab; +#endif +yyerrlab: + ++yynerrs; +yyinrecovery: + if (yyerrflag < 3) + { + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, error recovery shifting\ + to state %d\n", *yyssp, yytable[yyn]); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate = yytable[yyn]; + *++yyvsp = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("yydebug: error recovery discarding state %d\n", + *yyssp); +#endif + if (yyssp <= yyss) goto yyabort; + --yyssp; + --yyvsp; + } + } + } + else + { + if (yychar == 0) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, error recovery discards token %d (%s)\n", + yystate, yychar, yys); + } +#endif + yychar = (-1); + goto yyloop; + } +yyreduce: +#if YYDEBUG + if (yydebug) + printf("yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); +#endif + yym = yylen[yyn]; + yyval = yyvsp[1-yym]; + switch (yyn) + { +case 1: +#line 250 "label.y" +{ parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); } +break; +case 2: +#line 255 "label.y" +{ yyval.expr = yyvsp[0].expr; } +break; +case 3: +#line 257 "label.y" +{ yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); } +break; +case 4: +#line 262 "label.y" +{ yyval.expr = 0; } +break; +case 5: +#line 264 "label.y" +{ yyval.expr = yyvsp[0].expr; } +break; +case 6: +#line 269 "label.y" +{ yyval.expr = yyvsp[0].expr; } +break; +case 7: +#line 271 "label.y" +{ yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); } +break; +case 8: +#line 273 "label.y" +{ yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); } +break; +case 9: +#line 278 "label.y" +{ yyval.expr = yyvsp[0].expr; } +break; +case 10: +#line 280 "label.y" +{ yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); } +break; +case 11: +#line 285 "label.y" +{ yyval.expr = yyvsp[0].expr; } +break; +case 12: +#line 287 "label.y" +{ yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); } +break; +case 13: +#line 292 "label.y" +{ yyval.expr = new at_expr; } +break; +case 14: +#line 294 "label.y" +{ + yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start, + yyvsp[0].str.len); + } +break; +case 15: +#line 299 "label.y" +{ yyval.expr = new field_expr(yyvsp[0].num, 0); } +break; +case 16: +#line 301 "label.y" +{ yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); } +break; +case 17: +#line 303 "label.y" +{ + switch (yyvsp[0].num) { + case 'I': + case 'i': + case 'A': + case 'a': + yyval.expr = new format_expr(yyvsp[0].num); + break; + default: + command_error("unrecognized format `%1'", char(yyvsp[0].num)); + yyval.expr = new format_expr('a'); + break; + } + } +break; +case 18: +#line 319 "label.y" +{ + yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val); + } +break; +case 19: +#line 323 "label.y" +{ + switch (yyvsp[-1].num) { + case 'l': + yyval.expr = new map_expr(yyvsp[-4].expr, lowercase); + break; + case 'u': + yyval.expr = new map_expr(yyvsp[-4].expr, uppercase); + break; + case 'c': + yyval.expr = new map_expr(yyvsp[-4].expr, capitalize); + break; + case 'r': + yyval.expr = new map_expr(yyvsp[-4].expr, reverse_name); + break; + case 'a': + yyval.expr = new map_expr(yyvsp[-4].expr, abbreviate_name); + break; + case 'y': + yyval.expr = new extractor_expr(yyvsp[-4].expr, find_year, yyvsp[-2].num); + break; + case 'n': + yyval.expr = new extractor_expr(yyvsp[-4].expr, find_last_name, yyvsp[-2].num); + break; + default: + yyval.expr = yyvsp[-4].expr; + command_error("unknown function `%1'", char(yyvsp[-1].num)); + break; + } + } +break; +case 20: +#line 354 "label.y" +{ yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); } +break; +case 21: +#line 356 "label.y" +{ yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); } +break; +case 22: +#line 358 "label.y" +{ yyval.expr = new star_expr(yyvsp[-1].expr); } +break; +case 23: +#line 360 "label.y" +{ yyval.expr = yyvsp[-1].expr; } +break; +case 24: +#line 362 "label.y" +{ yyval.expr = new separator_expr(yyvsp[-1].expr); } +break; +case 25: +#line 367 "label.y" +{ yyval.num = -1; } +break; +case 26: +#line 369 "label.y" +{ yyval.num = yyvsp[0].num; } +break; +case 27: +#line 374 "label.y" +{ yyval.num = yyvsp[0].num; } +break; +case 28: +#line 376 "label.y" +{ yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; } +break; +case 29: +#line 381 "label.y" +{ yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; } +break; +case 30: +#line 383 "label.y" +{ yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; } +break; +case 31: +#line 389 "label.y" +{ yyval.num = 0; } +break; +case 32: +#line 391 "label.y" +{ yyval.num = 1; } +break; +case 33: +#line 393 "label.y" +{ yyval.num = -1; } +break; +#line 1538 "y.tab.c" + } + yyssp -= yym; + yystate = *yyssp; + yyvsp -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) + { +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state 0 to\ + state %d\n", YYFINAL); +#endif + yystate = YYFINAL; + *++yyssp = YYFINAL; + *++yyvsp = yyval; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +#if YYDEBUG + if (yydebug) + { + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; + printf("yydebug: state %d, reading %d (%s)\n", + YYFINAL, yychar, yys); + } +#endif + } + if (yychar == 0) goto yyaccept; + goto yyloop; + } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("yydebug: after reduction, shifting from state %d \ +to state %d\n", *yyssp, yystate); +#endif + if (yyssp >= yyss + yystacksize - 1) + { + goto yyoverflow; + } + *++yyssp = yystate; + *++yyvsp = yyval; + goto yyloop; +yyoverflow: + yyerror("yacc stack overflow"); +yyabort: + return (1); +yyaccept: + return (0); +} diff --git a/refer/ref.cc b/refer/ref.cc index bb8ed2a8c..0b78813ec 100644 --- a/refer/ref.cc +++ b/refer/ref.cc @@ -199,7 +199,7 @@ void reference::insert_field(unsigned char c, string &s) string *old_field = field; field = new string[nfields + 1]; int pos = 0; - for (int i = 0; i < c; i++) + for (int i = 0; i < int(c); i++) if (field_index[i] != NULL_FIELD_INDEX) pos++; for (i = 0; i < pos; i++) @@ -222,7 +222,7 @@ void reference::delete_field(unsigned char c) return; string *old_field = field; field = new string[nfields - 1]; - for (int i = 0; i < field_index[c]; i++) + for (int i = 0; i < int(field_index[c]); i++) field[i].move(old_field[i]); for (i = field_index[c]; i < nfields - 1; i++) field[i].move(old_field[i + 1]); diff --git a/refer/y.output b/refer/y.output deleted file mode 100644 index e69de29bb..000000000 --- a/refer/y.output +++ /dev/null diff --git a/tbl/main.cc b/tbl/main.cc index 243514a85..c99af2b85 100644 --- a/tbl/main.cc +++ b/tbl/main.cc @@ -326,12 +326,13 @@ struct options { int linesize; char delim[2]; char tab_char; + char decimal_point_char; options(); }; options::options() -: flags(0), tab_char('\t'), linesize(0) +: flags(0), tab_char('\t'), decimal_point_char('.'), linesize(0) { delim[0] = delim[1] = '\0'; } @@ -470,6 +471,16 @@ options *process_options(table_input &in) error("`nokeep' option does not take a argument"); opt->flags |= table::NOKEEP; } + else if (strieq(p, "decimalpoint")) { + if (!arg) + error("`decimalpoint' option requires argument in parentheses"); + else { + if (arg[0] == '\0' || arg[1] != '\0') + error("argument to `decimalpoint' option must be a single character"); + else + opt->decimal_point_char = arg[0]; + } + } else { error("unrecognised global option `%1'", p); // delete opt; @@ -1119,7 +1130,8 @@ table *process_data(table_input &in, format *f, options *opt) int format_index = 0; int give_up = 0; enum { DATA_INPUT_LINE, TROFF_INPUT_LINE, SINGLE_HLINE, DOUBLE_HLINE } type; - table *tbl = new table(ncolumns, opt->flags, opt->linesize); + table *tbl = new table(ncolumns, opt->flags, opt->linesize, + opt->decimal_point_char); if (opt->delim[0] != '\0') tbl->set_delim(opt->delim[0], opt->delim[1]); for (;;) { diff --git a/tbl/table.cc b/tbl/table.cc index 235fe69ff..76c7cd74a 100644 --- a/tbl/table.cc +++ b/tbl/table.cc @@ -94,7 +94,8 @@ string row_top_reg(int r); void set_inline_modifier(const entry_modifier *); void restore_inline_modifier(const entry_modifier *m); void set_modifier(const entry_modifier *); -int find_dot(const char *s, const char *delim); +int find_decimal_point(const char *s, char decimal_point_char, + const char *delim); string an_empty_string; int location_force_filename = 0; @@ -1196,8 +1197,8 @@ void vertical_rule::print() } } -table::table(int nc, unsigned f, int ls) -: ncolumns(nc), flags(f), linesize(ls), +table::table(int nc, unsigned f, int ls, char dpc) +: ncolumns(nc), flags(f), linesize(ls), decimal_point_char(dpc), nrows(0), allocated_rows(0), entry(0), entry_list(0), left_separation(0), right_separation(0), stuff_list(0), vline(0), vrule_list(0), row_is_all_lines(0), span_list(0) @@ -1397,7 +1398,8 @@ void table::do_vspan(int r, int c) } } -int find_dot(const char *s, const char *delim) +int find_decimal_point(const char *s, char decimal_point_char, + const char *delim) { if (s == 0 || *s == '\0') return -1; @@ -1422,7 +1424,7 @@ int find_dot(const char *s, const char *delim) } else if (*p == delim[0]) in_delim = 1; - else if (p[0] == '.' && csdigit(p[1])) + else if (p[0] == decimal_point_char && csdigit(p[1])) possible_pos = p - s; if (possible_pos >= 0) return possible_pos; @@ -1534,7 +1536,7 @@ void table::add_entry(int r, int c, const string &str, const entry_format *f, e = new left_block_entry(s, f); } else { - int pos = find_dot(s, delim); + int pos = find_decimal_point(s, decimal_point_char, delim); if (pos < 0) e = new center_text_entry(s, f); else diff --git a/tbl/table.h b/tbl/table.h index b16c31da1..ae27545e2 100644 --- a/tbl/table.h +++ b/tbl/table.h @@ -79,6 +79,7 @@ class table { int ncolumns; int linesize; char delim[2]; + char decimal_point_char; vertical_rule *vrule_list; stuff *stuff_list; horizontal_span *span_list; @@ -127,7 +128,7 @@ public: DOUBLEBOX = 020, NOKEEP = 040 }; - table(int nc, unsigned flags, int linesize); + table(int nc, unsigned flags, int linesize, char decimal_point_char); ~table(); void add_text_line(int r, const string &, const char *, int); diff --git a/tbl/tbl.man b/tbl/tbl.man index e520e73a6..3fd6881bd 100644 --- a/tbl/tbl.man +++ b/tbl/tbl.man @@ -66,6 +66,15 @@ option tells not to try and prevent breaks in this way. .LP The +.B decimalpoint +option specifies the character to be recognized as the decimal +point character in place of the default period. +It takes an argument in parentheses, which must be a single +character, as for the +.B tab +option. +.LP +The .B f format modifier can be followed by an arbitrary length font name in parentheses. diff --git a/test-groff b/test-groff index 35fd0e07c..35fd0e07c 100644..100755 --- a/test-groff +++ b/test-groff diff --git a/tmac/tmac.an b/tmac/tmac.an index f559ec060..017a6a8c0 100644 --- a/tmac/tmac.an +++ b/tmac/tmac.an @@ -26,15 +26,14 @@ .\" If you need to add things to TH, use `.am TH'. .\" .if !\n(.g .ab These man macros work only with groff. -.if \n(.C \{\ -. tm Warning: turning off compatibility mode -. cp 0 -.\} +.nr _C \n(.C +.cp 0 .if !rD .nr D 0 .if !rC .nr C 0 .if rP .pn 0\nP .\" .TH title section extra1 extra2 extra3 .de TH +.cp 0 .de an-init \" We have to do it like this to get multiple man pages right. .ds an-title "\\$1 .ds an-section "\\$2 @@ -58,6 +57,9 @@ .nr an-no-space-flag 0 .nr an-break-flag 0 .nr an-div? 0 +.wh 0 an-header +.wh -1i an-footer +.wh -.5i an-p-footer .if \\n[nl]>0 \{\ . ie \\nC .bp \\n%+1 . el .bp 1 @@ -70,7 +72,6 @@ .ie \\n[.$] .nr PD (v;\\$1) .el .nr PD .4v>?\n[.V] .. -.wh 0 an-header .de an-header .an-init .ev 1 @@ -80,11 +81,9 @@ .ev .ns .. -.wh -1i an-footer .de an-footer 'bp .. -.wh -.5i an-p-footer .af an-page-letter a .de an-p-footer .ev 1 @@ -324,3 +323,4 @@ .hy 14 .\" Load local modifications. .mso man.local +.cp \n(_C diff --git a/tmac/tmac.e b/tmac/tmac.e index 16de8afe8..f5295cb2f 100644 --- a/tmac/tmac.e +++ b/tmac/tmac.e @@ -1028,9 +1028,9 @@ \\*([A, \\*(lq\\*([T,\\*(rq .if !"\\*([P"" pp. \\*([P in \\f2\\*([B\\f1, \c -.if !"\\*([E"" ed. \\*([E,\c +.if !"\\*([E"" ed. \\*([E, \c .if !"\\*([I"" \\*([I\c -.if !"\\*([C"" , \\*([C\c +.if !"\\*([C"" , \\*([C\c (\\*([D). .if !"\\*([O"" \\*([O .)f @@ -1041,8 +1041,8 @@ in \\f2\\*([B\\f1, \c \\*([A, \\*(lq\\*([T,\\*(rq \\*([R\c .if !"\\*([G"" \& (\\*([G)\c -.if !"\\*([I"" , \\*([I\c -.if !"\\*([C"" , \\*([C\c +.if !"\\*([I"" , \\*([I\c +.if !"\\*([C"" , \\*([C\c (\\*([D). .if !"\\*([O"" \\*([O .)f diff --git a/troff/div.cc b/troff/div.cc index 38e338a0c..c30001f2a 100644 --- a/troff/div.cc +++ b/troff/div.cc @@ -261,8 +261,8 @@ void macro_diversion::output(node *nd, int retain_size, mac->append(new vertical_size_node(v.post)); mac->append('\n'); vertical_position += x; - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; + if (vertical_position - v.post > high_water_mark) + high_water_mark = vertical_position - v.post; } void macro_diversion::space(vunits n, int) @@ -278,8 +278,6 @@ void macro_diversion::space(vunits n, int) n = -vertical_position; mac->append(new diverted_space_node(n)); vertical_position += n; - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; } void macro_diversion::copy_file(const char *filename) @@ -290,7 +288,7 @@ void macro_diversion::copy_file(const char *filename) top_level_diversion::top_level_diversion() : page_count(0), have_next_page_number(0), page_length(units_per_inch*11), page_offset(units_per_inch), prev_page_offset(units_per_inch), - ejecting_page(0), page_trap_list(0), first_page_begun(0), no_space_mode(0), + ejecting_page(0), page_trap_list(0), before_first_page(1), no_space_mode(0), page_number(0), last_page_count(-1) { } @@ -337,7 +335,7 @@ void top_level_diversion::output(node *nd, int retain_size, no_space_mode = 0; vunits next_trap_pos; trap *next_trap = find_next_trap(&next_trap_pos); - if (!first_page_begun && begin_page()) + if (before_first_page && begin_page()) fatal("sorry, I didn't manage to begin the first page in time: use an explicit .br request"); vertical_size v(vs, ls); for (node *tem = nd; tem != 0; tem = tem->next) @@ -353,14 +351,14 @@ void top_level_diversion::output(node *nd, int retain_size, the_output->print_line(page_offset, vertical_position, nd, v.pre + v.pre_extra, v.post_extra); vertical_position += v.post_extra; + if (vertical_position > high_water_mark) + high_water_mark = vertical_position; if (vertical_position_traps_flag && vertical_position >= page_length) begin_page(); else if (vertical_position_traps_flag && next_trap != 0 && vertical_position >= next_trap_pos) { nl_reg_contents = vertical_position.to_units(); truncated_space = v.post; - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; spring_trap(next_trap->nm); } else if (v.post > V0) { @@ -370,28 +368,20 @@ void top_level_diversion::output(node *nd, int retain_size, truncated_space = vertical_position - next_trap_pos; vertical_position = next_trap_pos; nl_reg_contents = vertical_position.to_units(); - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; spring_trap(next_trap->nm); } else if (vertical_position_traps_flag && vertical_position >= page_length) begin_page(); - else { + else nl_reg_contents = vertical_position.to_units(); - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; - } } - else { + else nl_reg_contents = vertical_position.to_units(); - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; - } } void top_level_diversion::transparent_output(unsigned char c) { - if (!first_page_begun && begin_page()) + if (before_first_page && begin_page()) // This can only happen with the transparent() request. fatal("sorry, I didn't manage to begin the first page in time: use an explicit .br request"); const char *s = asciify(c); @@ -406,7 +396,7 @@ void top_level_diversion::transparent_output(node * /*n*/) void top_level_diversion::copy_file(const char *filename) { - if (!first_page_begun && begin_page()) + if (before_first_page && begin_page()) fatal("sorry, I didn't manage to begin the first page in time: use an explicit .br request"); the_output->copy_file(page_offset, vertical_position, filename); } @@ -419,7 +409,7 @@ void top_level_diversion::space(vunits n, int forced) else no_space_mode = 0; } - if (!first_page_begun) { + if (before_first_page) { if (begin_page()) { // This happens if there's a top of page trap, and the first-page // transition is caused by `'sp'. @@ -434,8 +424,6 @@ void top_level_diversion::space(vunits n, int forced) vertical_position = next_trap_pos; nl_reg_contents = vertical_position.to_units(); truncated_space = y - vertical_position; - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; spring_trap(next_trap->nm); } else if (y < V0) { @@ -447,8 +435,6 @@ void top_level_diversion::space(vunits n, int forced) else { vertical_position = y; nl_reg_contents = vertical_position.to_units(); - if (vertical_position > high_water_mark) - high_water_mark = vertical_position; } } @@ -528,8 +514,10 @@ void end_diversions() NO_RETURN void cleanup_and_exit(int exit_code) { - if (the_output) + if (the_output) { + the_output->trailer(topdiv->get_page_length()); delete the_output; + } exit(exit_code); } @@ -552,7 +540,7 @@ int top_level_diversion::begin_page() page_number = next_page_number; have_next_page_number = 0; } - else if (!first_page_begun) + else if (before_first_page == 1) page_number = 1; else page_number++; @@ -562,9 +550,12 @@ int top_level_diversion::begin_page() trap *next_trap = find_next_trap(&next_trap_pos); vertical_position = V0; high_water_mark = V0; - first_page_begun = 1; ejecting_page = 0; - the_output->begin_page(page_number, page_length); + // If before_first_page was 2, then the top of page transition was undone + // using eg .nr nl 0-1. See nl_reg::set_value. + if (before_first_page != 2) + the_output->begin_page(page_number, page_length); + before_first_page = 0; nl_reg_contents = vertical_position.to_units(); if (vertical_position_traps_flag && next_trap != 0 && next_trap_pos == V0) { truncated_space = V0; @@ -651,7 +642,7 @@ void begin_page() while (!tok.newline() && !tok.eof()) tok.next(); if (curdiv == topdiv) { - if (!topdiv->first_page_begun) { + if (topdiv->before_first_page) { if (!break_flag) { if (got_arg) topdiv->set_next_page_number(n); @@ -947,7 +938,7 @@ public: int vertical_position_reg::get_value(units *res) { - if (curdiv == topdiv && !topdiv->first_page_begun) + if (curdiv == topdiv && topdiv->before_first_page) *res = -1; else *res = curdiv->get_vertical_position().to_units(); @@ -956,7 +947,7 @@ int vertical_position_reg::get_value(units *res) const char *vertical_position_reg::get_string() { - if (curdiv == topdiv && !topdiv->first_page_begun) + if (curdiv == topdiv && topdiv->before_first_page) return "-1"; else return itoa(curdiv->get_vertical_position().to_units()); @@ -1064,6 +1055,30 @@ const char *constant_vunits_reg::get_string() return itoa(p->to_units()); } +class nl_reg : public variable_reg { +public: + nl_reg(); + void set_value(units); +}; + +nl_reg::nl_reg() : variable_reg(&nl_reg_contents) +{ +} + +void nl_reg::set_value(units n) +{ + variable_reg::set_value(n); + // Setting nl to a negative value when the vertical position in + // the top-level diversion is 0 undoes the top of page transition, + // so that the header macro will be called as if the top of page + // transition hasn't happened. This is used by Larry Wall's + // wrapman program. Setting before_first_page to 2 rather than 1, + // tells top_level_diversion::begin_page not to call + // output_file::begin_page again. + if (n < 0 && topdiv->get_vertical_position() == V0) + topdiv->before_first_page = 2; +} + void init_div_requests() { init_request("wh", when_request); @@ -1096,7 +1111,7 @@ void init_div_requests() number_reg_dictionary.define(".t", new distance_to_next_trap_reg); number_reg_dictionary.define("dl", new variable_reg(&dl_reg_contents)); number_reg_dictionary.define("dn", new variable_reg(&dn_reg_contents)); - number_reg_dictionary.define("nl", new variable_reg(&nl_reg_contents)); + number_reg_dictionary.define("nl", new nl_reg); number_reg_dictionary.define(".vpt", new constant_int_reg(&vertical_position_traps_flag)); number_reg_dictionary.define("%", new page_number_reg); diff --git a/troff/div.h b/troff/div.h index 1f0cc3869..dd2754013 100644 --- a/troff/div.h +++ b/troff/div.h @@ -92,7 +92,7 @@ class top_level_diversion : public diversion { int next_page_number; int ejecting_page; // Is the current page being ejected? public: - int first_page_begun; + int before_first_page; int no_space_mode; top_level_diversion(); void output(node *nd, int retain_size, vunits vs, int ls, hunits width); diff --git a/troff/env.cc b/troff/env.cc index f5f64c559..0d343ffc5 100644 --- a/troff/env.cc +++ b/troff/env.cc @@ -1790,7 +1790,7 @@ void environment::final_break() void environment::do_break() { - if (curdiv == topdiv && !topdiv->first_page_begun) { + if (curdiv == topdiv && topdiv->before_first_page) { topdiv->begin_page(); return; } @@ -1849,7 +1849,7 @@ void break_request() void title() { - if (curdiv == topdiv && !topdiv->first_page_begun) { + if (curdiv == topdiv && topdiv->before_first_page) { handle_initial_title(); return; } @@ -2715,7 +2715,7 @@ class trie { void delete_trie_node(trie_node *); public: trie() : tp(0) {} - ~trie(); + virtual ~trie(); // virtual to shut up g++ void insert(const char *, int, void *); // find calls do_match for each match it finds void find(const char *pat, int patlen); diff --git a/troff/input.cc b/troff/input.cc index 70e04fc69..609ee78ed 100644 --- a/troff/input.cc +++ b/troff/input.cc @@ -92,6 +92,7 @@ static symbol read_escape_name(); static void interpolate_string(symbol); static void interpolate_macro(symbol); static void interpolate_number_format(symbol); +static void interpolate_environment_variable(symbol); static void interpolate_arg(symbol); static request_or_macro *lookup_request(symbol); @@ -784,6 +785,14 @@ static int get_copy(node **nd, int defining) case 't': (void)input_stack::get(NULL); return '\t'; + case 'V': + { + (void)input_stack::get(NULL); + symbol s = read_escape_name(); + if (!s.is_null()) + interpolate_environment_variable(s); + break; + } case '\n': (void)input_stack::get(NULL); if (defining) @@ -1488,6 +1497,13 @@ void token::next() type = TOKEN_NODE; nd = new vmotion_node(x); return; + case 'V': + { + symbol nm = read_escape_name(); + if (!nm.is_null()) + interpolate_environment_variable(nm); + break; + } case 'w': do_width(); break; @@ -1869,7 +1885,7 @@ void do_request() inline int possibly_handle_first_page_transition() { - if (!topdiv->first_page_begun && curdiv == topdiv && !curenv->is_dummy()) { + if (topdiv->before_first_page && curdiv == topdiv && !curenv->is_dummy()) { handle_first_page_transition(); return 1; } @@ -2487,6 +2503,8 @@ string_iterator::string_iterator() ptr = eptr = 0; newline_flag = 0; how_invoked = 0; + lineno = 1; + count = 0; } int string_iterator::fill(node **np) @@ -3383,6 +3401,13 @@ void asciify_macro() skip_line(); } +static void interpolate_environment_variable(symbol nm) +{ + const char *s = getenv(nm.contents()); + if (s && *s) + input_stack::push(make_temp_iterator(s)); +} + void interpolate_number_reg(symbol nm, int inc) { reg *r = lookup_number_reg(nm); @@ -4802,7 +4827,7 @@ void system_request() void copy_file() { - if (curdiv == topdiv && !topdiv->first_page_begun) { + if (curdiv == topdiv && topdiv->before_first_page) { handle_initial_request(COPY_FILE_REQUEST); return; } @@ -4820,7 +4845,7 @@ void copy_file() void vjustify() { - if (curdiv == topdiv && !topdiv->first_page_begun) { + if (curdiv == topdiv && topdiv->before_first_page) { handle_initial_request(VJUSTIFY_REQUEST); return; } @@ -4834,7 +4859,7 @@ void vjustify() void transparent_file() { - if (curdiv == topdiv && !topdiv->first_page_begun) { + if (curdiv == topdiv && topdiv->before_first_page) { handle_initial_request(TRANSPARENT_FILE_REQUEST); return; } diff --git a/troff/node.cc b/troff/node.cc index 10e31cb14..6d36519d7 100644 --- a/troff/node.cc +++ b/troff/node.cc @@ -692,8 +692,8 @@ class troff_output_file : public real_output_file { char tbuf[TBUF_SIZE]; int tbuf_len; int tbuf_kern; + int begun_page; void do_motion(); - vunits page_length; void put(char c); void put(unsigned char c); void put(int i); @@ -703,6 +703,7 @@ class troff_output_file : public real_output_file { public: troff_output_file(); ~troff_output_file(); + void trailer(vunits page_length); void put_char(charinfo *ci, tfont *tf); void put_char_width(charinfo *ci, tfont *tf, hunits w, hunits k); void right(hunits); @@ -1064,15 +1065,18 @@ void troff_output_file::draw(char code, hvpair *point, int npoints, put('\n'); } -void troff_output_file::really_begin_page(int pageno, vunits pl) +void troff_output_file::really_begin_page(int pageno, vunits page_length) { flush_tbuf(); - if (page_length > V0) { - put('V'); - put(page_length.to_units()); - put('\n'); + if (begun_page) { + if (page_length > V0) { + put('V'); + put(page_length.to_units()); + put('\n'); + } } - page_length = pl; + else + begun_page = 1; current_tfont = 0; current_font_number = -1; current_size = 0; @@ -1120,6 +1124,11 @@ void troff_output_file::really_transparent_char(unsigned char c) troff_output_file::~troff_output_file() { + a_delete font_position; +} + +void troff_output_file::trailer(vunits page_length) +{ flush_tbuf(); if (page_length > V0) { put("x trailer\n"); @@ -1128,11 +1137,11 @@ troff_output_file::~troff_output_file() put('\n'); } put("x stop\n"); - a_delete font_position; } troff_output_file::troff_output_file() -: current_height(0), current_slant(0), tbuf_len(0), nfont_positions(10) +: current_height(0), current_slant(0), tbuf_len(0), nfont_positions(10), + begun_page(0) { font_position = new symbol[nfont_positions]; put("x T "); @@ -1160,6 +1169,10 @@ output_file::~output_file() { } +void output_file::trailer(vunits) +{ +} + real_output_file::real_output_file() : printing(0) { diff --git a/troff/node.h b/troff/node.h index 562ce255e..02526e7c9 100644 --- a/troff/node.h +++ b/troff/node.h @@ -457,6 +457,7 @@ class output_file { public: output_file(); virtual ~output_file(); + virtual void trailer(vunits page_length); virtual void flush() = 0; virtual void transparent_char(unsigned char) = 0; virtual void print_line(hunits x, vunits y, node *n, diff --git a/troff/number.cc b/troff/number.cc index c0acd4486..3e695b527 100644 --- a/troff/number.cc +++ b/troff/number.cc @@ -484,7 +484,7 @@ static int parse_term(units *v, int scale_indicator, int parenthesised) return 0; } *v *= 10; - if (*v > INT_MAX - (c - '0')) { + if (*v > INT_MAX - (int(c) - '0')) { error("numeric overflow"); return 0; } diff --git a/troff/troff.man b/troff/troff.man index e9d76b38b..a98a1f3d0 100644 --- a/troff/troff.man +++ b/troff/troff.man @@ -438,6 +438,18 @@ scaled points; is a numeric expression with a default scale indicator of .BR z . .TP +.BI \eV x +.TQ +.BI \eV( xx +.TQ +.BI \eV[ xxx ] +Interpolate the contents of the environment variable +.I xxx , +as returned by +.BR getenv (3). +.B \eV +is interpreted in copy-mode. +.TP .BI \eY x .TQ .BI \eY( xx diff --git a/xditview/ChangeLog b/xditview/ChangeLog index c17e09e37..880201cc4 100644 --- a/xditview/ChangeLog +++ b/xditview/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 30 15:12:09 1993 James Clark (jjc at jclark) + + * draw.c (charExists): Check that fi->per_char is not NULL. + Sat Dec 12 17:42:40 1992 James Clark (jjc at jclark) * Dvi.c (SetGeometry): Cast XtMakeGeometryRequest arguments. diff --git a/xditview/Makefile b/xditview/Makefile index c49d4d6ef..3a7430474 100644 --- a/xditview/Makefile +++ b/xditview/Makefile @@ -124,7 +124,7 @@ # ------------------------------------------------------------------------- # X Window System Build Parameters -# $XConsortium: Project.tmpl,v 1.138 91/09/10 09:02:12 rws Exp $ +# $XConsortium: Project.tmpl,v 1.138.1.1 92/11/11 09:49:19 rws Exp $ # ------------------------------------------------------------------------- # X Window System make variables; this need to be coordinated with rules @@ -199,9 +199,10 @@ FONTSERVERSRC = $(FONTSRC)/server EXTENSIONSRC = $(TOP)/extensions XILIBSRC = $(EXTENSIONSRC)/lib/xinput + PEXLIBSRC = $(EXTENSIONSRC)/lib/PEXlib PHIGSLIBSRC = $(EXTENSIONSRC)/lib/PEX -# $XConsortium: sunLib.tmpl,v 1.14.1.1 92/03/17 14:58:46 rws Exp $ +# $XConsortium: sunLib.tmpl,v 1.14.1.2 92/11/11 09:55:02 rws Exp $ SHLIBLDFLAGS = -assert pure-text PICFLAGS = -pic @@ -228,6 +229,9 @@ PICFLAGS = -pic DEPXILIB = XILIB = -lXi + DEPPEXLIB = + PEXLIB = -lPEX5 + SOXLIBREV = 4.10 SOXTREV = 4.10 SOXAWREV = 5.0 @@ -235,6 +239,7 @@ PICFLAGS = -pic SOXMUREV = 4.10 SOXEXTREV = 4.10 SOXINPUTREV = 4.10 + SOPEXREV = 1.0 DEPXAUTHLIB = $(USRLIBDIR)/libXau.a XAUTHLIB = -lXau @@ -253,6 +258,7 @@ PICFLAGS = -pic LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln LINTXI = $(LINTLIBDIR)/llib-lXi.ln + LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB) diff --git a/xditview/draw.c b/xditview/draw.c index 75dac6aea..7715cde60 100644 --- a/xditview/draw.c +++ b/xditview/draw.c @@ -144,7 +144,8 @@ int charExists (fi, c) { XCharStruct *p; - if (c < fi->min_char_or_byte2 || c > fi->max_char_or_byte2) + if (fi->per_char == NULL || + c < fi->min_char_or_byte2 || c > fi->max_char_or_byte2) return 0; p = fi->per_char + (c - fi->min_char_or_byte2); return (p->lbearing != 0 || p->rbearing != 0 || p->width != 0 |