summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Clark <jjc@jclark.com>1993-09-22 17:45:35 -0500
committerJames Clark <jjc@jclark.com>1993-09-22 17:45:35 -0500
commit5bba1c1b0992c9b30fc6901c6f750c831e6d7712 (patch)
treebf2a45c2cd4820e8525746efb363066f262526ab
parent71e9155c33a535fb98abd881c5c8dc032f3476f0 (diff)
groff before CVS: release 1.081.08
-rw-r--r--ChangeLog162
-rw-r--r--Makefile373
-rw-r--r--Makefile.ccpg6
-rw-r--r--Makefile.comm2
-rw-r--r--Makefile.in29
-rw-r--r--NEWS16
-rw-r--r--PROBLEMS190
-rw-r--r--VERSION2
-rw-r--r--acgroff.m443
-rwxr-xr-xconfig.status88
-rwxr-xr-xconfigure50
-rw-r--r--configure.in4
-rw-r--r--devps/psstrip.sed4
-rw-r--r--eqn/Makefile.sub3
-rw-r--r--eqn/box.cc2
-rw-r--r--eqn/eqn.cc2172
-rw-r--r--eqn/eqn.tab.h118
-rw-r--r--eqn/eqn.y1
-rw-r--r--eqn/y.output0
-rw-r--r--gcc.patch0
-rw-r--r--groff/groff.cc6
-rw-r--r--grog/Makefile.sub5
-rw-r--r--grops/grops.man6
-rw-r--r--grops/ps.cc4
-rw-r--r--grops/ps.h5
-rw-r--r--grotty/tty.cc10
-rw-r--r--include/lib.h6
-rw-r--r--indxbib/indxbib.man2
-rw-r--r--mm/ChangeLog36
-rw-r--r--mm/groff_mm.man38
-rw-r--r--mm/tmac.m152
-rw-r--r--nroff/Makefile.sub12
-rwxr-xr-xnroff/conftest.sh4
-rwxr-xr-xnroff/nroff.sh1
-rw-r--r--pic/lex.cc4
-rw-r--r--pic/pic.cc6632
-rw-r--r--pic/pic.tab.h222
-rw-r--r--pic/pic.y15
-rw-r--r--pic/y.output0
-rw-r--r--refer/label.cc1565
-rw-r--r--refer/ref.cc4
-rw-r--r--refer/y.output0
-rw-r--r--tbl/main.cc16
-rw-r--r--tbl/table.cc14
-rw-r--r--tbl/table.h3
-rw-r--r--tbl/tbl.man9
-rwxr-xr-x[-rw-r--r--]test-groff0
-rw-r--r--tmac/tmac.an14
-rw-r--r--tmac/tmac.e8
-rw-r--r--troff/div.cc81
-rw-r--r--troff/div.h2
-rw-r--r--troff/env.cc6
-rw-r--r--troff/input.cc33
-rw-r--r--troff/node.cc31
-rw-r--r--troff/node.h1
-rw-r--r--troff/number.cc2
-rw-r--r--troff/troff.man12
-rw-r--r--xditview/ChangeLog4
-rw-r--r--xditview/Makefile10
-rw-r--r--xditview/draw.c3
60 files changed, 7219 insertions, 5024 deletions
diff --git a/ChangeLog b/ChangeLog
index b4eb43653..5c338d674 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/Makefile b/Makefile
index 8d93c936b..006fd5a9b 100644
--- a/Makefile
+++ b/Makefile
@@ -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:
diff --git a/NEWS b/NEWS
index cb7b3ba74..bbe0c0b51 100644
--- a/NEWS
+++ b/NEWS
@@ -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
============
diff --git a/PROBLEMS b/PROBLEMS
index 3bbe2bbc1..16e168c86 100644
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -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().
diff --git a/VERSION b/VERSION
index 16e5283ef..986607cab 100644
--- a/VERSION
+++ b/VERSION
@@ -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
+
diff --git a/configure b/configure
index 3269aea44..1eabd89ab 100755
--- a/configure
+++ b/configure
@@ -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;
diff --git a/eqn/eqn.y b/eqn/eqn.y
index 1039fdb22..28011fbd9 100644
--- a/eqn/eqn.y
+++ b/eqn/eqn.y
@@ -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.
diff --git a/mm/tmac.m b/mm/tmac.m
index ca6f97741..d37bdac0a 100644
--- a/mm/tmac.m
+++ b/mm/tmac.m
@@ -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(&current_position,
&current_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;
diff --git a/pic/pic.y b/pic/pic.y
index 7bcd6fe14..8c0405ffe 100644
--- a/pic/pic.y
+++ b/pic/pic.y
@@ -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