[SCM] image display tool for astronomy branch, debian, updated. d47981fee0f826dee34b7ecd5fde7c81ba8f5bfd

Ole Streicher debian at liska.ath.cx
Mon Jan 9 20:17:23 UTC 2012


The following commit has been merged in the debian branch:
commit d47981fee0f826dee34b7ecd5fde7c81ba8f5bfd
Author: Ole Streicher <debian at liska.ath.cx>
Date:   Mon Jan 9 21:15:45 2012 +0100

    Split the patches by subpackage

diff --git a/debian/patches/ast.patch b/debian/patches/ast.patch
new file mode 100644
index 0000000..ec81330
--- /dev/null
+++ b/debian/patches/ast.patch
@@ -0,0 +1,121 @@
+--- saods9-4.0b7.orig/ast-3.5/sphmap.c
++++ saods9-4.0b7/ast-3.5/sphmap.c
+@@ -92,6 +92,7 @@
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <math.h>
+ 
+ /* Module Variables. */
+ /* ================= */
+--- saods9-4.0b7.orig/ast-3.5/slalib.h
++++ saods9-4.0b7/ast-3.5/slalib.h
+@@ -0,0 +1,60 @@
++// This is a generated file; see ./debian/README.sla for information.
++void slaAddet ( double rm, double dm, double eq, double *rc, double *dc ) ;
++void slaAmpqk ( double ra, double da, double amprms[21],
++                double *rm, double *dm ) ;
++void slaCaldj ( int iy, int im, int id, double *djm, int *j ) ;
++void slaDaf2r ( int ideg, int iamin, double asec, double *rad, int *j ) ;
++void slaDav2m ( double axvec[3], double rmat[3][3] ) ;
++double slaDbear ( double a1, double b1, double a2, double b2  ) ;
++void slaDcc2s ( double v[3], double *a, double *b ) ;
++void slaDcs2c ( double a, double b, double v[3] ) ;
++void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] ) ;
++void slaDimxv ( double dm[3][3], double va[3], double vb[3] ) ;
++void slaDjcal ( int ndp, double djm, int iymdf[ 4 ], int *j ) ;
++void slaDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j ) ;
++void slaDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ) ;
++void slaDmxm ( double a[3][3], double b[3][3], double c[3][3] ) ;
++void slaDmxv ( double dm[3][3], double va[3], double vb[3] ) ;
++double slaDrange ( double angle ) ;
++double slaDranrm ( double angle ) ;
++double slaDsep ( double a1, double b1, double a2, double b2 ) ;
++void slaDtf2d ( int ihour, int imin, double sec, double *days, int *j ) ;
++void slaDtf2r ( int ihour, int imin, double sec, double *rad, int *j ) ;
++double slaDvdv( double va[3], double vb[3] ) ;
++void slaDvn ( double v[3], double uv[3], double *vm ) ;
++void slaDvxv ( double va[3], double vb[3], double vc[3] ) ;
++void slaEcmat ( double date, double rmat[3][3] ) ;
++double slaEpb ( double date ) ;
++double slaEpb2d ( double epb ) ;
++double slaEpj ( double date ) ;
++double slaEpj2d ( double epj ) ;
++double slaEqeqx ( double date ) ;
++void slaEqgal ( double dr, double dd, double *dl, double *db ) ;
++void slaEvp ( double date, double deqx, double dvb[3], double dpb[3], 
++              double dvh[3], double dph[3] ) ;
++void slaFk45z ( double r1950, double d1950, double bepoch,
++                double *r2000, double *d2000 ) ;
++void slaFk54z ( double r2000, double d2000, double bepoch,
++                double *r1950, double *d1950,
++                double *dr1950, double *dd1950 ) ;
++void slaFk5hz ( double r5, double d5, double jepoch,
++                double *rh, double *dh ) ;
++void slaGaleq ( double dl, double db, double *dr, double *dd ) ;
++void slaGalsup ( double dl, double db, double *dsl, double *dsb ) ;
++void slaGeoc ( double p, double h, double *r, double *z ) ;
++double slaGmst ( double ut1 ) ;
++void slaHfk5z ( double rh, double dh, double jepoch,
++                double *r5, double *d5,
++                double *dr5, double *dd5 ) ;
++void slaMappa ( double eq, double date, double amprms[21] ) ;
++void slaMapqkz ( double rm, double dm, double amprms[21],
++                 double *ra, double *da ) ;
++void slaPrebn ( double bep0, double bep1, double rmatp[3][3] ) ;
++void slaPrec ( double ep0, double ep1, double rmatp[3][3] ) ;
++float slaRverot ( float phi, float ra, float dec, float st ) ;
++float slaRvgalc ( float ra, float dec ) ;
++float slaRvlg ( float ra, float dec ) ;
++float slaRvlsrd ( float ra, float dec ) ;
++float slaRvlsrk ( float ra, float dec ) ;
++void slaSubet ( double rc, double dc, double eq, double *rm, double *dm ) ;
++void slaSupgal ( double dsl, double dsb, double *dl, double *db ) ;
+--- saods9-4.0b7.orig/ast-3.5/Makefile
++++ saods9-4.0b7/ast-3.5/Makefile
+@@ -42,6 +42,7 @@
+ 	skyaxis.c \
+ 	skyframe.c \
+ 	slamap.c \
++	sla.c \
+ 	specframe.c \
+ 	specmap.c \
+ 	sphmap.c \
+--- saods9-4.0b7.orig/ast-3.5/slamap.c
++++ saods9-4.0b7/ast-3.5/slamap.c
+@@ -153,6 +153,7 @@
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <math.h>
+ 
+ /* Module Variables. */
+ /* ================= */
+--- saods9-4.0b7.orig/ast-3.5/plot.c
++++ saods9-4.0b7/ast-3.5/plot.c
+@@ -12526,6 +12526,7 @@
+    return ret;
+ }
+ 
++#if 0
+ static void GFlush( AstPlot *this, const char *method, 
+                    const char *class ) {
+ /*
+@@ -12592,6 +12593,7 @@
+    }
+ 
+ }
++#endif
+ 
+ static void GLine( AstPlot *this, int n, const float *x, 
+                    const float *y, const char *method, 
+--- saods9-4.0b7.orig/ast-3.5/fitschan.c
++++ saods9-4.0b7/ast-3.5/fitschan.c
+@@ -801,6 +801,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <math.h>
+ 
+ /* Type Definitions */
+ /* ================ */
diff --git a/debian/patches/checkdns.patch b/debian/patches/checkdns.patch
new file mode 100644
index 0000000..d046093
--- /dev/null
+++ b/debian/patches/checkdns.patch
@@ -0,0 +1,19 @@
+--- saods9-4.0b7.orig/checkdns/checkdns.c
++++ saods9-4.0b7/checkdns/checkdns.c
+@@ -9,6 +9,8 @@
+ #include <signal.h>
+ #include <netdb.h>
+ #include <tcl.h>
++#include <string.h>
++#include <stdlib.h>
+ 
+ #ifndef SZ_LINE
+ #define SZ_LINE 2048
+@@ -30,7 +32,6 @@
+ {
+   int flag=0;
+   char host[SZ_LINE];
+-  struct hostent *hostent;
+   struct sigaction act1, oact1;
+ 
+   /* start the alarm, if necessary */
diff --git a/debian/patches/ds9.patch b/debian/patches/ds9.patch
new file mode 100644
index 0000000..fde1f4f
--- /dev/null
+++ b/debian/patches/ds9.patch
@@ -0,0 +1,348 @@
+--- saods9-4.0b7.orig/ds9/ds9.tcl
++++ saods9-4.0b7/ds9/ds9.tcl
+@@ -46,10 +46,10 @@
+ 
+ # other tcl packages
+ if {$tcl_platform(platform) != "windows"} {
+-    source ../lib/tcl8.4/http2.5/http.tcl
+-    source ../lib/tcllib1.6/base64/base64.tcl
+-    source ../lib/tcllib1.6/log/log.tcl
+-    source ../lib/tcllib1.6/ftp/ftp.tcl
++    source /usr/share/tcltk/tcl8.4/http2.5/http.tcl
++    #source /usr/lib/tcllib1.8/base64/base64.tcl
++    #source /usr/lib/tcllib1.8/log/log.tcl
++    #source /usr/lib/tcllib1.8/ftp/ftp.tcl
+ } else {
+     source C:/cygwin/home/joye/saods9/lib/tcl8.4/http2.5/http.tcl
+     source C:/cygwin/home/joye/saods9/lib/tcllib1.6/base64/base64.tcl
+@@ -84,7 +84,7 @@
+ # we need this after BLT is loaded
+ # neede for BLT_ZoomStack
+ if {$tcl_platform(platform) != "windows"} {
+-    source ../lib/blt2.4/graph.tcl
++    source /usr/lib/blt2.4/graph.tcl
+ } else {
+     source C:/cygwin/home/joye/saods9/lib/blt2.4/graph.tcl
+ }
+--- saods9-4.0b7.orig/ds9/ds9.mta
++++ saods9-4.0b7/ds9/ds9.mta
+@@ -9,9 +9,9 @@
+ ## CFile:ds9.C 1
+ ## CmdLine None
+ ## ConfigFile ds9.mta
+-## Data:../lib/blt2.4/bltGraph.pro 1
+-## Data:../lib/tcl8.4/encoding/iso8859-1.enc 1
+-## Data:../lib/tcl8.4/encoding/symbol.enc 1
++## Data:/usr/lib/blt2.4/bltGraph.pro 1
++## Data:/usr/share/tcltk/tcl8.4/encoding/iso8859-1.enc 1
++## Data:/usr/share/tcltk/tcl8.4/encoding/symbol.enc 1
+ ## Data:doc/acknowledgment.html 1
+ ## Data:doc/faq.html 1
+ ## Data:doc/helpdesk.html 1
+@@ -79,11 +79,11 @@
+ ## MainScript ds9.tcl
+ ## Mode Tcl/Tk
+ ## NoSource No
+-## OtherLib:../lib/blt2.4 1
+-## OtherLib:../lib/tcl8.4/http2.5 1
+-## OtherLib:../lib/tcllib1.6/base64 1
+-## OtherLib:../lib/tcllib1.6/ftp 1
+-## OtherLib:../lib/tcllib1.6/log 1
++## OtherLib:/usr/lib/blt2.4 1
++## OtherLib:/usr/share/tcltk/tcl8.4/http2.5 1
++# OtherLib:/usr/lib/tcllib1.8/base64 1
++# OtherLib:/usr/lib/tcllib1.8/ftp 1
++# OtherLib:/usr/lib/tcllib1.8/log 1
+ ## OutputFile ds9tk.c
+ ## Shroud No
+ ## Standalone Yes
+@@ -177,76 +177,76 @@
+ ## TclFile:vo.tcl 1
+ ## TclFile:wcs.tcl 1
+ ## TclFile:xpa.tcl 1
+-## TclLib ../lib/tcl8.4
+-## TkLib ../lib/tk8.4
++## TclLib /usr/share/tcltk/tcl8.4
++## TkLib /usr/share/tcltk/tk8.4
+ #
+ -main-script "ds9.tcl"
+--tcl-library "../lib/tcl8.4"
+--tk-library "../lib/tk8.4"
+--strip-tcl "../lib/blt2.4/dnd.tcl"
+--strip-tcl "../lib/blt2.4/dragdrop.tcl"
+--strip-tcl "../lib/blt2.4/graph.tcl"
+--strip-tcl "../lib/blt2.4/hierbox.tcl"
+--strip-tcl "../lib/blt2.4/pkgIndex.tcl"
+--strip-tcl "../lib/blt2.4/tabnotebook.tcl"
+--strip-tcl "../lib/blt2.4/tabset.tcl"
+--strip-tcl "../lib/blt2.4/tclIndex"
+--strip-tcl "../lib/blt2.4/treeview.tcl"
+--strip-tcl "../lib/tcl8.4/auto.tcl"
+--strip-tcl "../lib/tcl8.4/history.tcl"
+--strip-tcl "../lib/tcl8.4/http2.5/http.tcl"
+--strip-tcl "../lib/tcl8.4/http2.5/pkgIndex.tcl"
+--strip-tcl "../lib/tcl8.4/init.tcl"
+--strip-tcl "../lib/tcl8.4/ldAout.tcl"
+--strip-tcl "../lib/tcl8.4/package.tcl"
+--strip-tcl "../lib/tcl8.4/parray.tcl"
+--strip-tcl "../lib/tcl8.4/safe.tcl"
+--strip-tcl "../lib/tcl8.4/tclIndex"
+--strip-tcl "../lib/tcl8.4/word.tcl"
+--strip-tcl "../lib/tcllib1.6/base64/base64.tcl"
+--strip-tcl "../lib/tcllib1.6/base64/base64c.tcl"
+--strip-tcl "../lib/tcllib1.6/base64/pkgIndex.tcl"
+--strip-tcl "../lib/tcllib1.6/base64/uuencode.tcl"
+--strip-tcl "../lib/tcllib1.6/base64/yencode.tcl"
+--strip-tcl "../lib/tcllib1.6/ftp/ftp.tcl"
+--strip-tcl "../lib/tcllib1.6/ftp/ftp_geturl.tcl"
+--strip-tcl "../lib/tcllib1.6/ftp/pkgIndex.tcl"
+--strip-tcl "../lib/tcllib1.6/log/log.tcl"
+--strip-tcl "../lib/tcllib1.6/log/logger.tcl"
+--strip-tcl "../lib/tcllib1.6/log/pkgIndex.tcl"
+--strip-tcl "../lib/tk8.4/bgerror.tcl"
+--strip-tcl "../lib/tk8.4/button.tcl"
+--strip-tcl "../lib/tk8.4/choosedir.tcl"
+--strip-tcl "../lib/tk8.4/clrpick.tcl"
+--strip-tcl "../lib/tk8.4/comdlg.tcl"
+--strip-tcl "../lib/tk8.4/console.tcl"
+--strip-tcl "../lib/tk8.4/dialog.tcl"
+--strip-tcl "../lib/tk8.4/entry.tcl"
+--strip-tcl "../lib/tk8.4/focus.tcl"
+--strip-tcl "../lib/tk8.4/listbox.tcl"
+--strip-tcl "../lib/tk8.4/menu.tcl"
+--strip-tcl "../lib/tk8.4/mkpsenc.tcl"
+--strip-tcl "../lib/tk8.4/msgbox.tcl"
+--strip-tcl "../lib/tk8.4/obsolete.tcl"
+--strip-tcl "../lib/tk8.4/optMenu.tcl"
+--strip-tcl "../lib/tk8.4/palette.tcl"
+--strip-tcl "../lib/tk8.4/panedwindow.tcl"
+--strip-tcl "../lib/tk8.4/pkgIndex.tcl"
+--strip-tcl "../lib/tk8.4/safetk.tcl"
+--strip-tcl "../lib/tk8.4/scale.tcl"
+--strip-tcl "../lib/tk8.4/scrlbar.tcl"
+--strip-tcl "../lib/tk8.4/spinbox.tcl"
+--strip-tcl "../lib/tk8.4/tclIndex"
+--strip-tcl "../lib/tk8.4/tearoff.tcl"
+--strip-tcl "../lib/tk8.4/text.tcl"
+--strip-tcl "../lib/tk8.4/tk.tcl"
+--strip-tcl "../lib/tk8.4/tkfbox.tcl"
+--strip-tcl "../lib/tk8.4/unsupported.tcl"
+--strip-tcl "../lib/tk8.4/xmfbox.tcl"
++-tcl-library "/usr/share/tcltk/tcl8.4"
++-tk-library "/usr/share/tcltk/tk8.4"
++-strip-tcl "/usr/lib/blt2.4/dnd.tcl"
++-strip-tcl "/usr/lib/blt2.4/dragdrop.tcl"
++-strip-tcl "/usr/lib/blt2.4/graph.tcl"
++-strip-tcl "/usr/lib/blt2.4/hierbox.tcl"
++-strip-tcl "/usr/lib/blt2.4/pkgIndex.tcl"
++-strip-tcl "/usr/lib/blt2.4/tabnotebook.tcl"
++-strip-tcl "/usr/lib/blt2.4/tabset.tcl"
++-strip-tcl "/usr/lib/blt2.4/tclIndex"
++-strip-tcl "/usr/lib/blt2.4/treeview.tcl"
++-strip-tcl "auto.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/history.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/http2.5/http.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/http2.5/pkgIndex.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/init.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/ldAout.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/package.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/parray.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/safe.tcl"
++-strip-tcl "/usr/share/tcltk/tcl8.4/tclIndex"
++-strip-tcl "/usr/share/tcltk/tcl8.4/word.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/base64/base64.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/base64/base64c.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/base64/pkgIndex.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/base64/uuencode.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/base64/yencode.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/ftp/ftp.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/ftp/ftp_geturl.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/ftp/pkgIndex.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/log/log.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/log/logger.tcl"
++#-strip-tcl "/usr/lib/tcllib1.8/log/pkgIndex.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/bgerror.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/button.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/choosedir.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/clrpick.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/comdlg.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/console.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/dialog.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/entry.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/focus.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/listbox.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/menu.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/mkpsenc.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/msgbox.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/obsolete.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/optMenu.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/palette.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/panedwindow.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/pkgIndex.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/safetk.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/scale.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/scrlbar.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/spinbox.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/tclIndex"
++-strip-tcl "/usr/share/tcltk/tk8.4/tearoff.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/text.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/tk.tcl"
++-strip-tcl "tkfbox.tcl"
++-strip-tcl "/usr/share/tcltk/tk8.4/unsupported.tcl"
++-strip-tcl "xmfbox.tcl"
+ "ds9.C"
+--i "../lib/blt2.4/bltGraph.pro"
+--i "../lib/tcl8.4/encoding/iso8859-1.enc"
+--i "../lib/tcl8.4/encoding/symbol.enc"
++-i "/usr/lib/blt2.4/bltGraph.pro"
++-i "/usr/share/tcltk/tcl8.4/encoding/iso8859-1.enc"
++-i "/usr/share/tcltk/tcl8.4/encoding/symbol.enc"
+ -i "doc/acknowledgment.html"
+ -i "doc/faq.html"
+ -i "doc/helpdesk.html"
+--- saods9-4.0b7.orig/ds9/Makefile
++++ saods9-4.0b7/ds9/Makefile
+@@ -175,20 +175,12 @@
+ 
+ INDEX	= pkgIndex.tcl
+ 
+-LIBS	= -L../lib -lsaotk -ltkhtml -ltkmpeg -L../lib/Img1.3 \
+-	-ltkimgwindow1.3 \
+-	-ltkimgjpeg1.3 -ljpegtcl1.0 \
+-	-ltkimgtiff1.3 -ltifftcl1.0 \
+-	-ltkimgpng1.3 -lpngtcl1.0 \
+-	-ltkimgppm1.3 \
+-	-ltkimggif1.3 \
+-	-ltkimgbmp1.3 \
+-	-ltkimgxbm1.3 \
+-	-lzlibtcl1.0 -ltkimg1.3 \
+-	-L../lib/Tktable2.9 -lTktable2.9 \
+-	-L../lib -lz -lxpa -liis -lcheckdns \
+-	-lBLT24 \
+-	-ltk8.4 -ltcl8.4
++LIBS	=					\
++	/usr/lib/Tktable2.9/libTktable2.9.so	\
++	-lz -lBLT -ltk8.4 -ltcl8.4		\
++	-L../lib -lsaotk -ltkhtml -ltkmpeg -lsla\
++	-liis -lcheckdns  -lxpa  -lcheckdns	\
++	-lgfortran
+ 
+ LIBS.a	= ../lib/libsaotk.a \
+ 	../lib/libtkhtml.a \
+@@ -254,17 +246,7 @@
+ # 
+ ifeq ($(ARCH),linux)
+ ds9	: ds9.o ds9tk.o FORCE
+-	$(RM) $@
+-	rm -f libstdc++.a
+-	ln -s `$(CXX) -print-file-name=libstdc++.a` .
+-	$(CXX) -static-libgcc $(OPTS) \
+-	-Wl,--export-dynamic \
+-	-o $@ ds9.o ds9tk.o \
+-	-Wl,-Bstatic $(LIBS) \
+-	-L. -lstdc++ \
+-	-Wl,-Bdynamic  -L$(X11LIB) -lX11 \
+-	-ldl -lpthread
+-	rm -f libstdc++.a
++	$(CXX) $(OPTS) -o $@ ds9.o ds9tk.o $(LIBS)
+ endif
+ 
+ #--------------------------linux64
+--- saods9-4.0b7.orig/ds9/ds9.C
++++ saods9-4.0b7/ds9/ds9.C
+@@ -6,6 +6,7 @@
+ using namespace std;
+ 
+ #include "ds9tk.h"
++#include <tcl.h>
+ 
+ extern "C" {
+   int Blt_Init(Tcl_Interp*);
+@@ -15,20 +16,6 @@
+   int Tkhtml_Init(Tcl_Interp*);
+   int Tkmpeg_Init(Tcl_Interp*);
+ 
+-  int Tkimg_Init(Tcl_Interp*);
+-  int Zlibtcl_Init(Tcl_Interp*);
+-  int Jpegtcl_Init(Tcl_Interp*);
+-  int Tkimgjpeg_Init(Tcl_Interp*);
+-  int Tifftcl_Init(Tcl_Interp*);
+-  int Tkimgtiff_Init(Tcl_Interp*);
+-  int Pngtcl_Init(Tcl_Interp*);
+-  int Tkimgpng_Init(Tcl_Interp*);
+-  int Tkimggif_Init(Tcl_Interp*);
+-  int Tkimgppm_Init(Tcl_Interp*);
+-  int Tkimgbmp_Init(Tcl_Interp*);
+-  int Tkimgxbm_Init(Tcl_Interp*);
+-  int Tkimgwindow_Init(Tcl_Interp*);
+-
+   int Tclxpa_Init(Tcl_Interp*);
+   int Iis_Init(Tcl_Interp*);
+ }
+@@ -74,57 +61,8 @@
+ 
+   // Tkimg _inits
+ 
+-  if (Tkimg_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "img", Tkimg_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Zlibtcl_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "zlibtcl", Zlibtcl_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Jpegtcl_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "jpegtcl", Jpegtcl_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgjpeg_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "jpeg", Tkimgjpeg_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tifftcl_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "tifftcl", Tifftcl_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgtiff_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "tiff", Tkimgtiff_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Pngtcl_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "pngtcl", Pngtcl_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgpng_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "png", Tkimgpng_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimggif_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "gif", Tkimggif_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgppm_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "ppm", Tkimgppm_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgbmp_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "bmp", Tkimgbmp_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgxbm_Init(interp) == TCL_ERROR)
+-    return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "xbm", Tkimgxbm_Init,(Tcl_PackageInitProc*)NULL);
+-
+-  if (Tkimgwindow_Init(interp) == TCL_ERROR)
++  if (Tcl_PkgRequire (interp, "Img", NULL, 0) == NULL)
+     return TCL_ERROR;
+-  Tcl_StaticPackage (interp, "window", Tkimgwindow_Init,(Tcl_PackageInitProc*)NULL);
+ 
+   return TCL_OK;
+ }
+--- saods9-4.0b7.orig/ds9/sample.tcl
++++ saods9-4.0b7/ds9/sample.tcl
+@@ -1,4 +1,4 @@
+-#  Copyright (C) 1999-200
++#  Copyright (C) 1999-2005
+ #  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+ #  For conditions of distribution and use, see copyright notice in "copyright"
+ 
diff --git a/debian/patches/funtools.patch b/debian/patches/funtools.patch
new file mode 100644
index 0000000..ae94e66
--- /dev/null
+++ b/debian/patches/funtools.patch
@@ -0,0 +1,31 @@
+--- saods9-4.0b7.orig/funtools-1.3.0b9/Makefile.in
++++ saods9-4.0b7/funtools-1.3.0b9/Makefile.in
+@@ -60,7 +60,7 @@
+ # FITSY_LIBS =		-L./fitsy -lfitsy
+ 
+ # wcs files are in the wcs subdirectory
+-WCS_INC =		-I./wcs
++WCS_INC =		-I../wcssubs-3.5.6/
+ # WCS_LIBS =		-L./wcs -lwcs
+ 
+ # filter files are in the filter subdirectory
+@@ -187,7 +187,7 @@
+ 
+ # Subdirectories to run make in for the primary targets.
+ 
+-SUBLIBS =	util fitsy wcs filter
++SUBLIBS =	util fitsy filter
+ 
+ SUBDIRS =	$(SUBLIBS) gnu funtest
+ 
+--- saods9-4.0b7.orig/funtools-1.3.0b9/filter/Makefile.in
++++ saods9-4.0b7/funtools-1.3.0b9/filter/Makefile.in
+@@ -55,7 +55,7 @@
+ #FITSY_LIBS =		-L../fitsy
+ 
+ # wcs files are in the wcs subdirectory
+-WCS_INC =		-I../wcs
++WCS_INC =		-I../../wcssubs-3.5.6
+ #WCS_LIBS =		-L../wcs -lwcs
+ 
+ # extra includes for compiling
diff --git a/debian/patches/htmlwidget.patch b/debian/patches/htmlwidget.patch
new file mode 100644
index 0000000..5fc2d7e
--- /dev/null
+++ b/debian/patches/htmlwidget.patch
@@ -0,0 +1,41 @@
+--- saods9-4.0b7.orig/htmlwidget/src/htmlindex.c
++++ saods9-4.0b7/htmlwidget/src/htmlindex.c
+@@ -24,6 +24,7 @@
+ **   http://www.hwaci.com/drh/
+ */
+ #include <ctype.h>
++#include <string.h>
+ #include <tk.h>
+ #include "htmlindex.h"
+ 
+--- saods9-4.0b7.orig/htmlwidget/src/htmldraw.c
++++ saods9-4.0b7/htmlwidget/src/htmldraw.c
+@@ -404,14 +404,12 @@
+   }else{
+     /* We are dealing with a single HtmlElement which contains something
+     ** other than plain text. */
+-    int top, btm, cntr;
+     int cnt, w;
+     char zBuf[30];
+     switch( src->base.type ){
+       case Html_LI:
+         x = src->li.x;
+         y = src->li.y;
+-        cntr = (top+btm)/2;
+         switch( src->li.type ){
+           case LI_TYPE_Enum_1:
+             sprintf(zBuf,"%d.",src->li.cnt);
+--- saods9-4.0b7.orig/htmlwidget/src/htmlcmd.c
++++ saods9-4.0b7/htmlwidget/src/htmlcmd.c
+@@ -25,6 +25,7 @@
+ */
+ #include <tk.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "htmlcmd.h"
+ 
+ /*
+--- saods9-4.0b7.orig/htmlwidget/confdefs.h
++++ saods9-4.0b7/htmlwidget/confdefs.h
+@@ -0,0 +1 @@
++
diff --git a/debian/patches/iis.patch b/debian/patches/iis.patch
new file mode 100644
index 0000000..0c7bfa9
--- /dev/null
+++ b/debian/patches/iis.patch
@@ -0,0 +1,167 @@
+--- saods9-4.0b7.orig/iis/util.c
++++ saods9-4.0b7/iis/util.c
+@@ -1,5 +1,6 @@
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ 
+ #include "iis.h"
+ #include "xim.h"
+--- saods9-4.0b7.orig/iis/xim.C
++++ saods9-4.0b7/iis/xim.C
+@@ -24,7 +24,7 @@
+ 
+ void iisIO(void* data, int mask)
+ {
+-  int fd = (int)data;
++  int fd = *(int*)data;
+ 
+   if (IISDebug)
+     cerr << "iisIO() " << fd << ' ' << mask << endl;
+@@ -48,7 +48,7 @@
+   iis->chan[fd] = chan;
+ #ifndef __WIN32__
+   Tcl_CreateFileHandler(fd, TCL_READABLE, (void (*)(void*,int))iisIO,
+-			(void*)fd);
++			&fd);
+ #else
+   Tcl_CreateEventSource(setupProc, checkProc, (void*)fd);
+ #endif
+--- saods9-4.0b7.orig/iis/iistcl.C
++++ saods9-4.0b7/iis/iistcl.C
+@@ -6,10 +6,12 @@
+ #include <string.h>
+ 
+ #if __GNUC__ >= 3
++#include <cstdlib>
+ #include <iostream>
+ #include <sstream>
+ using namespace std;
+ #else
++#include <stdlib.h>
+ #include <iostream.h>
+ #include <strstream.h>
+ #endif
+@@ -46,6 +48,7 @@
+   return copy;
+ }
+ 
++#if 0
+ static char* toLower(char* str)
+ {
+   char* ptr = str;
+@@ -55,6 +58,7 @@
+   }
+   return str;
+ }
++#endif
+ 
+ int Iis_Init(Tcl_Interp* interp) {
+ 
+@@ -154,7 +158,7 @@
+       xim.chan[i].dataout = 0;    // output channel
+       xim.chan[i].keepalive = 0;  // used to keep input fifo ready
+       xim.chan[i].path[0] = '\0'; // for unix sockets
+-      xim.chan[i].reference_frame;// reference (cmd i/o) frame
++      xim.chan[i].reference_frame=0;// reference (cmd i/o) frame
+       xim.chan[i].rf_p = NULL;    // reference frame descriptor
+     }
+   }
+--- saods9-4.0b7.orig/iis/iis.c
++++ saods9-4.0b7/iis/iis.c
+@@ -4,10 +4,14 @@
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
++#include <string.h>
+ #ifdef HAVE_SYS_UN_H
+ #include <sys/un.h>
+ #endif
+ #include <fcntl.h>
++#include <unistd.h>
++#include <ctype.h>
++#include <time.h>
+ 
+ #include "iis.h"
+ #include "xim.h"
+@@ -110,7 +114,7 @@
+  * UNIX domain socket connection.  All three types of server ports are
+  * simultaneously ready to receive client connections.
+  */
+-xim_iisOpen (xim)
++int xim_iisOpen (xim)
+ register XimDataPtr xim;
+ {
+ 	int nopen = 0;
+@@ -292,7 +296,7 @@
+ 	    goto err;
+ 
+ 	/* Allocate and fill in i/o channel descriptor. */
+-	if (chan = get_iochan(xim)) {
++	if ((chan = get_iochan(xim))) {
+ 	    chan->xim = (XtPointer) xim;
+ 	    chan->type = IO_INET;
+ 	    chan->datain = s;
+@@ -360,7 +364,7 @@
+ 	    goto err;
+ 
+ 	/* Allocate and fill in i/o channel descriptor. */
+-	if (chan = get_iochan(xim)) {
++	if ((chan = get_iochan(xim))) {
+ 	    chan->xim = (XtPointer) xim;
+ 	    chan->type = IO_UNIX;
+ 	    chan->datain = s;
+@@ -414,7 +418,7 @@
+ 	} */
+ 
+ 	/* Allocate and fill in i/o channel descriptor. */
+-	if (chan = get_iochan(xim)) {
++	if ((chan = get_iochan(xim))) {
+ 	    chan->xim = (XtPointer) xim;
+ 	    chan->type = chan_port->type;
+ 	    chan->datain = s;
+@@ -457,7 +461,6 @@
+ get_iochan (xim)
+ register XimDataPtr xim;
+ {
+-	register IoChanPtr chan;
+ 	register int i;
+ 
+ 	for (i=0;  i < XtNumber(xim->chan);  i++)
+@@ -744,7 +747,7 @@
+ 		 */
+ 		char emsg[SZ_WCSBUF];
+ 		char *text;
+-		int frame, wcsnum;
++		int frame;
+ 
+ 		memset ((char *)emsg, 0, SZ_WCSBUF);
+ 
+@@ -1031,7 +1034,7 @@
+ 
+ /* DECODE_FRAMENO -- Decode encoded IIS register frame number.
+  */
+-static
++static int
+ decode_frameno (z)
+ register int	z;
+ {
+@@ -1385,6 +1388,8 @@
+  * elsewhere if needed, our only purpose here is to extract the frame WCS.
+  */
+ 
++print_mappings (FrameBufPtr fr);
++
+ static void
+ add_mapping (xim, ctran, wcsbuf, fr)
+ register XimDataPtr xim;
+@@ -1476,8 +1481,7 @@
+ 
+ /* PRINT_MAPPINGS -- Debug routine to print all mappings on a frame.
+  */
+-print_mappings (fr)
+-FrameBufPtr fr;
++print_mappings (FrameBufPtr fr)
+ {
+ 	MappingPtr mp;
+ 	register int i;
diff --git a/debian/patches/makefiles.patch b/debian/patches/makefiles.patch
new file mode 100644
index 0000000..c264a60
--- /dev/null
+++ b/debian/patches/makefiles.patch
@@ -0,0 +1,120 @@
+--- saods9-4.0b7.orig/make.linux
++++ saods9-4.0b7/make.linux
+@@ -1,21 +1,21 @@
+ ARCH	= linux
+-BUILD_SHARED = yes
+-OPTS = -O2
++OPTS = $(FLAGS) -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/tcl8.4 
++DEPENDS = no
+ #OPTS = -gstabs+ -fno-inline
+ #OPTS = -gstabs+ -fno-inline -pg
+ 
+-X11INCLUDE=/usr/X11R6/include
++X11INCLUDE=/usr/include/X11
+ X11LIB	= /usr/X11R6/lib
+ 
+ CXX	= g++
+-CXXOPT	= ${OPTS} -fPIC -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
++CXXOPT	= ${OPTS} 
+ CC	= gcc
+ CCc	= gcc
+ #CCc	= 'gcc -g'
+-CCOPT	= ${OPTS} -fPIC -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
++CCOPT	= $(OPTS)
+ 
+ LIBCMD	= $(AR) -cq
+-RANLIB	= echo
++RANLIB	= ranlib
+ SHCMD	= $(CXX) -shared -o
+ SHEXT	= so
+-ETAGS	= etags
++ETAGS	= true
+--- saods9-4.0b7.orig/Makefile
++++ saods9-4.0b7/Makefile
+@@ -26,7 +26,7 @@
+   TCLXDIR = $(TCLXDIR)/win
+ 
+   TCLLIBFLAGS = --prefix ..
+-  PREHTMLFLAGS = config_BUILD_TCLSH=tclsh84s config_TARGET_TCL_SCRIPT_DIR=$(root)/lib/tcl8.4
++  PREHTMLFLAGS = config_BUILD_TCLSH=tclsh84s config_TARGET_TCL_SCRIPT_DIR=$(root)/share/tcltk/tcl8.4
+ else
+   EXE	=
+   WISH	= wish8.4
+@@ -37,6 +37,7 @@
+ 
+   XFLAGS = --x-includes=$(X11INCLUDE) --x-libraries="$(X11LIB) $(HTMLEXTLIB)"
+   TCLLIBFLAGS = --prefix $(root)
++  PREHTMLFLAGS= config_TARGET_TCL_SCRIPT_DIR=/usr/share/tcltk/tcl8.4 config_TARGET_TK_SCRIPT_DIR=/usr/share/tcltk/tk8.4
+ endif
+ 
+ TCLFLAGS = --enable-gcc --prefix $(root) $(XFLAGS)
+@@ -46,12 +47,12 @@
+ 	--with-tcl=$(root)/$(TCLDIR) --with-tk=$(root)/$(TKDIR) $(XFLAGS)
+ TKIMGFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
+ 	 --with-tk=$(root)/$(TKDIRDIR) $(XFLAGS)
+-XPAFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
++XPAFLAGS = --enable-gcc --prefix $(root) --with-tcl=/usr/share/tcltk/tcl8.4 \
+ 	$(XFLAGS)
+-HTMLFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIR) \
+-	--with-tk=$(root)/$(TKDIR) $(XFLAGS)
++HTMLFLAGS = --enable-gcc --prefix $(root) --with-tcl=/usr/share/tcltk/tcl8.4/ --with-tk=/usr/share/tcltk/tk8.4/
++
++FUNTOOLSFLAGS = --prefix $(root) --enable-gcc --with-zlib=-lz --with-wcslib=../lib/libwcs.a --enable-mainlib
+ 
+-FUNTOOLSFLAGS = --prefix $(root) --enable-gcc --with-zlib=../lib/libz.a --with-wcslib=../lib/libwcs.a --enable-mainlib
+ ZLIBFLAGS = --prefix $(root)
+ 
+ SAOINDEX= lib/pkgIndex.tcl
+@@ -185,7 +186,7 @@
+ 
+ tkindex : FORCE
+ 	@echo "Installing Tk mkIndex..."
+-	cd lib/tk8.4; echo "pkg_mkIndex . *.tcl" | ../../bin/tclsh8.4	
++	cd share/tcltk/tk8.4; echo "pkg_mkIndex . *.tcl" | ../../../bin/tclsh8.4	
+ 
+ blt	: FORCE
+ 	@echo "Installing BLT..."
+@@ -194,7 +195,7 @@
+ 
+ mktclapp: FORCE
+ 	@echo "Installing MKTCLAPP..."
+-	cd $(MKTCLAPPDIR); CC=$(CCc) $(MAKE) mktclapp -e
++	cd $(MKTCLAPPDIR); CC=$(CCc) CFLAGS="$(CCOPT)" $(MAKE) mktclapp -e
+ 	cp $(MKTCLAPPDIR)/mktclapp$(EXE) bin/.
+ 
+ zlib  : FORCE
+@@ -219,13 +220,13 @@
+ 
+ tkmpeg	: FORCE
+ 	@echo "Installing TKMPEG..."
+-	cd $(TKMPEGDIR); $(MAKE)
++	cd $(TKMPEGDIR); $(MAKE) CXXOPT="$(CXXOPT)"
+ 	cd $(TKMPEGDIR); $(MAKE) install
+ 
+ html	: FORCE
+ 	@echo "Installing HTMLWIDGET noshared..."
+-	cd $(HTMLDIR); CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=no
+-	cd $(HTMLDIR); $(MAKE)
++	cd $(HTMLDIR); CFLAGS="$(CXXOPT)" CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=no
++	cd $(HTMLDIR); $(MAKE) headers libtkhtml.a
+ 	cp $(HTMLDIR)/libtkhtml.a lib/.
+ 
+ htmlsh	: FORCE
+@@ -242,7 +243,7 @@
+ 
+ xpa	: FORCE
+ 	@echo "Installing XPA..."
+-	cd $(XPADIR); CC=$(CCc) ./configure $(XPAFLAGS)  --disable-shared
++	cd $(XPADIR); CC=$(CCc) CFLAGS="$(CCOPT)" ./configure $(XPAFLAGS)  --disable-shared
+ 	cd $(XPADIR); $(MAKE); $(MAKE) install
+ 
+ iis	: FORCE
+@@ -272,7 +273,7 @@
+ 
+ saotk	: FORCE
+ 	@echo "Installing SAOTK..."
+-	cd $(SAOTKDIR); $(MAKE) install
++	cd $(SAOTKDIR); $(MAKE) CXX="$(CXX)" install
+ 
+ win	: FORCE
+ 	@echo "Installing WIN..."
diff --git a/debian/patches/saotk.patch b/debian/patches/saotk.patch
new file mode 100644
index 0000000..9bd90d5
--- /dev/null
+++ b/debian/patches/saotk.patch
@@ -0,0 +1,20642 @@
+--- saods9-4.0b7.orig/saotk/fitsy++/strm.C
++++ saods9-4.0b7/saotk/fitsy++/strm.C
+@@ -346,7 +346,7 @@
+   if (!(this->pExt_ || (this->pIndex_>0))) {
+ 
+     // we are only looking for a primary image
+-    if (this->head_ = this->headRead()) {
++    if ((this->head_ = this->headRead())) {
+       this->found();
+       return;
+     }
+@@ -402,7 +402,7 @@
+ 	this->head_ = NULL;
+       }
+ 
+-      if (this->head_ = this->headRead()) {
++      if ((this->head_ = this->headRead())) {
+ 	this->ext_++;
+ 	this->found();
+ 	return;
+--- saods9-4.0b7.orig/saotk/fitsy++/outchannel.C
++++ saods9-4.0b7/saotk/fitsy++/outchannel.C
+@@ -7,7 +7,7 @@
+ OutFitsChannel::OutFitsChannel(Tcl_Interp* interp, const char* ch)
+ {
+   int tclMode;
+-  if (ch_ = Tcl_GetChannel(interp, (char*)ch, &tclMode))
++  if ((ch_ = Tcl_GetChannel(interp, (char*)ch, &tclMode)))
+     valid_ = 1;
+ }
+ 
+--- saods9-4.0b7.orig/saotk/fitsy++/outfile.C
++++ saods9-4.0b7/saotk/fitsy++/outfile.C
+@@ -6,7 +6,7 @@
+ 
+ OutFitsFile::OutFitsFile(const char* fn)
+ {
+-  if (fd_ = fopen(fn, "wb"))
++  if ((fd_ = fopen(fn, "wb")))
+     valid_ = 1;
+ }
+ 
+@@ -23,7 +23,7 @@
+ 
+ OutFitsFileGZ::OutFitsFileGZ(const char* fn)
+ {
+-  if (fd_ = gzopen(fn, "wb"))
++  if ((fd_ = gzopen(fn, "wb")))
+     valid_ = 1;
+ }
+ 
+--- saods9-4.0b7.orig/saotk/tkpostscript.h
++++ saods9-4.0b7/saotk/tkpostscript.h
+@@ -4,7 +4,7 @@
+ 
+ // this is copied from tkCanvPs.c
+ 
+-#include "../../tk8.4.9/generic/tkCanvas.h"
++#include <tk-private/generic/tkCanvas.h>
+ 
+ typedef struct TkPostscriptInfo {
+     int x, y, width, height;	/* Area to print, in canvas pixel
+--- saods9-4.0b7.orig/saotk/Makefile
++++ saods9-4.0b7/saotk/Makefile
+@@ -34,7 +34,6 @@
+ 	../$(WCSSUBSDIR)/*.o \
+ 	../$(SLADIR)/*.o \
+ 	../$(ASTDIR)/*.o \
+-	../$(ZLIBDIR)/*.o \
+ 	../$(FUNTOOLSDIR)/filter/*.o \
+ 	../$(FUNTOOLSDIR)/fitsy/*.o \
+ 	../$(FUNTOOLSDIR)/util/*.o
+--- saods9-4.0b7.orig/saotk/frame/parser.H
++++ saods9-4.0b7/saotk/frame/parser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -332,6 +342,7 @@
+      ZOOM_ = 558
+    };
+ #endif
++/* Tokens.  */
+ #define REAL 258
+ #define INT 259
+ #define STRING 260
+@@ -637,18 +648,20 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 54 "parser.Y"
+-typedef union YYSTYPE {
++{
+   char chr;
+   char str[2048];
+   void* ptr;
+   int integer;
+   double real;
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 652 "parser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 664 "parser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -656,5 +669,3 @@
+ 
+ extern YYSTYPE frlval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/prosparser.C
++++ saods9-4.0b7/saotk/frame/prosparser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse prosparse
+ #define yylex   proslex
+ #define yyerror proserror
+@@ -95,6 +107,7 @@
+      VERSION_ = 288
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -142,8 +155,8 @@
+ #define DISCARD_(x) {yyclearin; prosDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -205,16 +218,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 65 "prosparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 218 "prosparser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 237 "prosparser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -225,56 +245,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 230 "prosparser.C"
++/* Line 216 of yacc.c.  */
++#line 250 "prosparser.C"
++
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
++
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
++# endif
++#endif
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -284,24 +419,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -319,39 +454,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
+-
+-#endif
++    while (YYID (0))
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+ #endif
+ 
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  3
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   229
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  45
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  41
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  90
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  195
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   288
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       34,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -387,7 +516,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned short yyprhs[] =
++static const yytype_uint16 yyprhs[] =
+ {
+        0,     0,     3,     7,    11,    14,    15,    18,    20,    21,
+       25,    26,    30,    34,    36,    38,    40,    42,    44,    46,
+@@ -401,8 +530,8 @@
+      313
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int8 yyrhs[] =
+ {
+       46,     0,    -1,    69,    47,    79,    -1,    47,    48,    51,
+       -1,    48,    51,    -1,    -1,    19,    53,    -1,    33,    -1,
+@@ -439,7 +568,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,   123,   123,   126,   127,   130,   131,   132,   133,   133,
+      134,   134,   135,   136,   139,   140,   141,   144,   145,   148,
+@@ -454,9 +583,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "STRING", "HOUR",
+@@ -478,7 +607,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -489,7 +618,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,    45,    46,    47,    47,    48,    48,    48,    49,    48,
+       50,    48,    48,    48,    51,    51,    51,    52,    52,    53,
+@@ -504,7 +633,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     3,     3,     2,     0,     2,     1,     0,     3,
+        0,     3,     3,     1,     1,     1,     1,     1,     1,     1,
+@@ -521,7 +650,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+       58,     0,    59,     1,    52,     0,    55,     0,    54,    53,
+       49,    50,     7,    86,    59,     0,     8,    10,    60,    13,
+@@ -545,8 +674,8 @@
+       27,    25,    25,    72,    69
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const short yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int16 yydefgoto[] =
+ {
+       -1,     1,    14,    15,    33,    34,    32,    66,    22,    78,
+       53,    86,   139,   140,   168,   106,   156,    67,    87,   116,
+@@ -558,7 +687,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -110
+-static const short yypact[] =
++static const yytype_int16 yypact[] =
+ {
+     -110,    20,   185,  -110,  -110,     4,  -110,    18,  -110,  -110,
+     -110,  -110,  -110,  -110,   162,    14,  -110,  -110,    -5,  -110,
+@@ -583,7 +712,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const short yypgoto[] =
++static const yytype_int16 yypgoto[] =
+ {
+     -110,  -110,  -110,   136,  -110,  -110,   125,   -17,  -110,   -45,
+      -44,   -12,  -109,  -110,   -77,   -57,  -110,    75,   -46,  -110,
+@@ -597,7 +726,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -83
+-static const short yytable[] =
++static const yytype_int16 yytable[] =
+ {
+       54,    55,    56,    57,   101,    59,   107,    68,    69,    70,
+       71,    72,    28,    74,    73,   142,   159,   -25,   109,   144,
+@@ -624,7 +753,7 @@
+       -5,     0,     0,     0,     0,     0,     0,     0,     0,    13
+ };
+ 
+-static const short yycheck[] =
++static const yytype_int16 yycheck[] =
+ {
+       44,    45,    46,    47,    81,    49,    83,    53,    54,    55,
+       56,    57,    14,    59,    58,   124,    42,    14,    44,   128,
+@@ -653,7 +782,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,    46,    69,     0,    16,    19,    20,    22,    23,    24,
+       25,    29,    33,    44,    47,    48,    66,    67,    70,    82,
+@@ -677,22 +806,6 @@
+       54,    57,    57,    56,    56
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -718,30 +831,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -762,42 +908,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -806,45 +1006,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -859,13 +1066,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -875,45 +1078,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -923,70 +1128,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
++
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
+ 
+-
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
++
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -994,13 +1321,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -1009,10 +1336,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -1025,14 +1352,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -1043,13 +1374,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -1060,18 +1397,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -1080,9 +1417,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -1106,8 +1443,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -1120,18 +1456,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -1142,21 +1478,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -1187,19 +1523,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1214,7 +1548,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1234,22 +1568,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -1291,12 +1624,12 @@
+ 
+   case 8:
+ #line 133 "prosparser.Y"
+-    {globalSystem = (CoordSystem)yyvsp[0].integer;;}
++    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 10:
+ #line 134 "prosparser.Y"
+-    {globalSystem = WCS; globalSky = (SkyFrame)yyvsp[0].integer;;}
++    {globalSystem = WCS; globalSky = (SkyFrame)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 16:
+@@ -1306,12 +1639,12 @@
+ 
+   case 17:
+ #line 144 "prosparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 18:
+ #line 145 "prosparser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 19:
+@@ -1326,97 +1659,97 @@
+ 
+   case 27:
+ #line 164 "prosparser.Y"
+-    {yyval.real = 0;;}
++    {(yyval.real) = 0;;}
+     break;
+ 
+   case 28:
+ #line 165 "prosparser.Y"
+-    {yyval.real = yyvsp[0].real;;}
++    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 29:
+ #line 168 "prosparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 30:
+ #line 169 "prosparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 31:
+ #line 170 "prosparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 32:
+ #line 173 "prosparser.Y"
+-    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
++    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+     break;
+ 
+   case 33:
+ #line 174 "prosparser.Y"
+-    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), DEGREES);;}
++    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREES);;}
+     break;
+ 
+   case 34:
+ #line 175 "prosparser.Y"
+-    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCMIN);;}
++    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
+     break;
+ 
+   case 35:
+ #line 176 "prosparser.Y"
+-    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCSEC);;}
++    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
+     break;
+ 
+   case 36:
+ #line 180 "prosparser.Y"
+     {
+-	  Vector r = FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 37:
+ #line 187 "prosparser.Y"
+     {
+-	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),DEGREES);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREES);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 38:
+ #line 194 "prosparser.Y"
+     {
+-	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCMIN);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 39:
+ #line 201 "prosparser.Y"
+     {
+-	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCSEC);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 40:
+ #line 209 "prosparser.Y"
+-    {yyval.integer = yyvsp[0].integer;;}
++    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 41:
+ #line 212 "prosparser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 42:
+@@ -1426,13 +1759,13 @@
+ 	  CoordSystem sys = checkWCSSystem();
+ 	  SkyFrame sky = checkWCSSky();
+ 	  if (sky == GALACTIC || sky == ECLIPTIC) 
+-	    r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
++	    r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
+ 	  else
+-	    r = FITPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
++	    r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1445,12 +1778,12 @@
+ #line 230 "prosparser.Y"
+     {
+ 	  Vector r = FITPTR->mapToRef(
+-	    Vector(hmsToDegree(prossign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
+-	    dmsToDegree(prossign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(hmsToDegree(prossign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
++	    dmsToDegree(prossign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1463,79 +1796,79 @@
+ #line 241 "prosparser.Y"
+     {
+ 	  Vector r = FITPTR->mapToRef(
+-	    Vector(dmsToDegree(prossign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
+-	    dmsToDegree(prossign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(dmsToDegree(prossign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
++	    dmsToDegree(prossign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 47:
+ #line 251 "prosparser.Y"
+     {
+-	  Vector r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 48:
+ #line 258 "prosparser.Y"
+     {
+-	  Vector r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),
++	  Vector r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 49:
+ #line 267 "prosparser.Y"
+-    {yyval.integer = IMAGE;;}
++    {(yyval.integer) = IMAGE;;}
+     break;
+ 
+   case 50:
+ #line 268 "prosparser.Y"
+-    {yyval.integer = PHYSICAL;;}
++    {(yyval.integer) = PHYSICAL;;}
+     break;
+ 
+   case 51:
+ #line 271 "prosparser.Y"
+-    {yyval.integer = yyvsp[0].integer;;}
++    {(yyval.integer) = (yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 52:
+ #line 272 "prosparser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 53:
+ #line 273 "prosparser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 54:
+ #line 274 "prosparser.Y"
+-    {yyval.integer = GALACTIC;;}
++    {(yyval.integer) = GALACTIC;;}
+     break;
+ 
+   case 55:
+ #line 275 "prosparser.Y"
+-    {yyval.integer = ECLIPTIC;;}
++    {(yyval.integer) = ECLIPTIC;;}
+     break;
+ 
+   case 56:
+ #line 278 "prosparser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 57:
+ #line 279 "prosparser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 58:
+@@ -1579,15 +1912,15 @@
+ 
+   case 63:
+ #line 309 "prosparser.Y"
+-    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
+-	     yyvsp[-2].real,
++    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
++	     (yyvsp[(5) - (7)].real),
+ 	     color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 64:
+ #line 313 "prosparser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-6].vector),
+-	    yyvsp[-4].real,yyvsp[-2].real,1,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    (yyvsp[(5) - (9)].real),(yyvsp[(7) - (9)].real),1,
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1599,9 +1932,9 @@
+   case 66:
+ #line 318 "prosparser.Y"
+     {
+-	  aAnnuli[0] = yyvsp[-7].real;
+-	  aAnnuli[1] = yyvsp[-5].real;
+-	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
++	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
++	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
++	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
+ 	    aNum,aAnnuli,
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -1609,8 +1942,8 @@
+ 
+   case 67:
+ #line 326 "prosparser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-8].vector),
+-	    yyvsp[-6].real,yyvsp[-4].real,yyvsp[-2].integer,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (11)].vector)),
++	    (yyvsp[(5) - (11)].real),(yyvsp[(7) - (11)].real),(yyvsp[(9) - (11)].integer),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1619,16 +1952,16 @@
+     {
+ 	  // for ellipse annulus
+ 	  aStatus = 1;
+-	  aCenter = Vector(yyvsp[-6].vector);
+-	  aAngle = yyvsp[-2].real;
+-	  aVector[0] = Vector(yyvsp[-4].vector);
++	  aCenter = Vector((yyvsp[(3) - (9)].vector));
++	  aAngle = (yyvsp[(7) - (9)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
+ 	  aNum = 1;
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createEllipseCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++	  FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+     break;
+@@ -1637,7 +1970,7 @@
+ #line 348 "prosparser.Y"
+     {	
+ 	  aStatus = 2;
+-	  aVector[aNum++] = Vector(yyvsp[-13].vector);
++	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+@@ -1646,25 +1979,25 @@
+     {
+ 	  // for box annulus
+ 	  aStatus = 3;
+-	  aCenter = Vector(yyvsp[-6].vector);
+-	  aAngle = yyvsp[-2].real;
+-	  aVector[0] = Vector(yyvsp[-4].vector);
++	  aCenter = Vector((yyvsp[(3) - (9)].vector));
++	  aAngle = (yyvsp[(7) - (9)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
+ 	  aNum = 1;
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createBoxCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++	  FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+     break;
+ 
+   case 71:
+ #line 370 "prosparser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1672,13 +2005,13 @@
+ #line 376 "prosparser.Y"
+     {	
+ 	  aStatus = 4;
+-	  aVector[aNum++] = Vector(yyvsp[-13].vector);
++	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+   case 73:
+ #line 382 "prosparser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1695,12 +2028,12 @@
+ 
+   case 78:
+ #line 394 "prosparser.Y"
+-    {polylist.append(new Vertex(yyvsp[0].vector));;}
++    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
+     break;
+ 
+   case 81:
+ #line 401 "prosparser.Y"
+-    {aAnnuli[aNum++] = yyvsp[0].real;;}
++    {aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 82:
+@@ -1749,19 +2082,18 @@
+ 
+   case 90:
+ #line 441 "prosparser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);;}
++    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);;}
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 2091 "prosparser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 1760 "prosparser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -1790,99 +2122,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -1892,15 +2190,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -1929,9 +2229,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -1939,11 +2240,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -1963,21 +2265,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/fitsdata.C
++++ saods9-4.0b7/saotk/frame/fitsdata.C
+@@ -5,7 +5,7 @@
+ #include <stdlib.h>
+ #include <limits.h>
+ #include <float.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <math.h>
+ 
+ #include "fitsdata.h"
+--- saods9-4.0b7.orig/saotk/frame/tnglex.C
++++ saods9-4.0b7/saotk/frame/tnglex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/tnglex.C,v 1.76 2005/08/11 21:32:52 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -570,7 +574,7 @@
+ #define DISCARD 1
+ 
+ /* rules */
+-#line 574 "tnglex.C"
++#line 578 "tnglex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -694,13 +698,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 30 "tnglex.L"
+ 
+ 
+-#line 704 "tnglex.C"
++#line 708 "tnglex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -1081,7 +1085,7 @@
+ #line 145 "tnglex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 1085 "tnglex.C"
++#line 1089 "tnglex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -1597,6 +1601,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/saoparser.Y
++++ saods9-4.0b7/saotk/frame/saoparser.Y
+@@ -12,8 +12,8 @@
+ #define DISCARD_(x) {yyclearin; saoDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/parser.C
++++ saods9-4.0b7/saotk/frame/parser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse frparse
+ #define yylex   frlex
+ #define yyerror frerror
+@@ -365,6 +377,7 @@
+      ZOOM_ = 558
+    };
+ #endif
++/* Tokens.  */
+ #define REAL 258
+ #define INT 259
+ #define STRING 260
+@@ -682,8 +695,8 @@
+ #define FITSPTR (FRB->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "frame.h"
+@@ -734,18 +747,25 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 54 "parser.Y"
+-typedef union YYSTYPE {
++{
+   char chr;
+   char str[2048];
+   void* ptr;
+   int integer;
+   double real;
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 749 "parser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 768 "parser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -756,56 +776,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 761 "parser.C"
++/* Line 216 of yacc.c.  */
++#line 781 "parser.C"
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++#endif
++
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
++
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
++# endif
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -815,24 +950,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -850,39 +985,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
++    while (YYID (0))
+ 
+ #endif
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+-#endif
+-
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  290
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   4160
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  308
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  143
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  926
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  2089
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   558
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned short yytranslate[] =
++static const yytype_uint16 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -945,7 +1074,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned short yyprhs[] =
++static const yytype_uint16 yyprhs[] =
+ {
+        0,     0,     3,     6,     9,    13,    15,    17,    20,    23,
+       26,    29,    32,    35,    38,    41,    44,    47,    50,    52,
+@@ -1042,8 +1171,8 @@
+     3426,  3433,  3436,  3438,  3441,  3444,  3451
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const short yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int16 yyrhs[] =
+ {
+      309,     0,    -1,    82,   311,    -1,    39,   330,    -1,    38,
+       60,     5,    -1,    52,    -1,    56,    -1,    58,   334,    -1,
+@@ -1394,7 +1523,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,   399,   399,   401,   402,   403,   404,   405,   406,   407,
+      409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
+@@ -1492,9 +1621,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "REAL", "INT", "STRING", "POINTER",
+@@ -1577,7 +1706,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -1614,7 +1743,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned short yyr1[] =
++static const yytype_uint16 yyr1[] =
+ {
+        0,   308,   309,   309,   309,   309,   309,   309,   309,   309,
+      309,   309,   309,   309,   309,   309,   309,   309,   309,   309,
+@@ -1712,7 +1841,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     2,     2,     3,     1,     1,     2,     2,     2,
+        2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+@@ -1812,7 +1941,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned short yydefact[] =
++static const yytype_uint16 yydefact[] =
+ {
+        0,     0,     0,     5,     6,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,    18,     0,     0,
+@@ -2025,8 +2154,8 @@
+      830,   826,   165,   547,   582,   778,   778,   683,   680
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const short yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int16 yydefgoto[] =
+ {
+       -1,    42,  1059,   141,   127,   444,   955,  1724,  1725,   634,
+      635,  1537,  1536,   403,   129,   404,   354,   948,    72,  1022,
+@@ -2048,7 +2177,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -1930
+-static const short yypact[] =
++static const yytype_int16 yypact[] =
+ {
+     3663,    44,    98, -1930, -1930,   534,   468,   630,   444,   151,
+       40,   103,   529,   -67,  3827,   317,   927, -1930,    40,   727,
+@@ -2262,7 +2391,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const short yypgoto[] =
++static const yytype_int16 yypgoto[] =
+ {
+    -1930, -1930,  1448, -1930,   -10,  -177, -1930, -1385,  -729,   964,
+     -348, -1930, -1930,    -7,  -238,    14,  -237,  -371,   349,  -704,
+@@ -2286,7 +2415,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -829
+-static const short yytable[] =
++static const yytype_int16 yytable[] =
+ {
+      132,   142,   128,   844,  1060,   540,   638,   455,   205,   543,
+     1034,   223,   848,  1037,   819,   822,  1139,   248,   423,   242,
+@@ -2707,7 +2836,7 @@
+     1043
+ };
+ 
+-static const short yycheck[] =
++static const yytype_int16 yycheck[] =
+ {
+       10,    11,     9,   517,   733,   242,   354,   184,    18,   247,
+      714,    21,     5,   717,   512,   513,     5,    27,     6,    26,
+@@ -3130,7 +3259,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned short yystos[] =
++static const yytype_uint16 yystos[] =
+ {
+        0,    38,    39,    52,    56,    58,    59,    61,    67,    74,
+       81,    82,    98,   107,   117,   121,   124,   127,   129,   136,
+@@ -3343,22 +3472,6 @@
+      423,   312,     5,   324,   324,   315,   315,   414,   414
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -3384,30 +3497,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -3428,42 +3574,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -3472,45 +3672,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -3525,13 +3732,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -3541,45 +3744,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -3589,70 +3794,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
+ 
+-
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
++
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
++
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -3660,13 +3987,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -3675,10 +4002,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -3691,14 +4018,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -3709,13 +4040,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -3726,18 +4063,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -3746,9 +4083,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -3772,8 +4109,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -3786,18 +4122,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -3808,21 +4144,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -3853,19 +4189,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -3880,7 +4214,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -3900,22 +4234,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -3952,7 +4285,7 @@
+     {
+         case 4:
+ #line 402 "parser.Y"
+-    {FRB->bgColorCmd(yyvsp[0].str);;}
++    {FRB->bgColorCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 5:
+@@ -3967,12 +4300,12 @@
+ 
+   case 9:
+ #line 408 "parser.Y"
+-    {FRB->colorScaleCmd((FrScale::ColorScaleType)yyvsp[0].integer);;}
++    {FRB->colorScaleCmd((FrScale::ColorScaleType)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 12:
+ #line 411 "parser.Y"
+-    {FRB->DATASECCmd(yyvsp[0].integer);;}
++    {FRB->DATASECCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 18:
+@@ -3982,17 +4315,17 @@
+ 
+   case 19:
+ #line 418 "parser.Y"
+-    {FRB->highliteCmd(yyvsp[0].integer);;}
++    {FRB->highliteCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 24:
+ #line 423 "parser.Y"
+-    {FRB->mosaicFastCmd(yyvsp[0].integer);;}
++    {FRB->mosaicFastCmd((yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 25:
+ #line 424 "parser.Y"
+-    {FRB->nanColorCmd(yyvsp[0].str);;}
++    {FRB->nanColorCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 30:
+@@ -4017,182 +4350,182 @@
+ 
+   case 43:
+ #line 444 "parser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 44:
+ #line 445 "parser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 45:
+ #line 448 "parser.Y"
+-    {yydebug=yyvsp[0].integer;;}
++    {yydebug=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 46:
+ #line 449 "parser.Y"
+-    {DebugAST=yyvsp[0].integer;;}
++    {DebugAST=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 47:
+ #line 450 "parser.Y"
+-    {DebugMosaic=yyvsp[0].integer;;}
++    {DebugMosaic=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 48:
+ #line 451 "parser.Y"
+-    {yydebug=yyvsp[0].integer;;}
++    {yydebug=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 49:
+ #line 452 "parser.Y"
+-    {DebugPerf=yyvsp[0].integer;;}
++    {DebugPerf=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 50:
+ #line 453 "parser.Y"
+-    {DebugWCS=yyvsp[0].integer;;}
++    {DebugWCS=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 51:
+ #line 454 "parser.Y"
+-    {DebugBin=yyvsp[0].integer;;}
++    {DebugBin=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 52:
+ #line 455 "parser.Y"
+-    {DebugGZ=yyvsp[0].integer;;}
++    {DebugGZ=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 53:
+ #line 456 "parser.Y"
+-    {DebugRGB=yyvsp[0].integer;;}
++    {DebugRGB=(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 54:
+ #line 459 "parser.Y"
+-    {yyval.integer=(yyvsp[0].integer ? 1 : 0);;}
++    {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
+     break;
+ 
+   case 55:
+ #line 461 "parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 56:
+ #line 462 "parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 57:
+ #line 463 "parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 58:
+ #line 464 "parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 59:
+ #line 466 "parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 60:
+ #line 467 "parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 61:
+ #line 468 "parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 62:
+ #line 469 "parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 63:
+ #line 472 "parser.Y"
+-    {yyval.integer = FrameBase::DEFAULT;;}
++    {(yyval.integer) = FrameBase::DEFAULT;;}
+     break;
+ 
+   case 64:
+ #line 473 "parser.Y"
+-    {yyval.integer = FrameBase::DEFAULT;;}
++    {(yyval.integer) = FrameBase::DEFAULT;;}
+     break;
+ 
+   case 65:
+ #line 474 "parser.Y"
+-    {yyval.integer = FrameBase::FIXED;;}
++    {(yyval.integer) = FrameBase::FIXED;;}
+     break;
+ 
+   case 66:
+ #line 475 "parser.Y"
+-    {yyval.integer = FrameBase::SCIENTIFIC;;}
++    {(yyval.integer) = FrameBase::SCIENTIFIC;;}
+     break;
+ 
+   case 67:
+ #line 476 "parser.Y"
+-    {yyval.integer = FrameBase::INTEGER;;}
++    {(yyval.integer) = FrameBase::INTEGER;;}
+     break;
+ 
+   case 68:
+ #line 479 "parser.Y"
+-    {yyval.integer = FrameBase::ROOTBASE;;}
++    {(yyval.integer) = FrameBase::ROOTBASE;;}
+     break;
+ 
+   case 69:
+ #line 480 "parser.Y"
+-    {yyval.integer = FrameBase::ROOTBASE;;}
++    {(yyval.integer) = FrameBase::ROOTBASE;;}
+     break;
+ 
+   case 70:
+ #line 481 "parser.Y"
+-    {yyval.integer = FrameBase::FULLBASE;;}
++    {(yyval.integer) = FrameBase::FULLBASE;;}
+     break;
+ 
+   case 71:
+ #line 482 "parser.Y"
+-    {yyval.integer = FrameBase::ROOT;;}
++    {(yyval.integer) = FrameBase::ROOT;;}
+     break;
+ 
+   case 72:
+ #line 483 "parser.Y"
+-    {yyval.integer = FrameBase::FULL;;}
++    {(yyval.integer) = FrameBase::FULL;;}
+     break;
+ 
+   case 73:
+ #line 486 "parser.Y"
+-    {yyval.real = 0;;}
++    {(yyval.real) = 0;;}
+     break;
+ 
+   case 74:
+ #line 487 "parser.Y"
+-    {yyval.real = yyvsp[0].real;;}
++    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 75:
+ #line 490 "parser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 76:
+ #line 491 "parser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 77:
+ #line 492 "parser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 78:
+ #line 495 "parser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 79:
+@@ -4200,13 +4533,13 @@
+     {
+ 	  Vector r;
+ 	  if (currentSky == GALACTIC || currentSky == ECLIPTIC) 
+-	    r = Vector(yyvsp[-1].real,yyvsp[0].real);
++	    r = Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));
+ 	  else
+-	    r = Vector(yyvsp[-1].real*360./24.,yyvsp[0].real);
++	    r = Vector((yyvsp[(1) - (2)].real)*360./24.,(yyvsp[(2) - (2)].real));
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -4218,12 +4551,12 @@
+   case 81:
+ #line 511 "parser.Y"
+     {
+-	  Vector r = Vector(hmsToDegree(frsign2,yyvsp[-6].integer,yyvsp[-5].integer,yyvsp[-4].real), 
+-	    dmsToDegree(frsign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real));
++	  Vector r = Vector(hmsToDegree(frsign2,(yyvsp[(1) - (7)].integer),(yyvsp[(2) - (7)].integer),(yyvsp[(3) - (7)].real)), 
++	    dmsToDegree(frsign,(yyvsp[(5) - (7)].integer),(yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -4235,377 +4568,377 @@
+   case 83:
+ #line 520 "parser.Y"
+     {
+-	  Vector r = Vector(dmsToDegree(frsign2,yyvsp[-6].integer,yyvsp[-5].real,yyvsp[-4].real),
+-	    dmsToDegree(frsign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real));
++	  Vector r = Vector(dmsToDegree(frsign2,(yyvsp[(1) - (7)].integer),(yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),
++	    dmsToDegree(frsign,(yyvsp[(5) - (7)].integer),(yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 84:
+ #line 529 "parser.Y"
+     {
+-	  yyval.vector[0] = yyvsp[-1].real;
+-	  yyval.vector[1] = yyvsp[0].real;
+-	  yyval.vector[2] = 1;
++	  (yyval.vector)[0] = (yyvsp[(1) - (2)].real);
++	  (yyval.vector)[1] = (yyvsp[(2) - (2)].real);
++	  (yyval.vector)[2] = 1;
+ 	;}
+     break;
+ 
+   case 85:
+ #line 536 "parser.Y"
+-    {yyval.integer = currentCoord = IMAGE;;}
++    {(yyval.integer) = currentCoord = IMAGE;;}
+     break;
+ 
+   case 86:
+ #line 537 "parser.Y"
+-    {yyval.integer = currentCoord = PHYSICAL;;}
++    {(yyval.integer) = currentCoord = PHYSICAL;;}
+     break;
+ 
+   case 87:
+ #line 538 "parser.Y"
+-    {yyval.integer = currentCoord = DETECTOR;;}
++    {(yyval.integer) = currentCoord = DETECTOR;;}
+     break;
+ 
+   case 88:
+ #line 539 "parser.Y"
+-    {yyval.integer = currentCoord = AMPLIFIER;;}
++    {(yyval.integer) = currentCoord = AMPLIFIER;;}
+     break;
+ 
+   case 89:
+ #line 540 "parser.Y"
+-    {yyval.integer = (CoordSystem)yyvsp[0].integer;;}
++    {(yyval.integer) = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 90:
+ #line 543 "parser.Y"
+-    {yyval.integer = currentCoord = WCS;;}
++    {(yyval.integer) = currentCoord = WCS;;}
+     break;
+ 
+   case 91:
+ #line 544 "parser.Y"
+-    {yyval.integer = currentCoord = WCSA;;}
++    {(yyval.integer) = currentCoord = WCSA;;}
+     break;
+ 
+   case 92:
+ #line 545 "parser.Y"
+-    {yyval.integer = currentCoord = WCSB;;}
++    {(yyval.integer) = currentCoord = WCSB;;}
+     break;
+ 
+   case 93:
+ #line 546 "parser.Y"
+-    {yyval.integer = currentCoord = WCSC;;}
++    {(yyval.integer) = currentCoord = WCSC;;}
+     break;
+ 
+   case 94:
+ #line 547 "parser.Y"
+-    {yyval.integer = currentCoord = WCSD;;}
++    {(yyval.integer) = currentCoord = WCSD;;}
+     break;
+ 
+   case 95:
+ #line 548 "parser.Y"
+-    {yyval.integer = currentCoord = WCSE;;}
++    {(yyval.integer) = currentCoord = WCSE;;}
+     break;
+ 
+   case 96:
+ #line 549 "parser.Y"
+-    {yyval.integer = currentCoord = WCSF;;}
++    {(yyval.integer) = currentCoord = WCSF;;}
+     break;
+ 
+   case 97:
+ #line 550 "parser.Y"
+-    {yyval.integer = currentCoord = WCSG;;}
++    {(yyval.integer) = currentCoord = WCSG;;}
+     break;
+ 
+   case 98:
+ #line 551 "parser.Y"
+-    {yyval.integer = currentCoord = WCSH;;}
++    {(yyval.integer) = currentCoord = WCSH;;}
+     break;
+ 
+   case 99:
+ #line 552 "parser.Y"
+-    {yyval.integer = currentCoord = WCSI;;}
++    {(yyval.integer) = currentCoord = WCSI;;}
+     break;
+ 
+   case 100:
+ #line 553 "parser.Y"
+-    {yyval.integer = currentCoord = WCSJ;;}
++    {(yyval.integer) = currentCoord = WCSJ;;}
+     break;
+ 
+   case 101:
+ #line 554 "parser.Y"
+-    {yyval.integer = currentCoord = WCSK;;}
++    {(yyval.integer) = currentCoord = WCSK;;}
+     break;
+ 
+   case 102:
+ #line 555 "parser.Y"
+-    {yyval.integer = currentCoord = WCSL;;}
++    {(yyval.integer) = currentCoord = WCSL;;}
+     break;
+ 
+   case 103:
+ #line 556 "parser.Y"
+-    {yyval.integer = currentCoord = WCSM;;}
++    {(yyval.integer) = currentCoord = WCSM;;}
+     break;
+ 
+   case 104:
+ #line 557 "parser.Y"
+-    {yyval.integer = currentCoord = WCSN;;}
++    {(yyval.integer) = currentCoord = WCSN;;}
+     break;
+ 
+   case 105:
+ #line 558 "parser.Y"
+-    {yyval.integer = currentCoord = WCSO;;}
++    {(yyval.integer) = currentCoord = WCSO;;}
+     break;
+ 
+   case 106:
+ #line 559 "parser.Y"
+-    {yyval.integer = currentCoord = WCSP;;}
++    {(yyval.integer) = currentCoord = WCSP;;}
+     break;
+ 
+   case 107:
+ #line 560 "parser.Y"
+-    {yyval.integer = currentCoord = WCSQ;;}
++    {(yyval.integer) = currentCoord = WCSQ;;}
+     break;
+ 
+   case 108:
+ #line 561 "parser.Y"
+-    {yyval.integer = currentCoord = WCSR;;}
++    {(yyval.integer) = currentCoord = WCSR;;}
+     break;
+ 
+   case 109:
+ #line 562 "parser.Y"
+-    {yyval.integer = currentCoord = WCSS;;}
++    {(yyval.integer) = currentCoord = WCSS;;}
+     break;
+ 
+   case 110:
+ #line 563 "parser.Y"
+-    {yyval.integer = currentCoord = WCST;;}
++    {(yyval.integer) = currentCoord = WCST;;}
+     break;
+ 
+   case 111:
+ #line 564 "parser.Y"
+-    {yyval.integer = currentCoord = WCSU;;}
++    {(yyval.integer) = currentCoord = WCSU;;}
+     break;
+ 
+   case 112:
+ #line 565 "parser.Y"
+-    {yyval.integer = currentCoord = WCSV;;}
++    {(yyval.integer) = currentCoord = WCSV;;}
+     break;
+ 
+   case 113:
+ #line 566 "parser.Y"
+-    {yyval.integer = currentCoord = WCSW;;}
++    {(yyval.integer) = currentCoord = WCSW;;}
+     break;
+ 
+   case 114:
+ #line 567 "parser.Y"
+-    {yyval.integer = currentCoord = WCSX;;}
++    {(yyval.integer) = currentCoord = WCSX;;}
+     break;
+ 
+   case 115:
+ #line 568 "parser.Y"
+-    {yyval.integer = currentCoord = WCSY;;}
++    {(yyval.integer) = currentCoord = WCSY;;}
+     break;
+ 
+   case 116:
+ #line 569 "parser.Y"
+-    {yyval.integer = currentCoord = WCSZ;;}
++    {(yyval.integer) = currentCoord = WCSZ;;}
+     break;
+ 
+   case 117:
+ #line 572 "parser.Y"
+-    {yyval.integer = CANVAS;;}
++    {(yyval.integer) = CANVAS;;}
+     break;
+ 
+   case 118:
+ #line 573 "parser.Y"
+-    {yyval.integer = PANNER;;}
++    {(yyval.integer) = PANNER;;}
+     break;
+ 
+   case 119:
+ #line 576 "parser.Y"
+-    {yyval.integer = currentSky = FK5;;}
++    {(yyval.integer) = currentSky = FK5;;}
+     break;
+ 
+   case 120:
+ #line 577 "parser.Y"
+-    {yyval.integer = currentSky = FK4;;}
++    {(yyval.integer) = currentSky = FK4;;}
+     break;
+ 
+   case 121:
+ #line 578 "parser.Y"
+-    {yyval.integer = currentSky = FK4;;}
++    {(yyval.integer) = currentSky = FK4;;}
+     break;
+ 
+   case 122:
+ #line 579 "parser.Y"
+-    {yyval.integer = currentSky = FK5;;}
++    {(yyval.integer) = currentSky = FK5;;}
+     break;
+ 
+   case 123:
+ #line 580 "parser.Y"
+-    {yyval.integer = currentSky = FK5;;}
++    {(yyval.integer) = currentSky = FK5;;}
+     break;
+ 
+   case 124:
+ #line 581 "parser.Y"
+-    {yyval.integer = currentSky = ICRS;;}
++    {(yyval.integer) = currentSky = ICRS;;}
+     break;
+ 
+   case 125:
+ #line 582 "parser.Y"
+-    {yyval.integer = currentSky = GALACTIC;;}
++    {(yyval.integer) = currentSky = GALACTIC;;}
+     break;
+ 
+   case 126:
+ #line 583 "parser.Y"
+-    {yyval.integer = currentSky = ECLIPTIC;;}
++    {(yyval.integer) = currentSky = ECLIPTIC;;}
+     break;
+ 
+   case 127:
+ #line 586 "parser.Y"
+-    {yyval.integer=DEGREES;;}
++    {(yyval.integer)=DEGREES;;}
+     break;
+ 
+   case 128:
+ #line 587 "parser.Y"
+-    {yyval.integer=DEGREES;;}
++    {(yyval.integer)=DEGREES;;}
+     break;
+ 
+   case 129:
+ #line 588 "parser.Y"
+-    {yyval.integer=SEXAGESIMAL;;}
++    {(yyval.integer)=SEXAGESIMAL;;}
+     break;
+ 
+   case 130:
+ #line 589 "parser.Y"
+-    {yyval.integer=HMS;;}
++    {(yyval.integer)=HMS;;}
+     break;
+ 
+   case 131:
+ #line 590 "parser.Y"
+-    {yyval.integer=ARCMIN;;}
++    {(yyval.integer)=ARCMIN;;}
+     break;
+ 
+   case 132:
+ #line 591 "parser.Y"
+-    {yyval.integer=ARCSEC;;}
++    {(yyval.integer)=ARCSEC;;}
+     break;
+ 
+   case 133:
+ #line 594 "parser.Y"
+-    {yyval.integer = FrScale::LINEARSCALE;;}
++    {(yyval.integer) = FrScale::LINEARSCALE;;}
+     break;
+ 
+   case 134:
+ #line 595 "parser.Y"
+-    {yyval.integer = FrScale::LOGSCALE;;}
++    {(yyval.integer) = FrScale::LOGSCALE;;}
+     break;
+ 
+   case 135:
+ #line 596 "parser.Y"
+-    {yyval.integer = FrScale::SQUAREDSCALE;;}
++    {(yyval.integer) = FrScale::SQUAREDSCALE;;}
+     break;
+ 
+   case 136:
+ #line 597 "parser.Y"
+-    {yyval.integer = FrScale::SQRTSCALE;;}
++    {(yyval.integer) = FrScale::SQRTSCALE;;}
+     break;
+ 
+   case 137:
+ #line 598 "parser.Y"
+-    {yyval.integer = FrScale::HISTEQUSCALE;;}
++    {(yyval.integer) = FrScale::HISTEQUSCALE;;}
+     break;
+ 
+   case 138:
+ #line 601 "parser.Y"
+-    {yyval.integer = FrameBase::SHMID;;}
++    {(yyval.integer) = FrameBase::SHMID;;}
+     break;
+ 
+   case 139:
+ #line 602 "parser.Y"
+-    {yyval.integer = FrameBase::SHMID;;}
++    {(yyval.integer) = FrameBase::SHMID;;}
+     break;
+ 
+   case 140:
+ #line 603 "parser.Y"
+-    {yyval.integer = FrameBase::KEY;;}
++    {(yyval.integer) = FrameBase::KEY;;}
+     break;
+ 
+   case 141:
+ #line 606 "parser.Y"
+-    {yyval.integer = FrameBase::LOADALL;;}
++    {(yyval.integer) = FrameBase::LOADALL;;}
+     break;
+ 
+   case 142:
+ #line 607 "parser.Y"
+-    {yyval.integer = FrameBase::LOADALL;;}
++    {(yyval.integer) = FrameBase::LOADALL;;}
+     break;
+ 
+   case 143:
+ #line 608 "parser.Y"
+-    {yyval.integer = FrameBase::INCR;;}
++    {(yyval.integer) = FrameBase::INCR;;}
+     break;
+ 
+   case 144:
+ #line 611 "parser.Y"
+-    {yyval.integer = FrameBase::NOCOMPRESS;;}
++    {(yyval.integer) = FrameBase::NOCOMPRESS;;}
+     break;
+ 
+   case 145:
+ #line 612 "parser.Y"
+-    {yyval.integer = FrameBase::NOCOMPRESS;;}
++    {(yyval.integer) = FrameBase::NOCOMPRESS;;}
+     break;
+ 
+   case 146:
+ #line 613 "parser.Y"
+-    {yyval.integer = FrameBase::GZ;;}
++    {(yyval.integer) = FrameBase::GZ;;}
+     break;
+ 
+   case 147:
+ #line 616 "parser.Y"
+-    {FRB->binAboutCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->binAboutCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 148:
+ #line 617 "parser.Y"
+-    {FRB->binColsCmd(yyvsp[-2].str,yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->binColsCmd((yyvsp[(2) - (4)].str),(yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 149:
+ #line 618 "parser.Y"
+-    {FRB->binDepthCmd(yyvsp[0].integer);;}
++    {FRB->binDepthCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 152:
+ #line 621 "parser.Y"
+-    {FRB->binBufferSizeCmd(yyvsp[0].integer);;}
++    {FRB->binBufferSizeCmd((yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 154:
+ #line 623 "parser.Y"
+-    {FRB->binFilterCmd(yyvsp[0].str);;}
++    {FRB->binFilterCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 155:
+ #line 626 "parser.Y"
+-    {FRB->binFactorCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->binFactorCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 156:
+ #line 628 "parser.Y"
+-    {FRB->binFactorAboutCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->binFactorAboutCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)), Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
+     break;
+ 
+   case 157:
+ #line 629 "parser.Y"
+-    {FRB->binFactorToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->binFactorToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 158:
+ #line 631 "parser.Y"
+-    {FRB->binFactorToAboutCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->binFactorToAboutCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 159:
+@@ -4625,48 +4958,48 @@
+ 
+   case 162:
+ #line 640 "parser.Y"
+-    {FRB->binCmd(Vector(yyvsp[-6].real,yyvsp[-5].real), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
++    {FRB->binCmd(Vector((yyvsp[(1) - (7)].real),(yyvsp[(2) - (7)].real)), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), (yyvsp[(7) - (7)].str));;}
+     break;
+ 
+   case 163:
+ #line 643 "parser.Y"
+-    {FRB->binCmd(Vector(yyvsp[-10].real,yyvsp[-9].real), yyvsp[-8].integer, Vector(yyvsp[-7].real,yyvsp[-6].real), yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
++    {FRB->binCmd(Vector((yyvsp[(1) - (11)].real),(yyvsp[(2) - (11)].real)), (yyvsp[(3) - (11)].integer), Vector((yyvsp[(4) - (11)].real),(yyvsp[(5) - (11)].real)), (yyvsp[(8) - (11)].str), (yyvsp[(9) - (11)].str), (yyvsp[(10) - (11)].str), (yyvsp[(11) - (11)].str));;}
+     break;
+ 
+   case 164:
+ #line 645 "parser.Y"
+-    {FRB->binCmd(Vector(yyvsp[-7].real,yyvsp[-6].real), Vector(yyvsp[-4].real,yyvsp[-3].real), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
++    {FRB->binCmd(Vector((yyvsp[(1) - (8)].real),(yyvsp[(2) - (8)].real)), Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), (yyvsp[(6) - (8)].str), (yyvsp[(7) - (8)].str), (yyvsp[(8) - (8)].str));;}
+     break;
+ 
+   case 165:
+ #line 648 "parser.Y"
+-    {FRB->binCmd(Vector(yyvsp[-11].real,yyvsp[-10].real), yyvsp[-9].integer, Vector(yyvsp[-8].real,yyvsp[-7].real), Vector(yyvsp[-5].real,yyvsp[-4].real), 
+-	    yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
++    {FRB->binCmd(Vector((yyvsp[(1) - (12)].real),(yyvsp[(2) - (12)].real)), (yyvsp[(3) - (12)].integer), Vector((yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real)), Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), 
++	    (yyvsp[(9) - (12)].str), (yyvsp[(10) - (12)].str), (yyvsp[(11) - (12)].str), (yyvsp[(12) - (12)].str));;}
+     break;
+ 
+   case 170:
+ #line 656 "parser.Y"
+-    {FRB->clipZScaleParamCmd(yyvsp[-2].real,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->clipZScaleParamCmd((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 171:
+ #line 657 "parser.Y"
+-    {FRB->clipPreserveCmd(yyvsp[0].integer);;}
++    {FRB->clipPreserveCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 172:
+ #line 660 "parser.Y"
+-    {FRB->clipUserCmd(yyvsp[-1].real,yyvsp[0].real);;}
++    {FRB->clipUserCmd((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));;}
+     break;
+ 
+   case 173:
+ #line 661 "parser.Y"
+-    {FRB->clipUserLowCmd(yyvsp[0].real);;}
++    {FRB->clipUserLowCmd((yyvsp[(2) - (2)].real));;}
+     break;
+ 
+   case 174:
+ #line 662 "parser.Y"
+-    {FRB->clipUserHighCmd(yyvsp[0].real);;}
++    {FRB->clipUserHighCmd((yyvsp[(2) - (2)].real));;}
+     break;
+ 
+   case 175:
+@@ -4681,7 +5014,7 @@
+ 
+   case 177:
+ #line 669 "parser.Y"
+-    {FRB->clipModeCmd(yyvsp[0].real);;}
++    {FRB->clipModeCmd((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 178:
+@@ -4706,7 +5039,7 @@
+ 
+   case 183:
+ #line 677 "parser.Y"
+-    {FRB->clipMinMaxParamCmd(yyvsp[0].integer);;}
++    {FRB->clipMinMaxParamCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 184:
+@@ -4736,40 +5069,40 @@
+ 
+   case 189:
+ #line 688 "parser.Y"
+-    {FR->colormapCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr, 
+-	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
++    {FR->colormapCmd((yyvsp[(1) - (7)].integer), (yyvsp[(2) - (7)].real), (yyvsp[(3) - (7)].real), (yyvsp[(4) - (7)].integer), (unsigned short*)(yyvsp[(5) - (7)].ptr), 
++	    (unsigned char*)(yyvsp[(6) - (7)].ptr), (yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 190:
+ #line 691 "parser.Y"
+-    {FRRGB->colormapCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
++    {FRRGB->colormapCmd((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real),(yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real),(yyvsp[(6) - (9)].real),(yyvsp[(7) - (9)].real),(unsigned char*)(yyvsp[(8) - (9)].ptr),(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 191:
+ #line 693 "parser.Y"
+-    {FRB->colormapAreaCmd(yyvsp[-1].integer,(FrameBase::ColormapMode)yyvsp[0].integer);;}
++    {FRB->colormapAreaCmd((yyvsp[(2) - (3)].integer),(FrameBase::ColormapMode)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 193:
+ #line 696 "parser.Y"
+-    {FR->colormapMotionCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr,
+-	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
++    {FR->colormapMotionCmd((yyvsp[(2) - (8)].integer), (yyvsp[(3) - (8)].real), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].integer), (unsigned short*)(yyvsp[(6) - (8)].ptr),
++	    (unsigned char*)(yyvsp[(7) - (8)].ptr), (yyvsp[(8) - (8)].integer));;}
+     break;
+ 
+   case 194:
+ #line 700 "parser.Y"
+-    {FRRGB->colormapMotionCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
++    {FRRGB->colormapMotionCmd((yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
+     break;
+ 
+   case 195:
+ #line 702 "parser.Y"
+-    {FR->colormapEndCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr,
+-	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
++    {FR->colormapEndCmd((yyvsp[(2) - (8)].integer), (yyvsp[(3) - (8)].real), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].integer), (unsigned short*)(yyvsp[(6) - (8)].ptr),
++	    (unsigned char*)(yyvsp[(7) - (8)].ptr), (yyvsp[(8) - (8)].integer));;}
+     break;
+ 
+   case 196:
+ #line 705 "parser.Y"
+-    {FRRGB->colormapEndCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
++    {FRRGB->colormapEndCmd((yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
+     break;
+ 
+   case 197:
+@@ -4779,27 +5112,27 @@
+ 
+   case 198:
+ #line 709 "parser.Y"
+-    {FRB->colormapBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->colormapBeginCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 199:
+ #line 712 "parser.Y"
+-    {yyval.integer = FrameBase::CENTER;;}
++    {(yyval.integer) = FrameBase::CENTER;;}
+     break;
+ 
+   case 200:
+ #line 713 "parser.Y"
+-    {yyval.integer = FrameBase::CLICK;;}
++    {(yyval.integer) = FrameBase::CLICK;;}
+     break;
+ 
+   case 201:
+ #line 716 "parser.Y"
+-    {FRB->contourSetColorCmd(yyvsp[0].str);;}
++    {FRB->contourSetColorCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 202:
+ #line 718 "parser.Y"
+-    {FRB->contourCopyCmd((CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->contourCopyCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFrame)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 204:
+@@ -4814,32 +5147,32 @@
+ 
+   case 206:
+ #line 723 "parser.Y"
+-    {FRB->contourLoadCmd(yyvsp[-4].str, yyvsp[-3].integer, yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->contourLoadCmd((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].str), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFrame)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 207:
+ #line 725 "parser.Y"
+-    {FRB->contourPasteCmd(yyvsp[-4].str, yyvsp[-3].integer, yyvsp[-2].ptr, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->contourPasteCmd((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].ptr), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFrame)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 208:
+ #line 727 "parser.Y"
+-    {FRB->contourSaveCmd(yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->contourSaveCmd((yyvsp[(2) - (4)].str), (CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 209:
+ #line 728 "parser.Y"
+-    {FRB->contourSetLineWidthCmd(yyvsp[0].integer);;}
++    {FRB->contourSetLineWidthCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 210:
+ #line 732 "parser.Y"
+-    {FRB->contourCreateCmd(yyvsp[-4].str,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].integer);;}
++    {FRB->contourCreateCmd((yyvsp[(1) - (5)].str),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 211:
+ #line 734 "parser.Y"
+-    {FRB->contourCreateCmd(yyvsp[-4].str,yyvsp[-3].integer,yyvsp[-2].real,yyvsp[-1].integer,yyvsp[0].str);;}
++    {FRB->contourCreateCmd((yyvsp[(1) - (5)].str),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 212:
+@@ -4850,62 +5183,62 @@
+ 
+   case 213:
+ #line 740 "parser.Y"
+-    {yyval.integer = FVContour::SMOOTH;;}
++    {(yyval.integer) = FVContour::SMOOTH;;}
+     break;
+ 
+   case 214:
+ #line 741 "parser.Y"
+-    {yyval.integer = FVContour::BLOCK;;}
++    {(yyval.integer) = FVContour::BLOCK;;}
+     break;
+ 
+   case 215:
+ #line 745 "parser.Y"
+-    {FRB->crosshairBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->crosshairBeginCmd(Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)), (InternalSystem)(yyvsp[(3) - (5)].integer));;}
+     break;
+ 
+   case 216:
+ #line 747 "parser.Y"
+-    {FRB->crosshairMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->crosshairMotionCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer));;}
+     break;
+ 
+   case 217:
+ #line 749 "parser.Y"
+-    {FRB->crosshairCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->crosshairCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 218:
+ #line 751 "parser.Y"
+-    {FRB->crosshairBeginCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-1].integer);;}
++    {FRB->crosshairBeginCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(3) - (4)].integer));;}
+     break;
+ 
+   case 219:
+ #line 753 "parser.Y"
+-    {FRB->crosshairMotionCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-1].integer);;}
++    {FRB->crosshairMotionCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(2) - (3)].integer));;}
+     break;
+ 
+   case 220:
+ #line 755 "parser.Y"
+-    {FRB->crosshairCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
++    {FRB->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+     break;
+ 
+   case 221:
+ #line 756 "parser.Y"
+-    {FRB->crosshairCmd(yyvsp[0].integer);;}
++    {FRB->crosshairCmd((yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 222:
+ #line 757 "parser.Y"
+-    {FRB->crosshairWarpCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->crosshairWarpCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 224:
+ #line 761 "parser.Y"
+-    {FRB->exportJPEGCmd(yyvsp[-1].str,yyvsp[0].real);;}
++    {FRB->exportJPEGCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].real));;}
+     break;
+ 
+   case 228:
+ #line 767 "parser.Y"
+-    {FRB->fitsyHasExtCmd(yyvsp[0].str);;}
++    {FRB->fitsyHasExtCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 229:
+@@ -4940,12 +5273,12 @@
+ 
+   case 244:
+ #line 785 "parser.Y"
+-    {FRB->getHistogramCmd(yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->getHistogramCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 245:
+ #line 787 "parser.Y"
+-    {FRB->getHorzCutCmd(yyvsp[-4].str,yyvsp[-3].str,Vector(yyvsp[-2].real,yyvsp[-1].real),(InternalSystem)yyvsp[0].integer);;}
++    {FRB->getHorzCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 248:
+@@ -4965,7 +5298,7 @@
+ 
+   case 253:
+ #line 796 "parser.Y"
+-    {FRB->getPixelTableCmd(Vector(yyvsp[-3].real,yyvsp[-2].real), (InternalSystem)yyvsp[-4].integer, yyvsp[-1].integer, yyvsp[0].str);;}
++    {FRB->getPixelTableCmd(Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)), (InternalSystem)(yyvsp[(3) - (7)].integer), (yyvsp[(6) - (7)].integer), (yyvsp[(7) - (7)].str));;}
+     break;
+ 
+   case 257:
+@@ -4975,12 +5308,12 @@
+ 
+   case 258:
+ #line 802 "parser.Y"
+-    {FRB->getValueCmd(Vector(yyvsp[-1].real,yyvsp[0].real),(InternalSystem)yyvsp[-2].integer);;}
++    {FRB->getValueCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(InternalSystem)(yyvsp[(2) - (4)].integer));;}
+     break;
+ 
+   case 259:
+ #line 804 "parser.Y"
+-    {FRB->getVertCutCmd(yyvsp[-4].str,yyvsp[-3].str,Vector(yyvsp[-2].real,yyvsp[-1].real),(InternalSystem)yyvsp[0].integer);;}
++    {FRB->getVertCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 261:
+@@ -5025,7 +5358,7 @@
+ 
+   case 270:
+ #line 817 "parser.Y"
+-    {FRB->getBinColsMinMaxCmd(yyvsp[0].str);;}
++    {FRB->getBinColsMinMaxCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 271:
+@@ -5065,7 +5398,7 @@
+ 
+   case 280:
+ #line 831 "parser.Y"
+-    {FRB->getClipCmd(yyvsp[0].real);;}
++    {FRB->getClipCmd((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 281:
+@@ -5100,7 +5433,7 @@
+ 
+   case 287:
+ #line 843 "parser.Y"
+-    {FRB->getContourCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->getContourCmd((CoordSystem)(yyvsp[(1) - (2)].integer),(SkyFrame)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 288:
+@@ -5125,24 +5458,24 @@
+ 
+   case 293:
+ #line 852 "parser.Y"
+-    {FRB->getContourLevelCmd(yyvsp[-3].integer,yyvsp[-2].real,yyvsp[-1].real,(FrScale::ColorScaleType)yyvsp[0].integer);;}
++    {FRB->getContourLevelCmd((yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real),(FrScale::ColorScaleType)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 294:
+ #line 856 "parser.Y"
+-    {FRB->getCoordCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), (InternalSystem)yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
+-	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getCoordCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (InternalSystem)(yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
++	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 295:
+ #line 860 "parser.Y"
+-    {FRB->getCrosshairCmd((InternalSystem)yyvsp[0].integer);;}
++    {FRB->getCrosshairCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 296:
+ #line 862 "parser.Y"
+-    {FRB->getCrosshairCmd((CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer,
+-	    (FrameBase::Precision)yyvsp[0].integer);}
++    {FRB->getCrosshairCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
++	    (FrameBase::Precision)(yyvsp[(4) - (4)].integer));}
+     break;
+ 
+   case 297:
+@@ -5152,13 +5485,13 @@
+ 
+   case 298:
+ #line 867 "parser.Y"
+-    {FRB->getCursorCmd((InternalSystem)yyvsp[0].integer);;}
++    {FRB->getCursorCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 299:
+ #line 869 "parser.Y"
+-    {FRB->getCursorCmd((CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer,
+-	    (FrameBase::Precision)yyvsp[0].integer);;}
++    {FRB->getCursorCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
++	    (FrameBase::Precision)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 300:
+@@ -5168,36 +5501,36 @@
+ 
+   case 301:
+ #line 875 "parser.Y"
+-    {FRB->getDataValuesCmd(1, Vector(yyvsp[-3].vector), 
+-	    (CoordSystem)yyvsp[-5].integer, (SkyFrame)yyvsp[-4].integer, Vector(yyvsp[-2].real,yyvsp[-1].real), yyvsp[0].str);;}
++    {FRB->getDataValuesCmd(1, Vector((yyvsp[(3) - (6)].vector)), 
++	    (CoordSystem)(yyvsp[(1) - (6)].integer), (SkyFrame)(yyvsp[(2) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (yyvsp[(6) - (6)].str));;}
+     break;
+ 
+   case 302:
+ #line 878 "parser.Y"
+-    {FRB->getDataValuesCmd(yyvsp[-6].integer, Vector(yyvsp[-3].vector), 
+-	    (CoordSystem)yyvsp[-5].integer, (SkyFrame)yyvsp[-4].integer, Vector(yyvsp[-2].real,yyvsp[-1].real), yyvsp[0].str);;}
++    {FRB->getDataValuesCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].vector)), 
++	    (CoordSystem)(yyvsp[(2) - (7)].integer), (SkyFrame)(yyvsp[(3) - (7)].integer), Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)), (yyvsp[(7) - (7)].str));;}
+     break;
+ 
+   case 303:
+ #line 881 "parser.Y"
+-    {FRB->getDataValuesCmd(Vector(yyvsp[-3].real,yyvsp[-2].real),(InternalSystem)yyvsp[-4].integer,
+-	    Vector(yyvsp[-1].integer,yyvsp[0].integer));;}
++    {FRB->getDataValuesCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),(InternalSystem)(yyvsp[(1) - (5)].integer),
++	    Vector((yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer)));;}
+     break;
+ 
+   case 304:
+ #line 885 "parser.Y"
+-    {FRB->getInfoCmd(yyvsp[0].str);;}
++    {FRB->getInfoCmd((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 305:
+ #line 887 "parser.Y"
+-    {FRB->getInfoCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), (InternalSystem)yyvsp[-5].integer, 
+-	    (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer, yyvsp[0].str);;}
++    {FRB->getInfoCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (InternalSystem)(yyvsp[(1) - (6)].integer), 
++	    (SkyFrame)(yyvsp[(4) - (6)].integer), (SkyFormat)(yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
+     break;
+ 
+   case 306:
+ #line 891 "parser.Y"
+-    {FR->iisGetCmd((char*)yyvsp[-4].ptr,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FR->iisGetCmd((char*)(yyvsp[(1) - (5)].ptr),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 307:
+@@ -5222,12 +5555,12 @@
+ 
+   case 312:
+ #line 899 "parser.Y"
+-    {FRB->iisGetFileNameCmd(yyvsp[0].integer);;}
++    {FRB->iisGetFileNameCmd((yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 313:
+ #line 900 "parser.Y"
+-    {FRB->iisGetFileNameCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->iisGetFileNameCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 314:
+@@ -5237,12 +5570,12 @@
+ 
+   case 316:
+ #line 905 "parser.Y"
+-    {FRB->getFitsHeaderCmd(yyvsp[0].integer);;}
++    {FRB->getFitsHeaderCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 317:
+ #line 906 "parser.Y"
+-    {FRB->getFitsHeaderKeywordCmd(yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->getFitsHeaderKeywordCmd((yyvsp[(2) - (4)].integer),(yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 319:
+@@ -5257,7 +5590,7 @@
+ 
+   case 321:
+ #line 911 "parser.Y"
+-    {FRB->getFitsSizeCmd((CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getFitsSizeCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFormat)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 322:
+@@ -5272,18 +5605,18 @@
+ 
+   case 324:
+ #line 917 "parser.Y"
+-    {FRB->getFitsFileNameCmd((FrameBase::FileNameType)yyvsp[0].integer);;}
++    {FRB->getFitsFileNameCmd((FrameBase::FileNameType)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 325:
+ #line 919 "parser.Y"
+-    {FRB->getFitsFileNameCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer,
+-	    (FrameBase::FileNameType)yyvsp[-3].integer);;}
++    {FRB->getFitsFileNameCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer),
++	    (FrameBase::FileNameType)(yyvsp[(1) - (4)].integer));;}
+     break;
+ 
+   case 326:
+ #line 922 "parser.Y"
+-    {FRB->getFitsFileNameCmd(yyvsp[0].integer, (FrameBase::FileNameType)yyvsp[-2].integer);;}
++    {FRB->getFitsFileNameCmd((yyvsp[(3) - (3)].integer), (FrameBase::FileNameType)(yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 327:
+@@ -5293,7 +5626,7 @@
+ 
+   case 328:
+ #line 926 "parser.Y"
+-    {FRB->getFitsObjectNameCmd(yyvsp[0].integer);;}
++    {FRB->getFitsObjectNameCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 329:
+@@ -5323,7 +5656,7 @@
+ 
+   case 334:
+ #line 938 "parser.Y"
+-    {FRB->getRotateCmd((FrameBase::Precision)yyvsp[0].integer);;}
++    {FRB->getRotateCmd((FrameBase::Precision)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 335:
+@@ -5343,23 +5676,23 @@
+ 
+   case 338:
+ #line 947 "parser.Y"
+-    {FRB->getWCSZoomCmd((CoordSystem)yyvsp[-1].integer, (FrameBase::Precision)yyvsp[0].integer);;}
++    {FRB->getWCSZoomCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (FrameBase::Precision)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 339:
+ #line 948 "parser.Y"
+-    {FRB->getWCSNameCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->getWCSNameCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 340:
+ #line 951 "parser.Y"
+-    {FRB->getZoomCmd((FrameBase::Precision)yyvsp[0].integer);;}
++    {FRB->getZoomCmd((FrameBase::Precision)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 341:
+ #line 955 "parser.Y"
+-    {FRB->gridCmd((CoordSystem)yyvsp[-4].integer, (SkyFrame)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer,
+-	     (Grid::GridType)yyvsp[-1].integer, yyvsp[0].str);;}
++    {FRB->gridCmd((CoordSystem)(yyvsp[(2) - (6)].integer), (SkyFrame)(yyvsp[(3) - (6)].integer), (SkyFormat)(yyvsp[(4) - (6)].integer),
++	     (Grid::GridType)(yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
+     break;
+ 
+   case 342:
+@@ -5369,12 +5702,12 @@
+ 
+   case 343:
+ #line 960 "parser.Y"
+-    {yyval.integer=Grid::ANALYSIS;;}
++    {(yyval.integer)=Grid::ANALYSIS;;}
+     break;
+ 
+   case 344:
+ #line 961 "parser.Y"
+-    {yyval.integer=Grid::PUBLICATION;;}
++    {(yyval.integer)=Grid::PUBLICATION;;}
+     break;
+ 
+   case 345:
+@@ -5434,7 +5767,7 @@
+ 
+   case 358:
+ #line 977 "parser.Y"
+-    {FRB->hasSystemCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->hasSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 360:
+@@ -5449,7 +5782,7 @@
+ 
+   case 362:
+ #line 983 "parser.Y"
+-    {FRB->hasFitsExtCmd(yyvsp[0].integer);;}
++    {FRB->hasFitsExtCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 363:
+@@ -5489,22 +5822,22 @@
+ 
+   case 370:
+ #line 995 "parser.Y"
+-    {FRB->hasWCSCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->hasWCSCmd((CoordSystem)(yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 371:
+ #line 996 "parser.Y"
+-    {FRB->hasWCSEquCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->hasWCSEquCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 372:
+ #line 997 "parser.Y"
+-    {FRB->hasWCSLinearCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->hasWCSLinearCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 373:
+ #line 1000 "parser.Y"
+-    {FR->iisCmd(yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FR->iisCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 374:
+@@ -5514,12 +5847,12 @@
+ 
+   case 375:
+ #line 1002 "parser.Y"
+-    {FR->iisMessageCmd(yyvsp[0].str);;}
++    {FR->iisMessageCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 378:
+ #line 1006 "parser.Y"
+-    {FR->iisSetCmd((const char*)yyvsp[-4].ptr,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FR->iisSetCmd((const char*)(yyvsp[(2) - (6)].ptr),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 379:
+@@ -5529,656 +5862,656 @@
+ 
+   case 380:
+ #line 1010 "parser.Y"
+-    {FR->iisWCSCmd(Matrix(yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real),Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
++    {FR->iisWCSCmd(Matrix((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real)),Vector((yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].real)),(yyvsp[(10) - (10)].integer));;}
+     break;
+ 
+   case 381:
+ #line 1013 "parser.Y"
+-    {FRB->iisSetFileNameCmd(yyvsp[0].str);;}
++    {FRB->iisSetFileNameCmd((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 382:
+ #line 1014 "parser.Y"
+-    {FRB->iisSetFileNameCmd(yyvsp[-1].str,yyvsp[0].integer);;}
++    {FRB->iisSetFileNameCmd((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 383:
+ #line 1018 "parser.Y"
+-    {FR->iisSetCursorCmd(Vector(yyvsp[-2].integer,yyvsp[-1].integer),CANVAS);;}
++    {FR->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),CANVAS);;}
+     break;
+ 
+   case 384:
+ #line 1020 "parser.Y"
+-    {FR->iisSetCursorCmd(Vector(yyvsp[-2].integer,yyvsp[-1].integer),(CoordSystem)yyvsp[0].integer);;}
++    {FR->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),(CoordSystem)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 385:
+ #line 1021 "parser.Y"
+-    {FR->iisCursorModeCmd(yyvsp[0].integer);;}
++    {FR->iisCursorModeCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 389:
+ #line 1029 "parser.Y"
+-    {FRB->loadArrAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadArrAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 390:
+ #line 1030 "parser.Y"
+-    {FRB->loadArrAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadArrAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 391:
+ #line 1031 "parser.Y"
+-    {FRB->loadArrChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadArrChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 392:
+ #line 1032 "parser.Y"
+-    {FRB->loadArrMMapCmd(yyvsp[-1].str);;}
++    {FRB->loadArrMMapCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 393:
+ #line 1033 "parser.Y"
+-    {FRB->loadArrMMapIncrCmd(yyvsp[-1].str);;}
++    {FRB->loadArrMMapIncrCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 394:
+ #line 1035 "parser.Y"
+-    {FRB->loadArrShareCmd((FrameBase::ShmType)yyvsp[-1].integer, yyvsp[0].integer, yyvsp[-3].str);;}
++    {FRB->loadArrShareCmd((FrameBase::ShmType)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].str));;}
+     break;
+ 
+   case 395:
+ #line 1036 "parser.Y"
+-    {FRB->loadArrSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadArrSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 396:
+ #line 1037 "parser.Y"
+-    {FRB->loadArrSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadArrSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 397:
+ #line 1038 "parser.Y"
+-    {FRB->loadArrVarCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadArrVarCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 399:
+ #line 1042 "parser.Y"
+-    {FRB->loadArrRGBCubeAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadArrRGBCubeAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 400:
+ #line 1043 "parser.Y"
+-    {FRB->loadArrRGBCubeAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadArrRGBCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 401:
+ #line 1044 "parser.Y"
+-    {FRB->loadArrRGBCubeChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadArrRGBCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 402:
+ #line 1045 "parser.Y"
+-    {FRB->loadArrRGBCubeMMapCmd(yyvsp[-1].str);;}
++    {FRB->loadArrRGBCubeMMapCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 403:
+ #line 1046 "parser.Y"
+-    {FRB->loadArrRGBCubeMMapIncrCmd(yyvsp[-1].str);;}
++    {FRB->loadArrRGBCubeMMapIncrCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 404:
+ #line 1048 "parser.Y"
+-    {FRB->loadArrRGBCubeShareCmd((FrameBase::ShmType)yyvsp[-1].integer, yyvsp[0].integer, yyvsp[-3].str);;}
++    {FRB->loadArrRGBCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].str));;}
+     break;
+ 
+   case 405:
+ #line 1049 "parser.Y"
+-    {FRB->loadArrRGBCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadArrRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 406:
+ #line 1050 "parser.Y"
+-    {FRB->loadArrRGBCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadArrRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 407:
+ #line 1051 "parser.Y"
+-    {FRB->loadArrRGBCubeVarCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadArrRGBCubeVarCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 408:
+ #line 1054 "parser.Y"
+-    {FRB->loadFitsAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadFitsAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 409:
+ #line 1055 "parser.Y"
+-    {FRB->loadFitsAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadFitsAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 410:
+ #line 1056 "parser.Y"
+-    {FRB->loadFitsChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadFitsChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 411:
+ #line 1058 "parser.Y"
+-    {FRB->loadFitsMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 412:
+ #line 1060 "parser.Y"
+-    {FRB->loadFitsSMMapCmd(yyvsp[-3].str,yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsSMMapCmd((yyvsp[(1) - (4)].str),(yyvsp[(2) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 413:
+ #line 1062 "parser.Y"
+-    {FRB->loadFitsMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 414:
+ #line 1064 "parser.Y"
+-    {FRB->loadFitsShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 415:
+ #line 1067 "parser.Y"
+-    {FRB->loadFitsSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 416:
+ #line 1069 "parser.Y"
+-    {FRB->loadFitsSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadFitsSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 417:
+ #line 1070 "parser.Y"
+-    {FRB->loadFitsSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadFitsSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 418:
+ #line 1072 "parser.Y"
+-    {FRB->loadFitsVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadFitsVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 422:
+ #line 1076 "parser.Y"
+-    {FRB->loadFitsSlaveCmd(yyvsp[-1].str,(FitsFile*)yyvsp[0].ptr);;}
++    {FRB->loadFitsSlaveCmd((yyvsp[(2) - (3)].str),(FitsFile*)(yyvsp[(3) - (3)].ptr));;}
+     break;
+ 
+   case 423:
+ #line 1079 "parser.Y"
+-    {FRB->loadDataCubeAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadDataCubeAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 424:
+ #line 1080 "parser.Y"
+-    {FRB->loadDataCubeAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadDataCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 425:
+ #line 1081 "parser.Y"
+-    {FRB->loadDataCubeChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadDataCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 426:
+ #line 1083 "parser.Y"
+-    {FRB->loadDataCubeMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadDataCubeMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 427:
+ #line 1085 "parser.Y"
+-    {FRB->loadDataCubeMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadDataCubeMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 428:
+ #line 1087 "parser.Y"
+-    {FRB->loadDataCubeShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadDataCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 429:
+ #line 1089 "parser.Y"
+-    {FRB->loadDataCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadDataCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 430:
+ #line 1090 "parser.Y"
+-    {FRB->loadDataCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadDataCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 431:
+ #line 1092 "parser.Y"
+-    {FRB->loadDataCubeVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadDataCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 438:
+ #line 1103 "parser.Y"
+-    {FRB->loadMosaicImageIRAFAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicImageIRAFAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 439:
+ #line 1104 "parser.Y"
+-    {FRB->loadMosaicImageIRAFAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicImageIRAFAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 440:
+ #line 1105 "parser.Y"
+-    {FRB->loadMosaicImageIRAFChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadMosaicImageIRAFChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 441:
+ #line 1107 "parser.Y"
+-    {FRB->loadMosaicImageIRAFMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageIRAFMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 442:
+ #line 1109 "parser.Y"
+-    {FRB->loadMosaicImageIRAFMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageIRAFMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 443:
+ #line 1111 "parser.Y"
+-    {FRB->loadMosaicImageIRAFShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
+-	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageIRAFShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
++	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 444:
+ #line 1113 "parser.Y"
+-    {FRB->loadMosaicImageIRAFSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageIRAFSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 445:
+ #line 1114 "parser.Y"
+-    {FRB->loadMosaicImageIRAFSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageIRAFSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 446:
+ #line 1116 "parser.Y"
+-    {FRB->loadMosaicImageIRAFVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageIRAFVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 447:
+ #line 1119 "parser.Y"
+-    {FRB->loadMosaicIRAFAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicIRAFAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 448:
+ #line 1120 "parser.Y"
+-    {FRB->loadMosaicIRAFAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicIRAFAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 449:
+ #line 1121 "parser.Y"
+-    {FRB->loadMosaicIRAFChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadMosaicIRAFChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 450:
+ #line 1123 "parser.Y"
+-    {FRB->loadMosaicIRAFMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 451:
+ #line 1125 "parser.Y"
+-    {FRB->loadMosaicIRAFSMMapCmd(yyvsp[-3].str,yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFSMMapCmd((yyvsp[(1) - (4)].str),(yyvsp[(2) - (4)].str),(FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 452:
+ #line 1127 "parser.Y"
+-    {FRB->loadMosaicIRAFMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 453:
+ #line 1129 "parser.Y"
+-    {FRB->loadMosaicIRAFShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
+-	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
++	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 454:
+ #line 1132 "parser.Y"
+-    {FRB->loadMosaicIRAFSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer,
+-	    yyvsp[-5].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer),
++	    (yyvsp[(1) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 455:
+ #line 1134 "parser.Y"
+-    {FRB->loadMosaicIRAFSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicIRAFSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 456:
+ #line 1135 "parser.Y"
+-    {FRB->loadMosaicIRAFSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicIRAFSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 457:
+ #line 1137 "parser.Y"
+-    {FRB->loadMosaicIRAFVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicIRAFVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 458:
+ #line 1141 "parser.Y"
+-    {FRB->loadMosaicImageWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicImageWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 459:
+ #line 1143 "parser.Y"
+-    {FRB->loadMosaicImageWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicImageWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 460:
+ #line 1145 "parser.Y"
+-    {FRB->loadMosaicImageWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 461:
+ #line 1147 "parser.Y"
+-    {FRB->loadMosaicImageWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 462:
+ #line 1150 "parser.Y"
+-    {FRB->loadMosaicImageWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 463:
+ #line 1153 "parser.Y"
+-    {FRB->loadMosaicImageWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
+-	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
++	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 464:
+ #line 1156 "parser.Y"
+-    {FRB->loadMosaicImageWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 465:
+ #line 1158 "parser.Y"
+-    {FRB->loadMosaicImageWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 466:
+ #line 1160 "parser.Y"
+-    {FRB->loadMosaicImageWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 467:
+ #line 1165 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicImageNextWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 468:
+ #line 1167 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicImageNextWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 469:
+ #line 1169 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadMosaicImageNextWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str),(yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 470:
+ #line 1171 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageNextWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 471:
+ #line 1174 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageNextWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 472:
+ #line 1177 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
+-	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageNextWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
++	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 473:
+ #line 1180 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageNextWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 474:
+ #line 1182 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageNextWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 475:
+ #line 1184 "parser.Y"
+-    {FRB->loadMosaicImageNextWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageNextWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 476:
+ #line 1189 "parser.Y"
+-    {FRB->loadMosaicWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 477:
+ #line 1191 "parser.Y"
+-    {FRB->loadMosaicWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
++    {FRB->loadMosaicWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
+     break;
+ 
+   case 478:
+ #line 1193 "parser.Y"
+-    {FRB->loadMosaicWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadMosaicWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str),(yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 479:
+ #line 1195 "parser.Y"
+-    {FRB->loadMosaicWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 480:
+ #line 1198 "parser.Y"
+-    {FRB->loadMosaicWCSSMMapCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-3].str, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSSMMapCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 481:
+ #line 1201 "parser.Y"
+-    {FRB->loadMosaicWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
++	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 482:
+ #line 1204 "parser.Y"
+-    {FRB->loadMosaicWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
+-	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
++	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 483:
+ #line 1207 "parser.Y"
+-    {FRB->loadMosaicWCSSShareCmd((CoordSystem)yyvsp[-6].integer, 
+-	    (FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSSShareCmd((CoordSystem)(yyvsp[(1) - (7)].integer), 
++	    (FrameBase::ShmType)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(6) - (7)].integer), (yyvsp[(2) - (7)].str), (FrameBase::LoadMethod)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 484:
+ #line 1210 "parser.Y"
+-    {FRB->loadMosaicWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 485:
+ #line 1212 "parser.Y"
+-    {FRB->loadMosaicWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
+     break;
+ 
+   case 486:
+ #line 1214 "parser.Y"
+-    {FRB->loadMosaicWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 487:
+ #line 1219 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2AllocCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicImageWFPC2AllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 488:
+ #line 1220 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2AllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadMosaicImageWFPC2AllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 489:
+ #line 1221 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2ChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWFPC2ChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 490:
+ #line 1223 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2MMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWFPC2MMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 491:
+ #line 1225 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2MMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWFPC2MMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 492:
+ #line 1227 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2ShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
+-	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWFPC2ShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
++	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 493:
+ #line 1229 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2SocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWFPC2SocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 494:
+ #line 1230 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2SocketGZCmd(yyvsp[0].integer,yyvsp[-2].str);;}
++    {FRB->loadMosaicImageWFPC2SocketGZCmd((yyvsp[(3) - (3)].integer),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 495:
+ #line 1232 "parser.Y"
+-    {FRB->loadMosaicImageWFPC2VarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadMosaicImageWFPC2VarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 498:
+ #line 1238 "parser.Y"
+-    {FRB->loadRGBCubeAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadRGBCubeAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 499:
+ #line 1239 "parser.Y"
+-    {FRB->loadRGBCubeAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadRGBCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 500:
+ #line 1240 "parser.Y"
+-    {FRB->loadRGBCubeChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadRGBCubeChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 501:
+ #line 1242 "parser.Y"
+-    {FRB->loadRGBCubeMMapCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeMMapCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 502:
+ #line 1244 "parser.Y"
+-    {FRB->loadRGBCubeSMMapCmd(yyvsp[-3].str, yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeSMMapCmd((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 503:
+ #line 1246 "parser.Y"
+-    {FRB->loadRGBCubeMMapIncrCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeMMapIncrCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 504:
+ #line 1248 "parser.Y"
+-    {FRB->loadRGBCubeShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 505:
+ #line 1251 "parser.Y"
+-    {FRB->loadRGBCubeSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 506:
+ #line 1253 "parser.Y"
+-    {FRB->loadRGBCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 507:
+ #line 1254 "parser.Y"
+-    {FRB->loadRGBCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 508:
+ #line 1256 "parser.Y"
+-    {FRB->loadRGBCubeVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 509:
+ #line 1258 "parser.Y"
+-    {FRB->loadRGBCubeSlaveCmd(yyvsp[-1].str,(FitsFile*)yyvsp[0].ptr);;}
++    {FRB->loadRGBCubeSlaveCmd((yyvsp[(2) - (3)].str),(FitsFile*)(yyvsp[(3) - (3)].ptr));;}
+     break;
+ 
+   case 510:
+ #line 1261 "parser.Y"
+-    {FRB->loadRGBImageAllocCmd(yyvsp[-1].str);;}
++    {FRB->loadRGBImageAllocCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 511:
+ #line 1262 "parser.Y"
+-    {FRB->loadRGBImageAllocGZCmd(yyvsp[-1].str);;}
++    {FRB->loadRGBImageAllocGZCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 512:
+ #line 1263 "parser.Y"
+-    {FRB->loadRGBImageChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
++    {FRB->loadRGBImageChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 513:
+ #line 1265 "parser.Y"
+-    {FRB->loadRGBImageMMapCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBImageMMapCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 514:
+ #line 1267 "parser.Y"
+-    {FRB->loadRGBImageMMapIncrCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBImageMMapIncrCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 515:
+ #line 1269 "parser.Y"
+-    {FRB->loadRGBImageShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
+-	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBImageShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
++	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 516:
+ #line 1271 "parser.Y"
+-    {FRB->loadRGBImageSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadRGBImageSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 517:
+ #line 1272 "parser.Y"
+-    {FRB->loadRGBImageSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
++    {FRB->loadRGBImageSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 518:
+ #line 1274 "parser.Y"
+-    {FRB->loadRGBImageVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
++    {FRB->loadRGBImageVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 519:
+ #line 1277 "parser.Y"
+-    {FRB->loadIncrDataCmd(yyvsp[-4].integer,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->loadIncrDataCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 520:
+ #line 1278 "parser.Y"
+-    {FRB->loadIncrMinMaxCmd(yyvsp[-4].integer,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->loadIncrMinMaxCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 521:
+@@ -6188,22 +6521,22 @@
+ 
+   case 522:
+ #line 1282 "parser.Y"
+-    {FRB->magnifierCmd(yyvsp[0].integer);;}
++    {FRB->magnifierCmd((yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 523:
+ #line 1283 "parser.Y"
+-    {FRB->magnifierGraphicsCmd(yyvsp[0].integer);;}
++    {FRB->magnifierGraphicsCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 524:
+ #line 1284 "parser.Y"
+-    {FRB->magnifierCursorCmd(yyvsp[0].integer);;}
++    {FRB->magnifierCursorCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 525:
+ #line 1285 "parser.Y"
+-    {FRB->magnifierCmd(yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->magnifierCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 526:
+@@ -6213,17 +6546,17 @@
+ 
+   case 527:
+ #line 1287 "parser.Y"
+-    {FRB->updateMagnifierCmd(Vector(yyvsp[-1].real, yyvsp[0].real));;}
++    {FRB->updateMagnifierCmd(Vector((yyvsp[(2) - (3)].real), (yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 528:
+ #line 1288 "parser.Y"
+-    {FRB->magnifierZoomCmd(yyvsp[0].real);;}
++    {FRB->magnifierZoomCmd((yyvsp[(2) - (2)].real));;}
+     break;
+ 
+   case 529:
+ #line 1291 "parser.Y"
+-    {FRB->markerColorCmd(yyvsp[0].str);;}
++    {FRB->markerColorCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 530:
+@@ -6233,12 +6566,12 @@
+ 
+   case 531:
+ #line 1294 "parser.Y"
+-    {FRB->markerCommandCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].str);;}
++    {FRB->markerCommandCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 532:
+ #line 1296 "parser.Y"
+-    {FRB->markerCommandVarCmd((FrameBase::MarkerFormat)yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->markerCommandVarCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (4)].integer),(yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 533:
+@@ -6263,405 +6596,405 @@
+ 
+   case 539:
+ #line 1303 "parser.Y"
+-    {FRB->markerFontCmd(yyvsp[0].str);;}
++    {FRB->markerFontCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 540:
+ #line 1305 "parser.Y"
+-    {FRB->markerAngleCmd(yyvsp[-2].integer,yyvsp[0].real);;}
++    {FRB->markerAngleCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].real));;}
+     break;
+ 
+   case 541:
+ #line 1307 "parser.Y"
+-    {FRB->markerAngleCmd(yyvsp[-4].integer,yyvsp[-2].real,(CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerAngleCmd((yyvsp[(1) - (5)].integer),(yyvsp[(3) - (5)].real),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 542:
+ #line 1311 "parser.Y"
+-    {FRB->markerAnnulusRadiusCmd(yyvsp[-7].integer, 
+-	    yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerAnnulusRadiusCmd((yyvsp[(1) - (8)].integer), 
++	    (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].real), (yyvsp[(6) - (8)].integer),
++	    (CoordSystem)(yyvsp[(7) - (8)].integer), (SkyFormat)(yyvsp[(8) - (8)].integer));;}
+     break;
+ 
+   case 543:
+ #line 1316 "parser.Y"
+-    {FRB->markerAnnulusRadiusCmd(yyvsp[-5].integer,
+-	    yyvsp[-2].str,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
++	    (yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 544:
+ #line 1321 "parser.Y"
+-    {FRB->markerBoxAnnulusRadiusCmd(yyvsp[-8].integer, 
+-	    Vector(yyvsp[-5].real, yyvsp[-4].real), Vector(yyvsp[-3].real, yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), 
++	    Vector((yyvsp[(4) - (9)].real), (yyvsp[(5) - (9)].real)), Vector((yyvsp[(6) - (9)].real), (yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer),
++	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 545:
+ #line 1326 "parser.Y"
+-    {FRB->markerBoxAnnulusRadiusCmd(yyvsp[-5].integer,
+-	    yyvsp[-2].str,(CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
++	    (yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 546:
+ #line 1331 "parser.Y"
+-    {FRB->markerBoxRadiusCmd(yyvsp[-6].integer,
+-	    Vector(yyvsp[-3].real,yyvsp[-2].real), 
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerBoxRadiusCmd((yyvsp[(1) - (7)].integer),
++	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)), 
++	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 547:
+ #line 1338 "parser.Y"
+-    {FRB->markerBpandaEditCmd(yyvsp[-11].integer, 
+-	    yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].integer,
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerBpandaEditCmd((yyvsp[(1) - (12)].integer), 
++	    (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
++	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
++	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
+     break;
+ 
+   case 548:
+ #line 1346 "parser.Y"
+-    {FRB->markerBpandaEditCmd(yyvsp[-8].integer, 
+-	    yyvsp[-5].str, yyvsp[-4].str, 
+-	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerBpandaEditCmd((yyvsp[(1) - (9)].integer), 
++	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
++	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
++	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 549:
+ #line 1351 "parser.Y"
+-    {FRB->markerCallBackCmd(yyvsp[-4].integer,(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->markerCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 550:
+ #line 1353 "parser.Y"
+-    {FRB->markerCircleRadiusCmd(yyvsp[-5].integer, yyvsp[-2].real, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerCircleRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 551:
+ #line 1354 "parser.Y"
+-    {FRB->markerColorCmd(yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->markerColorCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 552:
+ #line 1356 "parser.Y"
+-    {FRB->markerCompassArrowCmd(yyvsp[-4].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerCompassArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 553:
+ #line 1358 "parser.Y"
+-    {FRB->markerCompassLabelCmd(yyvsp[-4].integer,yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->markerCompassLabelCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 554:
+ #line 1360 "parser.Y"
+-    {FRB->markerCompassRadiusCmd(yyvsp[-5].integer,yyvsp[-2].real,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerCompassRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].real),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 555:
+ #line 1362 "parser.Y"
+-    {FRB->markerCompassSystemCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerCompassSystemCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 556:
+ #line 1364 "parser.Y"
+-    {FRB->markerAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 557:
+ #line 1366 "parser.Y"
+-    {FRB->markerBoxAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerBoxAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 558:
+ #line 1368 "parser.Y"
+-    {FRB->markerBpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerBpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 559:
+ #line 1370 "parser.Y"
+-    {FRB->markerBpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerBpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 560:
+ #line 1372 "parser.Y"
+-    {FRB->markerEllipseAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerEllipseAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 561:
+ #line 1374 "parser.Y"
+-    {FRB->markerEpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerEpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 562:
+ #line 1376 "parser.Y"
+-    {FRB->markerEpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerEpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 563:
+ #line 1378 "parser.Y"
+-    {FRB->markerCpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerCpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 564:
+ #line 1380 "parser.Y"
+-    {FRB->markerCpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerCpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
+     break;
+ 
+   case 565:
+ #line 1382 "parser.Y"
+-    {FRB->markerPolygonCreateVertexCmd(yyvsp[-6].integer,yyvsp[-2].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerPolygonCreateVertexCmd((yyvsp[(1) - (7)].integer),(yyvsp[(5) - (7)].integer),Vector((yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));;}
+     break;
+ 
+   case 566:
+ #line 1383 "parser.Y"
+-    {FRB->markerDeleteCmd(yyvsp[-1].integer);;}
++    {FRB->markerDeleteCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 567:
+ #line 1385 "parser.Y"
+-    {FRB->markerAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 568:
+ #line 1387 "parser.Y"
+-    {FRB->markerBoxAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerBoxAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 569:
+ #line 1388 "parser.Y"
+-    {FRB->markerBpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerBpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 570:
+ #line 1390 "parser.Y"
+-    {FRB->markerEllipseAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerEllipseAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 571:
+ #line 1392 "parser.Y"
+-    {FRB->markerDeleteCallBackCmd(yyvsp[-4].integer,(CallBack::Type)yyvsp[-1].integer,yyvsp[0].str);;}
++    {FRB->markerDeleteCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 572:
+ #line 1393 "parser.Y"
+-    {FRB->markerEpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerEpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 573:
+ #line 1394 "parser.Y"
+-    {FRB->markerCpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerCpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 574:
+ #line 1396 "parser.Y"
+-    {FRB->markerPolygonDeleteVertexCmd(yyvsp[-4].integer,yyvsp[0].integer);;}
++    {FRB->markerPolygonDeleteVertexCmd((yyvsp[(1) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 575:
+ #line 1397 "parser.Y"
+-    {FRB->markerDeleteTagCmd(yyvsp[-2].integer);;}
++    {FRB->markerDeleteTagCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 576:
+ #line 1398 "parser.Y"
+-    {FRB->markerDeleteTagCmd(yyvsp[-3].integer,yyvsp[0].str);;}
++    {FRB->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 577:
+ #line 1399 "parser.Y"
+-    {FRB->markerDeleteTagCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 578:
+ #line 1400 "parser.Y"
+-    {FRB->markerEditBeginCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerEditBeginCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 579:
+ #line 1404 "parser.Y"
+-    {FRB->markerEllipseRadiusCmd(yyvsp[-6].integer, 
+-	    Vector(yyvsp[-3].real, yyvsp[-2].real),
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerEllipseRadiusCmd((yyvsp[(1) - (7)].integer), 
++	    Vector((yyvsp[(4) - (7)].real), (yyvsp[(5) - (7)].real)),
++	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 580:
+ #line 1410 "parser.Y"
+-    {FRB->markerEllipseAnnulusRadiusCmd(yyvsp[-8].integer, 
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), 
++	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer),
++	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 581:
+ #line 1415 "parser.Y"
+-    {FRB->markerEllipseAnnulusRadiusCmd(yyvsp[-5].integer,
+-	    yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
++	    (yyvsp[(4) - (6)].str), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 582:
+ #line 1421 "parser.Y"
+-    {FRB->markerEpandaEditCmd(yyvsp[-11].integer, 
+-	    yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].integer,
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerEpandaEditCmd((yyvsp[(1) - (12)].integer), 
++	    (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
++	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
++	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
+     break;
+ 
+   case 583:
+ #line 1429 "parser.Y"
+-    {FRB->markerEpandaEditCmd(yyvsp[-8].integer, 
+-	    yyvsp[-5].str, yyvsp[-4].str, 
+-	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerEpandaEditCmd((yyvsp[(1) - (9)].integer), 
++	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
++	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
++	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 584:
+ #line 1433 "parser.Y"
+-    {FRB->markerFontCmd(yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->markerFontCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 585:
+ #line 1434 "parser.Y"
+-    {FRB->markerHighliteCmd(yyvsp[-1].integer);;}
++    {FRB->markerHighliteCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 586:
+ #line 1435 "parser.Y"
+-    {FRB->markerHighliteOnlyCmd(yyvsp[-2].integer);;}
++    {FRB->markerHighliteOnlyCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 587:
+ #line 1436 "parser.Y"
+-    {FRB->markerLineArrowCmd(yyvsp[-4].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerLineArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 588:
+ #line 1438 "parser.Y"
+-    {FRB->markerLineCmd(yyvsp[-6].integer, Vector(yyvsp[-1].vector), Vector(yyvsp[0].vector), 
+-	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer);;}
++    {FRB->markerLineCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)), 
++	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
+     break;
+ 
+   case 589:
+ #line 1441 "parser.Y"
+-    {FRB->markerMoveCmd(yyvsp[-3].integer, Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerMoveCmd((yyvsp[(1) - (4)].integer), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 590:
+ #line 1442 "parser.Y"
+-    {FRB->markerFrontCmd(yyvsp[-2].integer);;}
++    {FRB->markerFrontCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 591:
+ #line 1443 "parser.Y"
+-    {FRB->markerBackCmd(yyvsp[-2].integer);;}
++    {FRB->markerBackCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 592:
+ #line 1445 "parser.Y"
+-    {FRB->markerMoveToCmd(yyvsp[-5].integer, Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)), (InternalSystem)(yyvsp[(4) - (6)].integer));;}
+     break;
+ 
+   case 593:
+ #line 1447 "parser.Y"
+-    {FRB->markerMoveToCmd(yyvsp[-5].integer,Vector(yyvsp[0].vector),(CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
++    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+     break;
+ 
+   case 594:
+ #line 1452 "parser.Y"
+-    {FRB->markerCpandaEditCmd(yyvsp[-10].integer, 
+-	    yyvsp[-7].real, yyvsp[-6].real, yyvsp[-5].integer, 
+-	    yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerCpandaEditCmd((yyvsp[(1) - (11)].integer), 
++	    (yyvsp[(4) - (11)].real), (yyvsp[(5) - (11)].real), (yyvsp[(6) - (11)].integer), 
++	    (yyvsp[(7) - (11)].real), (yyvsp[(8) - (11)].real), (yyvsp[(9) - (11)].integer),
++	    (CoordSystem)(yyvsp[(10) - (11)].integer), (SkyFrame)(yyvsp[(11) - (11)].integer));;}
+     break;
+ 
+   case 595:
+ #line 1460 "parser.Y"
+-    {FRB->markerCpandaEditCmd(yyvsp[-8].integer, 
+-	    yyvsp[-5].str, yyvsp[-4].str,
+-	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerCpandaEditCmd((yyvsp[(1) - (9)].integer), 
++	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str),
++	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
++	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
+     break;
+ 
+   case 596:
+ #line 1465 "parser.Y"
+-    {FRB->markerPolygonResetCmd(yyvsp[-6].integer, Vector(yyvsp[-3].real,yyvsp[-2].real),
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerPolygonResetCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
++	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 597:
+ #line 1469 "parser.Y"
+-    {FRB->markerProjectionCmd(yyvsp[-9].integer, Vector(yyvsp[-5].vector), Vector(yyvsp[-4].vector),
+-	    (CoordSystem)yyvsp[-7].integer, (SkyFrame)yyvsp[-6].integer, yyvsp[-3].real, yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerProjectionCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(5) - (10)].vector)), Vector((yyvsp[(6) - (10)].vector)),
++	    (CoordSystem)(yyvsp[(3) - (10)].integer), (SkyFrame)(yyvsp[(4) - (10)].integer), (yyvsp[(7) - (10)].real), (yyvsp[(8) - (10)].integer),
++	    (CoordSystem)(yyvsp[(9) - (10)].integer), (SkyFormat)(yyvsp[(10) - (10)].integer));;}
+     break;
+ 
+   case 598:
+ #line 1473 "parser.Y"
+-    {FRB->markerProjectionSystemCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerProjectionSystemCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 599:
+ #line 1475 "parser.Y"
+-    {FRB->markerPropertyCmd(yyvsp[-3].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerPropertyCmd((yyvsp[(1) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 600:
+ #line 1476 "parser.Y"
+-    {FRB->markerRotateBeginCmd(yyvsp[-2].integer);;}
++    {FRB->markerRotateBeginCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 601:
+ #line 1478 "parser.Y"
+-    {FRB->markerRulerPointCmd(yyvsp[-6].integer, Vector(yyvsp[-1].vector), Vector(yyvsp[0].vector),
+-	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer);;}
++    {FRB->markerRulerPointCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)),
++	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
+     break;
+ 
+   case 602:
+ #line 1481 "parser.Y"
+-    {FRB->markerRulerSystemCmd(yyvsp[-6].integer, (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->markerRulerSystemCmd((yyvsp[(1) - (7)].integer), (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer),
++	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
+     break;
+ 
+   case 603:
+ #line 1483 "parser.Y"
+-    {FRB->markerSelectCmd(yyvsp[-1].integer);;}
++    {FRB->markerSelectCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 604:
+ #line 1484 "parser.Y"
+-    {FRB->markerSelectOnlyCmd(yyvsp[-2].integer);;}
++    {FRB->markerSelectOnlyCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 605:
+ #line 1485 "parser.Y"
+-    {FRB->markerTagCmd(yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->markerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 606:
+ #line 1486 "parser.Y"
+-    {FRB->markerTextCmd(yyvsp[-2].integer,yyvsp[0].str);;}
++    {FRB->markerTextCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 607:
+ #line 1487 "parser.Y"
+-    {FRB->markerUnhighliteCmd(yyvsp[-1].integer);;}
++    {FRB->markerUnhighliteCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 608:
+ #line 1488 "parser.Y"
+-    {FRB->markerUnselectCmd(yyvsp[-1].integer);;}
++    {FRB->markerUnselectCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 609:
+ #line 1489 "parser.Y"
+-    {FRB->markerVectorArrowCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
++    {FRB->markerVectorArrowCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 610:
+ #line 1492 "parser.Y"
+-    {FRB->markerVectorCmd(yyvsp[-9].integer, Vector(yyvsp[-4].vector), (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer,
+-	    yyvsp[-1].real, (CoordSystem)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer, yyvsp[0].real);;}
++    {FRB->markerVectorCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(6) - (10)].vector)), (CoordSystem)(yyvsp[(4) - (10)].integer), (SkyFrame)(yyvsp[(5) - (10)].integer),
++	    (yyvsp[(9) - (10)].real), (CoordSystem)(yyvsp[(7) - (10)].integer), (SkyFormat)(yyvsp[(8) - (10)].integer), (yyvsp[(10) - (10)].real));;}
+     break;
+ 
+   case 611:
+ #line 1494 "parser.Y"
+-    {FRB->markerLineWidthCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
++    {FRB->markerLineWidthCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 612:
+@@ -6671,37 +7004,37 @@
+ 
+   case 613:
+ #line 1498 "parser.Y"
+-    {FRB->markerHighliteOnlyCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerHighliteOnlyCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 614:
+ #line 1500 "parser.Y"
+-    {FRB->markerHighliteToggleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerHighliteToggleCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 618:
+ #line 1505 "parser.Y"
+-    {FRB->markerPreserveCmd(yyvsp[0].integer);;}
++    {FRB->markerPreserveCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 619:
+ #line 1506 "parser.Y"
+-    {FRB->markerPropertyCmd(yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerPropertyCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 620:
+ #line 1508 "parser.Y"
+-    {FRB->markerPropertyCmd(yyvsp[-3].integer,yyvsp[-2].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerPropertyCmd((yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
+     break;
+ 
+   case 621:
+ #line 1510 "parser.Y"
+-    {FRB->markerRotateBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerRotateBeginCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 622:
+ #line 1512 "parser.Y"
+-    {FRB->markerRotateMotionCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
++    {FRB->markerRotateMotionCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real)),(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 623:
+@@ -6711,108 +7044,108 @@
+ 
+   case 624:
+ #line 1515 "parser.Y"
+-    {FRB->markerSaveCmd(yyvsp[-6].str, (FrameBase::MarkerFormat)yyvsp[-5].integer,
+-	    (CoordSystem)yyvsp[-4].integer, (SkyFrame)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->markerSaveCmd((yyvsp[(2) - (8)].str), (FrameBase::MarkerFormat)(yyvsp[(3) - (8)].integer),
++	    (CoordSystem)(yyvsp[(4) - (8)].integer), (SkyFrame)(yyvsp[(5) - (8)].integer), (SkyFormat)(yyvsp[(6) - (8)].integer), (yyvsp[(7) - (8)].integer), (yyvsp[(8) - (8)].integer));;}
+     break;
+ 
+   case 625:
+ #line 1517 "parser.Y"
+-    {FRB->markerSaveTemplateCmd(yyvsp[0].str);;}
++    {FRB->markerSaveTemplateCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 627:
+ #line 1520 "parser.Y"
+-    {FRB->markerShowCmd(yyvsp[0].integer);;}
++    {FRB->markerShowCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 628:
+ #line 1522 "parser.Y"
+-    {FRB->markerColorCmd(yyvsp[-2].str,yyvsp[0].str);;}
++    {FRB->markerColorCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 629:
+ #line 1523 "parser.Y"
+-    {FRB->markerCopyCmd(yyvsp[-1].str);;}
++    {FRB->markerCopyCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 630:
+ #line 1524 "parser.Y"
+-    {FRB->markerDeleteCmd(yyvsp[-1].str);;}
++    {FRB->markerDeleteCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 631:
+ #line 1525 "parser.Y"
+-    {FRB->markerCutCmd(yyvsp[-1].str);;}
++    {FRB->markerCutCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 632:
+ #line 1526 "parser.Y"
+-    {FRB->markerFontCmd(yyvsp[-2].str,yyvsp[0].str);;}
++    {FRB->markerFontCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 633:
+ #line 1527 "parser.Y"
+-    {FRB->markerHighliteCmd(yyvsp[-1].str);;}
++    {FRB->markerHighliteCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 634:
+ #line 1528 "parser.Y"
+-    {FRB->markerHighliteOnlyCmd(yyvsp[-2].str);;}
++    {FRB->markerHighliteOnlyCmd((yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 635:
+ #line 1529 "parser.Y"
+-    {FRB->markerMoveCmd(yyvsp[-3].str,Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerMoveCmd((yyvsp[(1) - (4)].str),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 636:
+ #line 1530 "parser.Y"
+-    {FRB->markerFrontCmd(yyvsp[-2].str);;}
++    {FRB->markerFrontCmd((yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 637:
+ #line 1531 "parser.Y"
+-    {FRB->markerBackCmd(yyvsp[-2].str);;}
++    {FRB->markerBackCmd((yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 638:
+ #line 1533 "parser.Y"
+-    {FRB->markerMoveToCmd(yyvsp[-5].str,Vector(yyvsp[0].vector),(CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
++    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].str),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+     break;
+ 
+   case 639:
+ #line 1535 "parser.Y"
+-    {FRB->markerPropertyCmd(yyvsp[-3].str,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerPropertyCmd((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 640:
+ #line 1536 "parser.Y"
+-    {FRB->markerSelectCmd(yyvsp[-1].str);;}
++    {FRB->markerSelectCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 641:
+ #line 1537 "parser.Y"
+-    {FRB->markerSelectOnlyCmd(yyvsp[-2].str);;}
++    {FRB->markerSelectOnlyCmd((yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 642:
+ #line 1538 "parser.Y"
+-    {FRB->markerUnhighliteCmd(yyvsp[-1].str);;}
++    {FRB->markerUnhighliteCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 643:
+ #line 1539 "parser.Y"
+-    {FRB->markerUnselectCmd(yyvsp[-1].str);;}
++    {FRB->markerUnselectCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 644:
+ #line 1541 "parser.Y"
+-    {FRB->markerTagEditCmd(yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->markerTagEditCmd((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 645:
+ #line 1542 "parser.Y"
+-    {FRB->markerTagDeleteCmd(yyvsp[0].str);;}
++    {FRB->markerTagDeleteCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 646:
+@@ -6822,12 +7155,12 @@
+ 
+   case 647:
+ #line 1544 "parser.Y"
+-    {FRB->markerTagCmd(yyvsp[0].str);;}
++    {FRB->markerTagCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 648:
+ #line 1545 "parser.Y"
+-    {FRB->markerTagUpdateCmd(yyvsp[0].str);;}
++    {FRB->markerTagUpdateCmd((yyvsp[(3) - (3)].str));;}
+     break;
+ 
+   case 649:
+@@ -6837,7 +7170,7 @@
+ 
+   case 650:
+ #line 1549 "parser.Y"
+-    {FRB->markerPasteCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerPasteCmd((CoordSystem)(yyvsp[(2) - (3)].integer),(SkyFrame)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 651:
+@@ -6857,197 +7190,197 @@
+ 
+   case 654:
+ #line 1553 "parser.Y"
+-    {FRB->markerLineWidthCmd(yyvsp[0].integer);;}
++    {FRB->markerLineWidthCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 655:
+ #line 1556 "parser.Y"
+-    {yyval.integer = CallBack::SELECTCB;;}
++    {(yyval.integer) = CallBack::SELECTCB;;}
+     break;
+ 
+   case 656:
+ #line 1557 "parser.Y"
+-    {yyval.integer = CallBack::UNSELECTCB;;}
++    {(yyval.integer) = CallBack::UNSELECTCB;;}
+     break;
+ 
+   case 657:
+ #line 1558 "parser.Y"
+-    {yyval.integer = CallBack::HIGHLITECB;;}
++    {(yyval.integer) = CallBack::HIGHLITECB;;}
+     break;
+ 
+   case 658:
+ #line 1559 "parser.Y"
+-    {yyval.integer = CallBack::UNHIGHLITECB;;}
++    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
+     break;
+ 
+   case 659:
+ #line 1560 "parser.Y"
+-    {yyval.integer = CallBack::MOVEBEGINCB;;}
++    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
+     break;
+ 
+   case 660:
+ #line 1561 "parser.Y"
+-    {yyval.integer = CallBack::MOVECB;;}
++    {(yyval.integer) = CallBack::MOVECB;;}
+     break;
+ 
+   case 661:
+ #line 1562 "parser.Y"
+-    {yyval.integer = CallBack::MOVEENDCB;;}
++    {(yyval.integer) = CallBack::MOVEENDCB;;}
+     break;
+ 
+   case 662:
+ #line 1563 "parser.Y"
+-    {yyval.integer = CallBack::EDITBEGINCB;;}
++    {(yyval.integer) = CallBack::EDITBEGINCB;;}
+     break;
+ 
+   case 663:
+ #line 1564 "parser.Y"
+-    {yyval.integer = CallBack::EDITCB;;}
++    {(yyval.integer) = CallBack::EDITCB;;}
+     break;
+ 
+   case 664:
+ #line 1565 "parser.Y"
+-    {yyval.integer = CallBack::EDITENDCB;;}
++    {(yyval.integer) = CallBack::EDITENDCB;;}
+     break;
+ 
+   case 665:
+ #line 1566 "parser.Y"
+-    {yyval.integer = CallBack::ROTATEBEGINCB;;}
++    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
+     break;
+ 
+   case 666:
+ #line 1567 "parser.Y"
+-    {yyval.integer = CallBack::ROTATECB;;}
++    {(yyval.integer) = CallBack::ROTATECB;;}
+     break;
+ 
+   case 667:
+ #line 1568 "parser.Y"
+-    {yyval.integer = CallBack::ROTATEENDCB;;}
++    {(yyval.integer) = CallBack::ROTATEENDCB;;}
+     break;
+ 
+   case 668:
+ #line 1569 "parser.Y"
+-    {yyval.integer = CallBack::DELETECB;;}
++    {(yyval.integer) = CallBack::DELETECB;;}
+     break;
+ 
+   case 669:
+ #line 1570 "parser.Y"
+-    {yyval.integer = CallBack::TEXTCB;;}
++    {(yyval.integer) = CallBack::TEXTCB;;}
+     break;
+ 
+   case 670:
+ #line 1571 "parser.Y"
+-    {yyval.integer = CallBack::COLORCB;;}
++    {(yyval.integer) = CallBack::COLORCB;;}
+     break;
+ 
+   case 671:
+ #line 1572 "parser.Y"
+-    {yyval.integer = CallBack::LINEWIDTHCB;;}
++    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
+     break;
+ 
+   case 672:
+ #line 1573 "parser.Y"
+-    {yyval.integer = CallBack::PROPERTYCB;;}
++    {(yyval.integer) = CallBack::PROPERTYCB;;}
+     break;
+ 
+   case 673:
+ #line 1574 "parser.Y"
+-    {yyval.integer = CallBack::FONTCB;;}
++    {(yyval.integer) = CallBack::FONTCB;;}
+     break;
+ 
+   case 674:
+ #line 1575 "parser.Y"
+-    {yyval.integer = CallBack::UPDATECB;;}
++    {(yyval.integer) = CallBack::UPDATECB;;}
+     break;
+ 
+   case 675:
+ #line 1582 "parser.Y"
+-    {FRB->createCircleCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-1].real,
++    {FRB->createCircleCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (5)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 676:
+ #line 1589 "parser.Y"
+-    {FRB->createAnnulusCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].integer,
++    {FRB->createAnnulusCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].integer),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 677:
+ #line 1597 "parser.Y"
+-    {FRB->createCpandaCmd(Vector(yyvsp[-8].real,yyvsp[-7].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].integer,
+-	    yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].integer,
++    {FRB->createCpandaCmd(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].integer),
++	    (yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].integer),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 678:
+ #line 1607 "parser.Y"
+-    {FRB->createEllipseCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-3].real,yyvsp[-2].real),
+-	    yyvsp[-1].real,
++    {FRB->createEllipseCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
++	    (yyvsp[(6) - (7)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 679:
+ #line 1616 "parser.Y"
+-    {FRB->createEllipseAnnulusCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real), 
+-	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
+-	    yyvsp[-1].real,
++    {FRB->createEllipseAnnulusCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), 
++	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
++	    (yyvsp[(8) - (9)].real),
+ 	    currentColor,currentWidth,currentFont, 
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 680:
+ #line 1627 "parser.Y"
+-    {FRB->createEpandaCmd(Vector(yyvsp[-10].real,yyvsp[-9].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].integer,
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real),
+-	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
+-	    yyvsp[-1].real,
++    {FRB->createEpandaCmd(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
++	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
++	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
++	    (yyvsp[(11) - (12)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 681:
+ #line 1639 "parser.Y"
+-    {FRB->createBoxCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-3].real,yyvsp[-2].real),
+-	    yyvsp[-1].real,
++    {FRB->createBoxCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
++	    (yyvsp[(6) - (7)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 682:
+ #line 1648 "parser.Y"
+-    {FRB->createBoxAnnulusCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
+-	    yyvsp[-1].real,
++    {FRB->createBoxAnnulusCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)),Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
++	    (yyvsp[(8) - (9)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 683:
+ #line 1658 "parser.Y"
+-    {FRB->createBpandaCmd(Vector(yyvsp[-10].real,yyvsp[-9].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].integer,
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real),
+-	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
+-	    yyvsp[-1].real,
++    {FRB->createBpandaCmd(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
++	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
++	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
++	    (yyvsp[(11) - (12)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 684:
+ #line 1669 "parser.Y"
+-    {FRB->createLineCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createLineCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real))*FRB->getCanvasToRef(),
+ 	    0, 0,
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+@@ -7055,8 +7388,8 @@
+ 
+   case 685:
+ #line 1677 "parser.Y"
+-    {FRB->createVectCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createVectCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real))*FRB->getCanvasToRef(),
+ 	    1,
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+@@ -7064,9 +7397,9 @@
+ 
+   case 686:
+ #line 1686 "parser.Y"
+-    {FRB->createProjectionCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-1].real,
++    {FRB->createProjectionCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(6) - (7)].real),
+ 	    NULL,NULL,
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+@@ -7074,94 +7407,94 @@
+ 
+   case 687:
+ #line 1697 "parser.Y"
+-    {FRB->createProjectionCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-3].real,
+-	    yyvsp[-2].str,yyvsp[-1].str,
++    {FRB->createProjectionCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(6) - (9)].real),
++	    (yyvsp[(7) - (9)].str),(yyvsp[(8) - (9)].str),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 688:
+ #line 1707 "parser.Y"
+-    {FRB->createRulerCmd(Vector(yyvsp[-6].real,yyvsp[-5].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
+-	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer, PHYSICAL, DEGREES,
++    {FRB->createRulerCmd(Vector((yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real))*FRB->getCanvasToRef(),
++	    (CoordSystem)(yyvsp[(6) - (8)].integer), (SkyFrame)(yyvsp[(7) - (8)].integer), PHYSICAL, DEGREES,
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 689:
+ #line 1715 "parser.Y"
+-    {FRB->createCirclePointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createCirclePointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 690:
+ #line 1720 "parser.Y"
+-    {FRB->createBoxPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createBoxPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 691:
+ #line 1725 "parser.Y"
+-    {FRB->createDiamondPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createDiamondPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 692:
+ #line 1730 "parser.Y"
+-    {FRB->createCrossPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createCrossPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 693:
+ #line 1735 "parser.Y"
+-    {FRB->createExPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createExPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 694:
+ #line 1740 "parser.Y"
+-    {FRB->createArrowPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createArrowPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 695:
+ #line 1745 "parser.Y"
+-    {FRB->createBoxCirclePointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
++    {FRB->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 696:
+ #line 1752 "parser.Y"
+-    {FRB->createTextCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
+-	    yyvsp[-1].real,
++    {FRB->createTextCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(),
++	    (yyvsp[(4) - (5)].real),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 697:
+ #line 1760 "parser.Y"
+-    {FRB->createPolygonCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
+-	    Vector(yyvsp[-2].real,yyvsp[-1].real),
++    {FRB->createPolygonCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
++	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+ 
+   case 698:
+ #line 1769 "parser.Y"
+-    {FRB->createCompassCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(), 
+-	    yyvsp[-3].real,
++    {FRB->createCompassCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(), 
++	    (yyvsp[(4) - (7)].real),
+ 	    "N", "E", 1, 1,
+-	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer,
++	    (CoordSystem)(yyvsp[(5) - (7)].integer), (SkyFrame)(yyvsp[(6) - (7)].integer),
+ 	    currentColor,currentWidth,currentFont,
+ 	    currentText,currentProps,NULL,taglist,cblist);;}
+     break;
+@@ -7175,22 +7508,22 @@
+ 
+   case 700:
+ #line 1782 "parser.Y"
+-    {FRB->createTemplateCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(), yyvsp[0].str);;}
++    {FRB->createTemplateCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real))*FRB->getCanvasToRef(), (yyvsp[(4) - (4)].str));;}
+     break;
+ 
+   case 701:
+ #line 1785 "parser.Y"
+-    {FRB->createTemplateVarCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(), yyvsp[0].str);;}
++    {FRB->createTemplateVarCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(), (yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 702:
+ #line 1789 "parser.Y"
+-    {FRB->markerEditBeginCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
++    {FRB->markerEditBeginCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 703:
+ #line 1791 "parser.Y"
+-    {FRB->markerEditMotionCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
++    {FRB->markerEditMotionCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 704:
+@@ -7200,32 +7533,32 @@
+ 
+   case 705:
+ #line 1795 "parser.Y"
+-    {yyval.integer = FrameBase::DS9;;}
++    {(yyval.integer) = FrameBase::DS9;;}
+     break;
+ 
+   case 706:
+ #line 1796 "parser.Y"
+-    {yyval.integer = FrameBase::CIAO;;}
++    {(yyval.integer) = FrameBase::CIAO;;}
+     break;
+ 
+   case 707:
+ #line 1797 "parser.Y"
+-    {yyval.integer = FrameBase::SAOTNG;;}
++    {(yyval.integer) = FrameBase::SAOTNG;;}
+     break;
+ 
+   case 708:
+ #line 1798 "parser.Y"
+-    {yyval.integer = FrameBase::SAOIMAGE;;}
++    {(yyval.integer) = FrameBase::SAOIMAGE;;}
+     break;
+ 
+   case 709:
+ #line 1799 "parser.Y"
+-    {yyval.integer = FrameBase::PROS;;}
++    {(yyval.integer) = FrameBase::PROS;;}
+     break;
+ 
+   case 710:
+ #line 1800 "parser.Y"
+-    {yyval.integer = FrameBase::RAWXY;;}
++    {(yyval.integer) = FrameBase::RAWXY;;}
+     break;
+ 
+   case 711:
+@@ -7240,12 +7573,12 @@
+ 
+   case 713:
+ #line 1805 "parser.Y"
+-    {FRB->getMarkerHandleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->getMarkerHandleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 714:
+ #line 1806 "parser.Y"
+-    {FRB->getMarkerIdCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->getMarkerIdCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 715:
+@@ -7255,220 +7588,220 @@
+ 
+   case 716:
+ #line 1809 "parser.Y"
+-    {FRB->getMarkerAngleCmd(yyvsp[-3].integer,(CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->getMarkerAngleCmd((yyvsp[(1) - (4)].integer),(CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 717:
+ #line 1811 "parser.Y"
+-    {FRB->getMarkerAnnulusRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 718:
+ #line 1813 "parser.Y"
+-    {FRB->getMarkerBoxAnnulusRadiusCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 719:
+ #line 1815 "parser.Y"
+-    {FRB->getMarkerBoxRadiusCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerBoxRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 720:
+ #line 1817 "parser.Y"
+-    {FRB->getMarkerBpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->getMarkerBpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 721:
+ #line 1819 "parser.Y"
+-    {FRB->getMarkerBpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerBpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 722:
+ #line 1821 "parser.Y"
+-    {FRB->getMarkerCenterCmd(yyvsp[-4].integer, 
+-	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerCenterCmd((yyvsp[(1) - (5)].integer), 
++	    (CoordSystem)(yyvsp[(3) - (5)].integer), (SkyFrame)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 723:
+ #line 1824 "parser.Y"
+-    {FRB->getMarkerCircleRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 724:
+ #line 1825 "parser.Y"
+-    {FRB->getMarkerColorCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerColorCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 725:
+ #line 1826 "parser.Y"
+-    {FRB->getMarkerCompassArrowCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerCompassArrowCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 726:
+ #line 1827 "parser.Y"
+-    {FRB->getMarkerCompassLabelCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerCompassLabelCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 727:
+ #line 1828 "parser.Y"
+-    {FRB->getMarkerCompassSystemCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerCompassSystemCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 728:
+ #line 1830 "parser.Y"
+-    {FRB->getMarkerEllipseRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerEllipseRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 729:
+ #line 1832 "parser.Y"
+-    {FRB->getMarkerEllipseAnnulusRadiusCmd(yyvsp[-4].integer, 
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), 
++	    (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 730:
+ #line 1835 "parser.Y"
+-    {FRB->getMarkerEpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->getMarkerEpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 731:
+ #line 1837 "parser.Y"
+-    {FRB->getMarkerEpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerEpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 732:
+ #line 1838 "parser.Y"
+-    {FRB->getMarkerFontCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerFontCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 733:
+ #line 1839 "parser.Y"
+-    {FRB->getMarkerLineArrowCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerLineArrowCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 734:
+ #line 1841 "parser.Y"
+-    {FRB->getMarkerLineLengthCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerLineLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 735:
+ #line 1843 "parser.Y"
+-    {FRB->getMarkerLineCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
+-	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerLineCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
++	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 736:
+ #line 1846 "parser.Y"
+-    {FRB->getMarkerMapLenFromRefCmd(yyvsp[-5].integer, yyvsp[-2].real,
+-	    (CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerMapLenFromRefCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real),
++	    (CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 737:
+ #line 1849 "parser.Y"
+-    {FRB->getMarkerCpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
++    {FRB->getMarkerCpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 738:
+ #line 1851 "parser.Y"
+-    {FRB->getMarkerCpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerCpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 739:
+ #line 1853 "parser.Y"
+-    {FRB->getMarkerProjectionCmd(yyvsp[-5].integer,yyvsp[-3].str,yyvsp[-2].str,yyvsp[-1].str,yyvsp[0].str);;}
++    {FRB->getMarkerProjectionCmd((yyvsp[(1) - (6)].integer),(yyvsp[(3) - (6)].str),(yyvsp[(4) - (6)].str),(yyvsp[(5) - (6)].str),(yyvsp[(6) - (6)].str));;}
+     break;
+ 
+   case 740:
+ #line 1855 "parser.Y"
+-    {FRB->getMarkerProjectionPointsCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
+-	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerProjectionPointsCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
++	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 741:
+ #line 1858 "parser.Y"
+-    {FRB->getMarkerProjectionLengthCmd(yyvsp[-4].integer, 
+-	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerProjectionLengthCmd((yyvsp[(1) - (5)].integer), 
++	    (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 742:
+ #line 1860 "parser.Y"
+-    {FRB->getMarkerProjectionMethodCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerProjectionMethodCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 743:
+ #line 1862 "parser.Y"
+-    {FRB->getMarkerProjectionWidthCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerProjectionWidthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 744:
+ #line 1863 "parser.Y"
+-    {FRB->getMarkerProjectionSystemCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerProjectionSystemCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 745:
+ #line 1864 "parser.Y"
+-    {FRB->getMarkerPropertyCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 746:
+ #line 1865 "parser.Y"
+-    {FRB->getMarkerPropertyCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
++    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 747:
+ #line 1867 "parser.Y"
+-    {FRB->getMarkerRulerLengthCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerRulerLengthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 748:
+ #line 1869 "parser.Y"
+-    {FRB->getMarkerRulerPointCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
+-	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerRulerPointCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
++	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 749:
+ #line 1871 "parser.Y"
+-    {FRB->getMarkerRulerSystemCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerRulerSystemCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 750:
+ #line 1872 "parser.Y"
+-    {FRB->getMarkerTagCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerTagCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 751:
+ #line 1873 "parser.Y"
+-    {FRB->getMarkerTagCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
++    {FRB->getMarkerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 752:
+ #line 1874 "parser.Y"
+-    {FRB->getMarkerTextCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerTextCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 753:
+ #line 1875 "parser.Y"
+-    {FRB->getMarkerTypeCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerTypeCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 754:
+ #line 1876 "parser.Y"
+-    {FRB->getMarkerVectorArrowCmd(yyvsp[-2].integer);;}
++    {FRB->getMarkerVectorArrowCmd((yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 755:
+ #line 1878 "parser.Y"
+-    {FRB->getMarkerVectorLengthCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerVectorLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
+     break;
+ 
+   case 756:
+ #line 1880 "parser.Y"
+-    {FRB->getMarkerVectorCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
+-	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
++    {FRB->getMarkerVectorCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
++	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
+     break;
+ 
+   case 757:
+ #line 1882 "parser.Y"
+-    {FRB->getMarkerLineWidthCmd(yyvsp[-1].integer);;}
++    {FRB->getMarkerLineWidthCmd((yyvsp[(1) - (2)].integer));;}
+     break;
+ 
+   case 759:
+@@ -7478,7 +7811,7 @@
+ 
+   case 760:
+ #line 1886 "parser.Y"
+-    {FRB->getMarkerPolygonSegmentCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->getMarkerPolygonSegmentCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 761:
+@@ -7488,7 +7821,7 @@
+ 
+   case 762:
+ #line 1888 "parser.Y"
+-    {FRB->getMarkerPropertyCmd(yyvsp[0].integer);;}
++    {FRB->getMarkerPropertyCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 764:
+@@ -7503,27 +7836,27 @@
+ 
+   case 766:
+ #line 1894 "parser.Y"
+-    {FRB->getMarkerColorCmd(yyvsp[-1].str);;}
++    {FRB->getMarkerColorCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 767:
+ #line 1895 "parser.Y"
+-    {FRB->getMarkerFontCmd(yyvsp[-1].str);;}
++    {FRB->getMarkerFontCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 768:
+ #line 1896 "parser.Y"
+-    {FRB->getMarkerPropertyCmd(yyvsp[-2].str,yyvsp[0].integer);;}
++    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 769:
+ #line 1897 "parser.Y"
+-    {FRB->getMarkerTagCmd(yyvsp[-1].str);;}
++    {FRB->getMarkerTagCmd((yyvsp[(1) - (2)].str));;}
+     break;
+ 
+   case 770:
+ #line 1898 "parser.Y"
+-    {FRB->getMarkerTagNumberCmd(yyvsp[-2].str);;}
++    {FRB->getMarkerTagNumberCmd((yyvsp[(1) - (3)].str));;}
+     break;
+ 
+   case 771:
+@@ -7548,7 +7881,7 @@
+ 
+   case 775:
+ #line 1907 "parser.Y"
+-    {FRB->getMarkerSelectedCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->getMarkerSelectedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 776:
+@@ -7558,7 +7891,7 @@
+ 
+   case 777:
+ #line 1911 "parser.Y"
+-    {FRB->getMarkerHighlitedCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->getMarkerHighlitedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 778:
+@@ -7591,48 +7924,48 @@
+ 
+   case 782:
+ #line 1932 "parser.Y"
+-    {FRB->markerListCmd((FrameBase::MarkerFormat)yyvsp[-7].integer,
+-	    (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer, (SkyFormat)yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer,
++    {FRB->markerListCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (8)].integer),
++	    (CoordSystem)(yyvsp[(2) - (8)].integer), (SkyFrame)(yyvsp[(3) - (8)].integer), (SkyFormat)(yyvsp[(4) - (8)].integer), (yyvsp[(5) - (8)].integer), (yyvsp[(6) - (8)].integer),
+ 	    0, propQMask, propQValue, taglist);;}
+     break;
+ 
+   case 783:
+ #line 1937 "parser.Y"
+-    {FRB->markerListCmd((FrameBase::MarkerFormat)yyvsp[-7].integer, 
+-	    (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer, (SkyFormat)yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer,
++    {FRB->markerListCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (9)].integer), 
++	    (CoordSystem)(yyvsp[(3) - (9)].integer), (SkyFrame)(yyvsp[(4) - (9)].integer), (SkyFormat)(yyvsp[(5) - (9)].integer), (yyvsp[(6) - (9)].integer), (yyvsp[(7) - (9)].integer),
+ 	    1, propQMask, propQValue, taglist);;}
+     break;
+ 
+   case 784:
+ #line 1943 "parser.Y"
+-    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].str);;}
++    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 785:
+ #line 1945 "parser.Y"
+-    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-3].integer,yyvsp[-2].str,
+-	    (CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].str),
++	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 786:
+ #line 1948 "parser.Y"
+-    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 787:
+ #line 1950 "parser.Y"
+-    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-3].integer,yyvsp[-2].integer,
+-	    (CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].integer),
++	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 788:
+ #line 1953 "parser.Y"
+-    {FRB->markerLoadFitsCmd(yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].str);;}
++    {FRB->markerLoadFitsCmd((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].integer), (yyvsp[(5) - (5)].str));;}
+     break;
+ 
+   case 789:
+ #line 1956 "parser.Y"
+-    {FRB->markerMoveCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerMoveCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 790:
+@@ -7647,12 +7980,12 @@
+ 
+   case 792:
+ #line 1959 "parser.Y"
+-    {FRB->markerMoveBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerMoveBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 793:
+ #line 1960 "parser.Y"
+-    {FRB->markerMoveMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerMoveMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 794:
+@@ -7662,82 +7995,82 @@
+ 
+   case 795:
+ #line 1963 "parser.Y"
+-    {FRB->markerMoveToCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
++    {FRB->markerMoveToCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(2) - (4)].integer), (SkyFrame)(yyvsp[(3) - (4)].integer));;}
+     break;
+ 
+   case 798:
+ #line 1970 "parser.Y"
+-    {setProps(&currentProps,yyvsp[-2].integer,yyvsp[0].integer);;}
++    {setProps(&currentProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 799:
+ #line 1971 "parser.Y"
+-    {strncpy(currentColor,yyvsp[0].str,16);;}
++    {strncpy(currentColor,(yyvsp[(3) - (3)].str),16);;}
+     break;
+ 
+   case 800:
+ #line 1972 "parser.Y"
+-    {currentWidth = yyvsp[0].integer;;}
++    {currentWidth = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 801:
+ #line 1973 "parser.Y"
+-    {strncpy(currentFont,yyvsp[0].str,32);;}
++    {strncpy(currentFont,(yyvsp[(3) - (3)].str),32);;}
+     break;
+ 
+   case 802:
+ #line 1974 "parser.Y"
+-    {strncpy(currentText,yyvsp[0].str,80);;}
++    {strncpy(currentText,(yyvsp[(3) - (3)].str),80);;}
+     break;
+ 
+   case 805:
+ #line 1979 "parser.Y"
+-    {yyval.integer = Marker::NONE;;}
++    {(yyval.integer) = Marker::NONE;;}
+     break;
+ 
+   case 806:
+ #line 1980 "parser.Y"
+-    {yyval.integer = Marker::SELECT;;}
++    {(yyval.integer) = Marker::SELECT;;}
+     break;
+ 
+   case 807:
+ #line 1981 "parser.Y"
+-    {yyval.integer = Marker::HIGHLITE;;}
++    {(yyval.integer) = Marker::HIGHLITE;;}
+     break;
+ 
+   case 808:
+ #line 1982 "parser.Y"
+-    {yyval.integer = Marker::EDIT;;}
++    {(yyval.integer) = Marker::EDIT;;}
+     break;
+ 
+   case 809:
+ #line 1983 "parser.Y"
+-    {yyval.integer = Marker::MOVE;;}
++    {(yyval.integer) = Marker::MOVE;;}
+     break;
+ 
+   case 810:
+ #line 1984 "parser.Y"
+-    {yyval.integer = Marker::ROTATE;;}
++    {(yyval.integer) = Marker::ROTATE;;}
+     break;
+ 
+   case 811:
+ #line 1985 "parser.Y"
+-    {yyval.integer = Marker::DELETE;;}
++    {(yyval.integer) = Marker::DELETE;;}
+     break;
+ 
+   case 812:
+ #line 1986 "parser.Y"
+-    {yyval.integer = Marker::INCLUDE;;}
++    {(yyval.integer) = Marker::INCLUDE;;}
+     break;
+ 
+   case 813:
+ #line 1987 "parser.Y"
+-    {yyval.integer = Marker::SOURCE;;}
++    {(yyval.integer) = Marker::SOURCE;;}
+     break;
+ 
+   case 814:
+ #line 1988 "parser.Y"
+-    {yyval.integer = Marker::FIXED;;}
++    {(yyval.integer) = Marker::FIXED;;}
+     break;
+ 
+   case 817:
+@@ -7757,7 +8090,7 @@
+ 
+   case 821:
+ #line 2000 "parser.Y"
+-    {FRB->markerSelectOnlyCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerSelectOnlyCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 822:
+@@ -7767,12 +8100,12 @@
+ 
+   case 823:
+ #line 2002 "parser.Y"
+-    {FRB->markerSelectToggleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->markerSelectToggleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 826:
+ #line 2010 "parser.Y"
+-    {propQMask |= yyvsp[-2].integer; setProps(&propQValue,yyvsp[-2].integer,yyvsp[0].integer);;}
++    {propQMask |= (yyvsp[(1) - (3)].integer); setProps(&propQValue,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 827:
+@@ -7787,13 +8120,13 @@
+ 
+   case 832:
+ #line 2021 "parser.Y"
+-    {taglist.append(new Tag(yyvsp[0].str));;}
++    {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
+     break;
+ 
+   case 833:
+ #line 2024 "parser.Y"
+     {cblist.append(
+-	new CallBack(FRB->getInterp(),(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str));;}
++	new CallBack(FRB->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
+     break;
+ 
+   case 834:
+@@ -7818,67 +8151,67 @@
+ 
+   case 838:
+ #line 2035 "parser.Y"
+-    {FRB->panCmd(Vector(yyvsp[-3].real,yyvsp[-2].real),Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->panCmd(Vector((yyvsp[(1) - (4)].real),(yyvsp[(2) - (4)].real)),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 839:
+ #line 2037 "parser.Y"
+-    {FRB->panCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->panCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 840:
+ #line 2039 "parser.Y"
+-    {FRB->panCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
++    {FRB->panCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+     break;
+ 
+   case 842:
+ #line 2041 "parser.Y"
+-    {FRB->panBBoxCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->panBBoxCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 844:
+ #line 2043 "parser.Y"
+-    {FRB->panPreserveCmd(yyvsp[0].integer);;}
++    {FRB->panPreserveCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 845:
+ #line 2047 "parser.Y"
+-    {FRB->panToCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->panToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
+     break;
+ 
+   case 846:
+ #line 2049 "parser.Y"
+-    {FRB->panToCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
++    {FRB->panToCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
+     break;
+ 
+   case 847:
+ #line 2052 "parser.Y"
+-    {FRB->panMotionBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->panMotionBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 848:
+ #line 2053 "parser.Y"
+-    {FRB->panMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->panMotionCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 849:
+ #line 2054 "parser.Y"
+-    {FRB->panMotionEndCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->panMotionEndCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 850:
+ #line 2057 "parser.Y"
+-    {FRB->pannerCmd(yyvsp[0].integer);;}
++    {FRB->pannerCmd((yyvsp[(1) - (1)].integer));;}
+     break;
+ 
+   case 851:
+ #line 2059 "parser.Y"
+-    {FRB->pannerCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->pannerCmd((CoordSystem)(yyvsp[(2) - (3)].integer),(SkyFrame)(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 852:
+ #line 2060 "parser.Y"
+-    {FRB->pannerCmd(yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->pannerCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 853:
+@@ -7888,47 +8221,47 @@
+ 
+   case 854:
+ #line 2065 "parser.Y"
+-    {FRB->psColorSpaceCmd((Widget::PSColorSpace)yyvsp[0].integer);;}
++    {FRB->psColorSpaceCmd((Widget::PSColorSpace)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 855:
+ #line 2066 "parser.Y"
+-    {FRB->psLevelCmd(yyvsp[0].integer);;}
++    {FRB->psLevelCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 856:
+ #line 2067 "parser.Y"
+-    {FRB->psResolutionCmd(yyvsp[0].integer);;}
++    {FRB->psResolutionCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 857:
+ #line 2070 "parser.Y"
+-    {yyval.integer = Widget::BW;;}
++    {(yyval.integer) = Widget::BW;;}
+     break;
+ 
+   case 858:
+ #line 2071 "parser.Y"
+-    {yyval.integer = Widget::GRAY;;}
++    {(yyval.integer) = Widget::GRAY;;}
+     break;
+ 
+   case 859:
+ #line 2072 "parser.Y"
+-    {yyval.integer = Widget::RGB;;}
++    {(yyval.integer) = Widget::RGB;;}
+     break;
+ 
+   case 860:
+ #line 2073 "parser.Y"
+-    {yyval.integer = Widget::CMYK;;}
++    {(yyval.integer) = Widget::CMYK;;}
+     break;
+ 
+   case 863:
+ #line 2081 "parser.Y"
+-    {FRB->regionHighliteBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->regionHighliteBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 864:
+ #line 2083 "parser.Y"
+-    {FRB->regionHighliteMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->regionHighliteMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 865:
+@@ -7943,12 +8276,12 @@
+ 
+   case 867:
+ #line 2089 "parser.Y"
+-    {FRB->regionSelectBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->regionSelectBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 868:
+ #line 2090 "parser.Y"
+-    {FRB->regionSelectMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->regionSelectMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 869:
+@@ -7963,37 +8296,37 @@
+ 
+   case 871:
+ #line 2095 "parser.Y"
+-    {FRB->setRGBChannelCmd(yyvsp[0].str);;}
++    {FRB->setRGBChannelCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 872:
+ #line 2096 "parser.Y"
+-    {FRB->setRGBSystemCmd((CoordSystem)yyvsp[0].integer);;}
++    {FRB->setRGBSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 873:
+ #line 2097 "parser.Y"
+-    {FRB->setRGBViewCmd(yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->setRGBViewCmd((yyvsp[(2) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 874:
+ #line 2100 "parser.Y"
+-    {FRB->rotateCmd(degToRad(yyvsp[0].real));;}
++    {FRB->rotateCmd(degToRad((yyvsp[(1) - (1)].real)));;}
+     break;
+ 
+   case 875:
+ #line 2101 "parser.Y"
+-    {FRB->rotateCmd(degToRad(yyvsp[-1].real));;}
++    {FRB->rotateCmd(degToRad((yyvsp[(1) - (2)].real)));;}
+     break;
+ 
+   case 877:
+ #line 2103 "parser.Y"
+-    {FRB->rotateToCmd(degToRad(yyvsp[0].real));;}
++    {FRB->rotateToCmd(degToRad((yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 878:
+ #line 2104 "parser.Y"
+-    {FRB->rotateToCmd(degToRad(yyvsp[-1].real));;}
++    {FRB->rotateToCmd(degToRad((yyvsp[(2) - (3)].real)));;}
+     break;
+ 
+   case 879:
+@@ -8003,7 +8336,7 @@
+ 
+   case 880:
+ #line 2108 "parser.Y"
+-    {FRB->rotateMotionCmd(degToRad(yyvsp[0].real));;}
++    {FRB->rotateMotionCmd(degToRad((yyvsp[(1) - (1)].real)));;}
+     break;
+ 
+   case 881:
+@@ -8013,67 +8346,67 @@
+ 
+   case 884:
+ #line 2116 "parser.Y"
+-    {FRB->saveArrayFileCmd(yyvsp[0].str);;}
++    {FRB->saveArrayFileCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 885:
+ #line 2117 "parser.Y"
+-    {FRB->saveArrayChannelCmd(yyvsp[0].str);;}
++    {FRB->saveArrayChannelCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 886:
+ #line 2118 "parser.Y"
+-    {FRB->saveArraySocketCmd(yyvsp[0].integer);;}
++    {FRB->saveArraySocketCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 890:
+ #line 2126 "parser.Y"
+-    {FRB->saveFitsImageFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsImageFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 891:
+ #line 2127 "parser.Y"
+-    {FRB->saveFitsImageChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsImageChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 892:
+ #line 2128 "parser.Y"
+-    {FRB->saveFitsImageSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->saveFitsImageSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 893:
+ #line 2131 "parser.Y"
+-    {FRB->saveFitsTableFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsTableFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 894:
+ #line 2132 "parser.Y"
+-    {FRB->saveFitsTableChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsTableChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 895:
+ #line 2133 "parser.Y"
+-    {FRB->saveFitsTableSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->saveFitsTableSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 896:
+ #line 2137 "parser.Y"
+-    {FRB->saveFitsResampleFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsResampleFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 897:
+ #line 2139 "parser.Y"
+-    {FRB->saveFitsResampleChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
++    {FRB->saveFitsResampleChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 898:
+ #line 2141 "parser.Y"
+-    {FRB->saveFitsResampleSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
++    {FRB->saveFitsResampleSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 899:
+ #line 2145 "parser.Y"
+-    {FRB->smoothCmd((FrameBase::SmoothFunction)yyvsp[-1].integer,yyvsp[0].integer);;}
++    {FRB->smoothCmd((FrameBase::SmoothFunction)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 900:
+@@ -8083,17 +8416,17 @@
+ 
+   case 901:
+ #line 2149 "parser.Y"
+-    {yyval.integer = FrameBase::BOXCAR;;}
++    {(yyval.integer) = FrameBase::BOXCAR;;}
+     break;
+ 
+   case 902:
+ #line 2150 "parser.Y"
+-    {yyval.integer = FrameBase::GAUSSIAN;;}
++    {(yyval.integer) = FrameBase::GAUSSIAN;;}
+     break;
+ 
+   case 903:
+ #line 2151 "parser.Y"
+-    {yyval.integer = FrameBase::TOPHAT;;}
++    {(yyval.integer) = FrameBase::TOPHAT;;}
+     break;
+ 
+   case 904:
+@@ -8103,7 +8436,7 @@
+ 
+   case 905:
+ #line 2156 "parser.Y"
+-    {FRB->updateFitsCmd(yyvsp[-4].integer,BBox(yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].real,yyvsp[0].real),0);;}
++    {FRB->updateFitsCmd((yyvsp[(1) - (5)].integer),BBox((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)),0);;}
+     break;
+ 
+   case 906:
+@@ -8113,32 +8446,32 @@
+ 
+   case 907:
+ #line 2159 "parser.Y"
+-    {FRB->updateFitsCmd(yyvsp[-4].integer,BBox(yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].real,yyvsp[0].real),1);;}
++    {FRB->updateFitsCmd((yyvsp[(2) - (6)].integer),BBox((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),1);;}
+     break;
+ 
+   case 908:
+ #line 2160 "parser.Y"
+-    {FRB->sliceCmd(yyvsp[0].integer);;}
++    {FRB->sliceCmd((yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 909:
+ #line 2163 "parser.Y"
+-    {FRB->warpCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->warpCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 910:
+ #line 2164 "parser.Y"
+-    {FRB->warpToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->warpToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
+     break;
+ 
+   case 911:
+ #line 2168 "parser.Y"
+-    {FRB->wcsAlignCmd(yyvsp[-2].integer,(CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
++    {FRB->wcsAlignCmd((yyvsp[(2) - (4)].integer),(CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
+     break;
+ 
+   case 912:
+ #line 2170 "parser.Y"
+-    {FRB->wcsZoomCmd((CoordSystem)yyvsp[-2].integer, Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->wcsZoomCmd((CoordSystem)(yyvsp[(2) - (4)].integer), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
+     break;
+ 
+   case 913:
+@@ -8148,38 +8481,38 @@
+ 
+   case 914:
+ #line 2172 "parser.Y"
+-    {FRB->wcsReplaceCmd(yyvsp[0].integer);;}
++    {FRB->wcsReplaceCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 915:
+ #line 2173 "parser.Y"
+-    {FRB->wcsReplaceCmd(yyvsp[0].str);;}
++    {FRB->wcsReplaceCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 916:
+ #line 2174 "parser.Y"
+-    {FRB->wcsAppendCmd(yyvsp[0].integer);;}
++    {FRB->wcsAppendCmd((yyvsp[(2) - (2)].integer));;}
+     break;
+ 
+   case 917:
+ #line 2175 "parser.Y"
+-    {FRB->wcsAppendCmd(yyvsp[0].str);;}
++    {FRB->wcsAppendCmd((yyvsp[(2) - (2)].str));;}
+     break;
+ 
+   case 918:
+ #line 2178 "parser.Y"
+-    {FRB->zoomCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->zoomCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 919:
+ #line 2180 "parser.Y"
+-    {FRB->zoomAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-1].real,yyvsp[0].real),(InternalSystem)yyvsp[-2].integer);;}
++    {FRB->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),(InternalSystem)(yyvsp[(4) - (6)].integer));;}
+     break;
+ 
+   case 920:
+ #line 2182 "parser.Y"
+-    {FRB->zoomAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[0].vector),
+-	    (CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
++    {FRB->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(6) - (6)].vector)),
++	    (CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
+     break;
+ 
+   case 922:
+@@ -8189,36 +8522,35 @@
+ 
+   case 923:
+ #line 2188 "parser.Y"
+-    {FRB->zoomToFitCmd(yyvsp[0].real);;}
++    {FRB->zoomToFitCmd((yyvsp[(2) - (2)].real));;}
+     break;
+ 
+   case 924:
+ #line 2189 "parser.Y"
+-    {FRB->zoomToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
++    {FRB->zoomToCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
+     break;
+ 
+   case 925:
+ #line 2191 "parser.Y"
+-    {FRB->zoomToAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-1].real,yyvsp[0].real),
+-	    (InternalSystem)yyvsp[-2].integer);;}
++    {FRB->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),
++	    (InternalSystem)(yyvsp[(4) - (6)].integer));;}
+     break;
+ 
+   case 926:
+ #line 2194 "parser.Y"
+-    {FRB->zoomToAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[0].vector),
+-	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
++    {FRB->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)), Vector((yyvsp[(6) - (6)].vector)),
++	    (CoordSystem)(yyvsp[(4) - (6)].integer), (SkyFrame)(yyvsp[(5) - (6)].integer));;}
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 8548 "parser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 8217 "parser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -8247,99 +8579,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -8349,15 +8647,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -8386,9 +8686,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -8396,11 +8697,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -8420,21 +8722,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/ds9parser.H
++++ saods9-4.0b7/saotk/frame/ds9parser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -152,6 +162,7 @@
+      SYM_XOR = 378
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -277,16 +288,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 127 "ds9parser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 290 "ds9parser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 302 "ds9parser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -294,5 +307,3 @@
+ 
+ extern YYSTYPE mklval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/xyparser.H
++++ saods9-4.0b7/saotk/frame/xyparser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -85,6 +95,7 @@
+      WCSZ_ = 311
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define HOUR 260
+@@ -143,16 +154,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 40 "xyparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 156 "xyparser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 168 "xyparser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -160,5 +173,3 @@
+ 
+ extern YYSTYPE xylval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/saoparser.C
++++ saods9-4.0b7/saotk/frame/saoparser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse saoparse
+ #define yylex   saolex
+ #define yyerror saoerror
+@@ -80,6 +92,7 @@
+      VERSION_ = 273
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -112,8 +125,8 @@
+ #define DISCARD_(x) {yyclearin; saoDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -166,16 +179,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 56 "saoparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 179 "saoparser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 198 "saoparser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -186,56 +206,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 191 "saoparser.C"
++/* Line 216 of yacc.c.  */
++#line 211 "saoparser.C"
++
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
++
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
++# endif
++#endif
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -245,24 +380,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -280,39 +415,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
+-
+-#endif
++    while (YYID (0))
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+ #endif
+ 
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  3
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   160
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  30
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  31
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  59
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  139
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   273
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       19,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -347,7 +476,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned char yyprhs[] =
++static const yytype_uint8 yyprhs[] =
+ {
+        0,     0,     3,     7,    11,    14,    15,    18,    20,    24,
+       26,    28,    30,    32,    34,    36,    38,    40,    41,    43,
+@@ -357,8 +486,8 @@
+      207,   209,   213,   215,   217,   218,   219,   223,   225,   226
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int8 yyrhs[] =
+ {
+       31,     0,    -1,    46,    32,    56,    -1,    32,    33,    34,
+       -1,    33,    34,    -1,    -1,    10,    36,    -1,    18,    -1,
+@@ -387,7 +516,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,    93,    93,    96,    97,   100,   101,   102,   103,   104,
+      107,   108,   109,   112,   113,   116,   117,   120,   121,   124,
+@@ -398,9 +527,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "STRING", "EOF_",
+@@ -418,7 +547,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,    10,
+@@ -427,7 +556,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,    30,    31,    32,    32,    33,    33,    33,    33,    33,
+       34,    34,    34,    35,    35,    36,    36,    37,    37,    38,
+@@ -438,7 +567,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     3,     3,     2,     0,     2,     1,     3,     1,
+        1,     1,     1,     1,     1,     1,     1,     0,     1,     0,
+@@ -451,7 +580,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+       30,     0,    31,     1,     0,     7,    55,    31,     0,    32,
+        9,    16,    15,     6,     0,     0,     2,    12,    10,    11,
+@@ -469,8 +598,8 @@
+        0,    17,    17,    23,    23,    21,    21,    44,    41
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const yysigned_char yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int8 yydefgoto[] =
+ {
+       -1,     1,     7,     8,    20,    44,    13,    53,    35,    59,
+       89,    90,   112,    68,   102,    60,     2,     9,    23,    33,
+@@ -481,7 +610,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -71
+-static const short yypact[] =
++static const yytype_int16 yypact[] =
+ {
+      -71,    21,   119,   -71,    11,   -71,   -71,   116,    16,    31,
+      -71,   -71,   -71,   -71,    22,    16,   -71,   -71,   -71,   -71,
+@@ -500,7 +629,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const yysigned_char yypgoto[] =
++static const yytype_int8 yypgoto[] =
+ {
+      -71,   -71,   -71,    80,    71,   -10,   -71,   -28,   -27,    19,
+      -70,   -71,   -40,    -2,   -71,   -29,   -71,   -71,   -71,   -71,
+@@ -513,7 +642,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -55
+-static const short yytable[] =
++static const yytype_int16 yytable[] =
+ {
+       36,    37,    38,    39,    16,    41,    45,    46,    47,    48,
+       49,    92,    51,    50,    66,    94,    69,    54,    55,    56,
+@@ -534,7 +663,7 @@
+       58
+ };
+ 
+-static const short yycheck[] =
++static const yytype_int16 yycheck[] =
+ {
+       27,    28,    29,    30,     7,    32,    35,    36,    37,    38,
+       39,    81,    41,    40,    54,    85,    56,    45,    46,    47,
+@@ -557,7 +686,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,    31,    46,     0,    10,    18,    29,    32,    33,    47,
+       57,    13,    14,    36,    58,    33,    56,     6,    19,    20,
+@@ -575,22 +704,6 @@
+       37,    43,    43,    37,    37,    40,    40,    39,    39
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -616,30 +729,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -660,42 +806,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -704,45 +904,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -757,13 +964,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -773,45 +976,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -821,70 +1026,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
+ 
+-
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  if (! yyres)
++    return yystrlen (yystr);
++
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
++
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -892,13 +1219,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -907,10 +1234,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -923,14 +1250,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -941,13 +1272,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -958,18 +1295,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -978,9 +1315,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -1004,8 +1341,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -1018,18 +1354,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -1040,21 +1376,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -1085,19 +1421,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1112,7 +1446,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1132,22 +1466,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -1194,12 +1527,12 @@
+ 
+   case 13:
+ #line 112 "saoparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 14:
+ #line 113 "saoparser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 15:
+@@ -1214,46 +1547,46 @@
+ 
+   case 23:
+ #line 132 "saoparser.Y"
+-    {yyval.real = 0;;}
++    {(yyval.real) = 0;;}
+     break;
+ 
+   case 24:
+ #line 133 "saoparser.Y"
+-    {yyval.real = yyvsp[0].real;;}
++    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 25:
+ #line 136 "saoparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 26:
+ #line 139 "saoparser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+     break;
+ 
+   case 27:
+ #line 143 "saoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 28:
+ #line 151 "saoparser.Y"
+-    {yyval.integer = yyvsp[0].integer;;}
++    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 29:
+ #line 155 "saoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1289,15 +1622,15 @@
+ 
+   case 35:
+ #line 180 "saoparser.Y"
+-    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
++	    (yyvsp[(5) - (7)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 36:
+ #line 184 "saoparser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-6].vector),
+-	    yyvsp[-4].real,yyvsp[-2].real,1,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    (yyvsp[(5) - (9)].real),(yyvsp[(7) - (9)].real),1,
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1309,9 +1642,9 @@
+   case 38:
+ #line 189 "saoparser.Y"
+     {
+-	  aAnnuli[0] = yyvsp[-7].real;
+-	  aAnnuli[1] = yyvsp[-5].real;
+-	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
++	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
++	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
++	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
+ 	    aNum,aAnnuli,
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -1319,8 +1652,8 @@
+ 
+   case 39:
+ #line 197 "saoparser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-8].vector),
+-	    yyvsp[-6].real,yyvsp[-4].real,yyvsp[-2].integer,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (11)].vector)),
++	    (yyvsp[(5) - (11)].real),(yyvsp[(7) - (11)].real),(yyvsp[(9) - (11)].integer),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1329,16 +1662,16 @@
+     {
+ 	  // for ellipse annulus
+ 	  aStatus = 1;
+-	  aCenter = Vector(yyvsp[-6].vector);
+-	  aAngle = yyvsp[-2].real;
+-	  aVector[0] = Vector(yyvsp[-4].vector);
++	  aCenter = Vector((yyvsp[(3) - (9)].vector));
++	  aAngle = (yyvsp[(7) - (9)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
+ 	  aNum = 1;
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createEllipseCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++	  FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+     break;
+@@ -1347,7 +1680,7 @@
+ #line 220 "saoparser.Y"
+     {	
+ 	  aStatus = 2;
+-	  aVector[aNum++] = Vector(yyvsp[-13].vector);
++	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+@@ -1356,25 +1689,25 @@
+     {
+ 	  // for box annulus
+ 	  aStatus = 3;
+-	  aCenter = Vector(yyvsp[-6].vector);
+-	  aAngle = yyvsp[-2].real;
+-	  aVector[0] = Vector(yyvsp[-4].vector);
++	  aCenter = Vector((yyvsp[(3) - (9)].vector));
++	  aAngle = (yyvsp[(7) - (9)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
+ 	  aNum = 1;
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createBoxCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++	  FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);
+ 	;}
+     break;
+ 
+   case 43:
+ #line 242 "saoparser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1382,13 +1715,13 @@
+ #line 248 "saoparser.Y"
+     {	
+ 	  aStatus = 4;
+-	  aVector[aNum++] = Vector(yyvsp[-13].vector);
++	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+   case 45:
+ #line 254 "saoparser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
+ 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+@@ -1405,12 +1738,12 @@
+ 
+   case 50:
+ #line 266 "saoparser.Y"
+-    {polylist.append(new Vertex(yyvsp[0].vector));;}
++    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
+     break;
+ 
+   case 53:
+ #line 273 "saoparser.Y"
+-    {aAnnuli[aNum++] = yyvsp[0].real;;}
++    {aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 54:
+@@ -1454,19 +1787,18 @@
+ 
+   case 59:
+ #line 309 "saoparser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);;}
++    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);;}
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 1796 "saoparser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 1465 "saoparser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -1495,99 +1827,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -1597,15 +1895,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -1634,9 +1934,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -1644,11 +1945,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -1668,21 +1970,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/ds9parser.Y
++++ saods9-4.0b7/saotk/frame/ds9parser.Y
+@@ -12,8 +12,8 @@
+ #define DISCARD_(x) {yyclearin; mkDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/prosparser.H
++++ saods9-4.0b7/saotk/frame/prosparser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -62,6 +72,7 @@
+      VERSION_ = 288
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -97,16 +108,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 65 "prosparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 110 "prosparser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 122 "prosparser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -114,5 +127,3 @@
+ 
+ extern YYSTYPE proslval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/ciaolex.C
++++ saods9-4.0b7/saotk/frame/ciaolex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/ciaolex.C,v 1.79 2005/08/24 20:37:45 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -412,7 +416,7 @@
+   extern ciaoFlexLexer* ciaolexx;
+   extern int ciaosign;
+ /* rules */
+-#line 416 "ciaolex.C"
++#line 420 "ciaolex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -536,13 +540,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 28 "ciaolex.L"
+ 
+ 
+-#line 546 "ciaolex.C"
++#line 550 "ciaolex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -817,7 +821,7 @@
+ #line 121 "ciaolex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 821 "ciaolex.C"
++#line 825 "ciaolex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -1333,6 +1337,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/xyparser.Y
++++ saods9-4.0b7/saotk/frame/xyparser.Y
+@@ -10,8 +10,8 @@
+ #define FITSPTR (FR->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/callback.C
++++ saods9-4.0b7/saotk/frame/callback.C
+@@ -2,8 +2,9 @@
+ // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+ // For conditions of distribution and use, see copyright notice in "copyright"
+ 
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <cstring>
++#include <iostream>
+ 
+ #include "callback.h"
+ 
+--- saods9-4.0b7.orig/saotk/frame/parser.Y
++++ saods9-4.0b7/saotk/frame/parser.Y
+@@ -12,8 +12,8 @@
+ #define FITSPTR (FRB->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "frame.h"
+--- saods9-4.0b7.orig/saotk/frame/saolex.C
++++ saods9-4.0b7/saotk/frame/saolex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/saolex.C,v 1.76 2005/08/11 21:32:52 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -424,7 +428,7 @@
+ #define DISCARD 1
+ 
+ /* rules */
+-#line 428 "saolex.C"
++#line 432 "saolex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -548,13 +552,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 29 "saolex.L"
+ 
+ 
+-#line 558 "saolex.C"
++#line 562 "saolex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -808,7 +812,7 @@
+ #line 109 "saolex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 812 "saolex.C"
++#line 816 "saolex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -1324,6 +1328,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/saoparser.H
++++ saods9-4.0b7/saotk/frame/saoparser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -47,6 +57,7 @@
+      VERSION_ = 273
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -67,16 +78,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 56 "saoparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 80 "saoparser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 92 "saoparser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -84,5 +97,3 @@
+ 
+ extern YYSTYPE saolval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/ciaoparser.H
++++ saods9-4.0b7/saotk/frame/ciaoparser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -52,6 +62,7 @@
+      VERSION_ = 278
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define HOUR 260
+@@ -77,16 +88,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 43 "ciaoparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 90 "ciaoparser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 102 "ciaoparser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -94,5 +107,3 @@
+ 
+ extern YYSTYPE ciaolval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/tngparser.H
++++ saods9-4.0b7/saotk/frame/tngparser.H
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton interface for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,13 +17,21 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+ /* Tokens.  */
+ #ifndef YYTOKENTYPE
+@@ -70,6 +80,7 @@
+      YELLOW_ = 296
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -113,16 +124,18 @@
+ 
+ 
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 60 "tngparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 1275 of yacc.c.  */
+-#line 126 "tngparser.H"
++}
++/* Line 1529 of yacc.c.  */
++#line 138 "tngparser.H"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -130,5 +143,3 @@
+ 
+ extern YYSTYPE tnglval;
+ 
+-
+-
+--- saods9-4.0b7.orig/saotk/frame/grid.C
++++ saods9-4.0b7/saotk/frame/grid.C
+@@ -2,7 +2,7 @@
+ // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+ // For conditions of distribution and use, see copyright notice in "copyright"
+ 
+-#include <iomanip.h>
++#include <iomanip>
+ 
+ #include "grid.h"
+ #include "util.h"
+--- saods9-4.0b7.orig/saotk/frame/xylex.C
++++ saods9-4.0b7/saotk/frame/xylex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/xylex.C,v 1.76 2005/08/11 21:32:53 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -446,7 +450,7 @@
+   extern xyFlexLexer* xylexx;
+   extern int xysign;
+ /* rules */
+-#line 450 "xylex.C"
++#line 454 "xylex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -570,13 +574,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 28 "xylex.L"
+ 
+ 
+-#line 580 "xylex.C"
++#line 584 "xylex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -997,7 +1001,7 @@
+ #line 145 "xylex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 1001 "xylex.C"
++#line 1005 "xylex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -1513,6 +1517,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/ds9lex.C
++++ saods9-4.0b7/saotk/frame/ds9lex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/ds9lex.C,v 1.98 2005/08/11 21:32:11 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -628,7 +632,7 @@
+ #define DISCARD 1
+ 
+ /* rules */
+-#line 632 "ds9lex.C"
++#line 636 "ds9lex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -752,13 +756,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 30 "ds9lex.L"
+ 
+ 
+-#line 762 "ds9lex.C"
++#line 766 "ds9lex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -1579,7 +1583,7 @@
+ #line 272 "ds9lex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 1583 "ds9lex.C"
++#line 1587 "ds9lex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -2095,6 +2099,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/ciaoparser.Y
++++ saods9-4.0b7/saotk/frame/ciaoparser.Y
+@@ -10,8 +10,8 @@
+ #define FITSPTR (FR->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/prosparser.Y
++++ saods9-4.0b7/saotk/frame/prosparser.Y
+@@ -12,8 +12,8 @@
+ #define DISCARD_(x) {yyclearin; prosDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/proslex.C
++++ saods9-4.0b7/saotk/frame/proslex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/proslex.C,v 1.76 2005/08/11 21:32:51 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -482,7 +486,7 @@
+ #define DISCARD 1
+ 
+ /* rules */
+-#line 486 "proslex.C"
++#line 490 "proslex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -606,13 +610,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 30 "proslex.L"
+ 
+ 
+-#line 616 "proslex.C"
++#line 620 "proslex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -986,7 +990,7 @@
+ #line 172 "proslex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 990 "proslex.C"
++#line 994 "proslex.C"
+ 
+ 	case YY_END_OF_BUFFER:
+ 		{
+@@ -1502,6 +1506,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/ds9parser.C
++++ saods9-4.0b7/saotk/frame/ds9parser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse mkparse
+ #define yylex   mklex
+ #define yyerror mkerror
+@@ -185,6 +197,7 @@
+      SYM_XOR = 378
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -322,8 +335,8 @@
+ #define DISCARD_(x) {yyclearin; mkDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -447,16 +460,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 127 "ds9parser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 460 "ds9parser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 479 "ds9parser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -467,56 +487,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 472 "ds9parser.C"
++/* Line 216 of yacc.c.  */
++#line 492 "ds9parser.C"
++
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
++
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
++# endif
++#endif
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -526,24 +661,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -561,39 +696,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
+-
+-#endif
++    while (YYID (0))
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+ #endif
+ 
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  3
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   2269
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  136
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  71
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  306
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  792
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   378
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      125,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -638,7 +767,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned short yyprhs[] =
++static const yytype_uint16 yyprhs[] =
+ {
+        0,     0,     3,     7,    11,    14,    15,    18,    20,    24,
+       27,    31,    32,    36,    37,    41,    42,    46,    50,    55,
+@@ -673,8 +802,8 @@
+     1202,  1206,  1208,  1210,  1214,  1216,  1220
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const short yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int16 yyrhs[] =
+ {
+      137,     0,    -1,   180,   138,   206,    -1,   138,   139,   153,
+       -1,   139,   153,    -1,    -1,    35,   155,    -1,    84,    -1,
+@@ -802,7 +931,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,   281,   281,   284,   285,   288,   289,   290,   292,   293,
+      294,   296,   296,   297,   297,   298,   298,   300,   301,   303,
+@@ -838,9 +967,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "STRING", "HOUR",
+@@ -880,7 +1009,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -900,7 +1029,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,   136,   137,   138,   138,   139,   139,   139,   139,   139,
+      139,   140,   139,   141,   139,   142,   139,   139,   139,   139,
+@@ -936,7 +1065,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     3,     3,     2,     0,     2,     1,     3,     2,
+        3,     0,     3,     0,     3,     0,     3,     3,     4,     1,
+@@ -974,7 +1103,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned short yydefact[] =
++static const yytype_uint16 yydefact[] =
+ {
+      193,     0,   236,     1,    95,   126,     0,    94,   131,   125,
+      127,   130,     0,   129,    92,   128,    15,    93,     0,     7,
+@@ -1058,8 +1187,8 @@
+      270,   263
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const short yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int16 yydefgoto[] =
+ {
+       -1,     1,    49,    50,    94,    95,    83,    51,    86,   113,
+      191,   371,   432,   501,   452,   453,   518,    93,   250,    58,
+@@ -1074,7 +1203,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -623
+-static const short yypact[] =
++static const yytype_int16 yypact[] =
+ {
+     -623,    44,  1482,  -623,  -623,  -623,    -4,  -623,  -623,  -623,
+     -623,  -623,   865,  -623,  -623,  -623,  -623,  -623,    33,  -623,
+@@ -1159,7 +1288,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const short yypgoto[] =
++static const yytype_int16 yypgoto[] =
+ {
+     -623,  -623,  -623,   457,  -623,  -623,  -623,  -623,  -623,   103,
+     -623,   623,  -623,  -623,  -512,  -623,  -623,   420,   -80,  -623,
+@@ -1176,7 +1305,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -307
+-static const short yytable[] =
++static const yytype_int16 yytable[] =
+ {
+      114,   592,   593,   204,   595,   206,   208,   209,   210,   211,
+       89,   -53,   214,   215,   216,   217,   218,   219,   -29,   221,
+@@ -1407,7 +1536,7 @@
+       38,    39,    40,    41,    42,    43,    44,    45,    46,    47
+ };
+ 
+-static const short yycheck[] =
++static const yytype_int16 yycheck[] =
+ {
+       81,   513,   514,   124,   516,   126,   127,   128,   129,   130,
+       49,     5,   133,   134,   135,   136,   137,   138,     5,   140,
+@@ -1640,7 +1769,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,   137,   180,     0,    17,    22,    35,    38,    40,    48,
+       49,    51,    52,    54,    56,    58,    60,    66,    81,    84,
+@@ -1724,22 +1853,6 @@
+      147,   147
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -1765,30 +1878,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -1809,42 +1955,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -1853,45 +2053,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -1906,13 +2113,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -1922,45 +2125,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -1970,70 +2175,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
++
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
+ 
+-
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
++
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -2041,13 +2368,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -2056,10 +2383,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -2072,14 +2399,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -2090,13 +2421,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -2107,18 +2444,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -2127,9 +2464,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -2153,8 +2490,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -2167,18 +2503,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -2189,21 +2525,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -2234,19 +2570,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -2261,7 +2595,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -2281,22 +2615,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -2338,22 +2671,22 @@
+ 
+   case 9:
+ #line 293 "ds9parser.Y"
+-    {globalTile = yyvsp[0].integer;;}
++    {globalTile = (yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 10:
+ #line 294 "ds9parser.Y"
+-    {globalTile = yyvsp[0].integer;;}
++    {globalTile = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 11:
+ #line 296 "ds9parser.Y"
+-    {globalSystem=(CoordSystem)yyvsp[0].integer;;}
++    {globalSystem=(CoordSystem)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 13:
+ #line 297 "ds9parser.Y"
+-    {globalSystem=globalWCS; globalSky=(SkyFrame)yyvsp[0].integer;;}
++    {globalSystem=globalWCS; globalSky=(SkyFrame)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 15:
+@@ -2378,7 +2711,7 @@
+ 
+   case 27:
+ #line 314 "ds9parser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);}
++    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
+     break;
+ 
+   case 29:
+@@ -2388,7 +2721,7 @@
+ 
+   case 30:
+ #line 317 "ds9parser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);}
++    {strncpy(localComment,(yyvsp[(4) - (5)].str),80);}
+     break;
+ 
+   case 32:
+@@ -2398,7 +2731,7 @@
+ 
+   case 33:
+ #line 321 "ds9parser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);}
++    {strncpy(localComment,(yyvsp[(2) - (3)].str),80);}
+     break;
+ 
+   case 35:
+@@ -2408,7 +2741,7 @@
+ 
+   case 36:
+ #line 323 "ds9parser.Y"
+-    {strncpy(localComment,yyvsp[-1].str,80);}
++    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
+     break;
+ 
+   case 39:
+@@ -2418,12 +2751,12 @@
+ 
+   case 40:
+ #line 331 "ds9parser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 41:
+ #line 332 "ds9parser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 42:
+@@ -2438,47 +2771,47 @@
+ 
+   case 44:
+ #line 339 "ds9parser.Y"
+-    {yyval.integer=(yyvsp[0].integer ? 1 : 0);;}
++    {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
+     break;
+ 
+   case 45:
+ #line 341 "ds9parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 46:
+ #line 342 "ds9parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 47:
+ #line 343 "ds9parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 48:
+ #line 344 "ds9parser.Y"
+-    {yyval.integer=1;;}
++    {(yyval.integer)=1;;}
+     break;
+ 
+   case 49:
+ #line 346 "ds9parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 50:
+ #line 347 "ds9parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 51:
+ #line 348 "ds9parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 52:
+ #line 349 "ds9parser.Y"
+-    {yyval.integer=0;;}
++    {(yyval.integer)=0;;}
+     break;
+ 
+   case 59:
+@@ -2498,127 +2831,127 @@
+ 
+   case 62:
+ #line 369 "ds9parser.Y"
+-    {yyval.real = FR->mapAngleToRef(0,localSystem,localSky);;}
++    {(yyval.real) = FR->mapAngleToRef(0,localSystem,localSky);;}
+     break;
+ 
+   case 63:
+ #line 370 "ds9parser.Y"
+-    {yyval.real = yyvsp[0].real;;}
++    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 64:
+ #line 373 "ds9parser.Y"
+-    {yyval.real = FR->mapAngleToRef(degToRad(yyvsp[0].real),localSystem,localSky);;}
++    {(yyval.real) = FR->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
+     break;
+ 
+   case 65:
+ #line 374 "ds9parser.Y"
+-    {yyval.real = FR->mapAngleToRef(degToRad(yyvsp[0].real),localSystem,localSky);;}
++    {(yyval.real) = FR->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
+     break;
+ 
+   case 66:
+ #line 375 "ds9parser.Y"
+-    {yyval.real = FR->mapAngleToRef(yyvsp[0].real,localSystem,localSky);;}
++    {(yyval.real) = FR->mapAngleToRef((yyvsp[(1) - (1)].real),localSystem,localSky);;}
+     break;
+ 
+   case 67:
+ #line 378 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, localSystem, DEGREES);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), localSystem, DEGREES);;}
+     break;
+ 
+   case 68:
+ #line 379 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, PHYSICAL);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
+     break;
+ 
+   case 69:
+ #line 380 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
+     break;
+ 
+   case 70:
+ #line 381 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), DEGREES);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREES);;}
+     break;
+ 
+   case 71:
+ #line 382 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCMIN);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
+     break;
+ 
+   case 72:
+ #line 383 "ds9parser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCSEC);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
+     break;
+ 
+   case 73:
+ #line 387 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, DEGREES);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, DEGREES);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 74:
+ #line 394 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 75:
+ #line 401 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 76:
+ #line 408 "ds9parser.Y"
+     {
+-	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),DEGREES);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREES);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 77:
+ #line 415 "ds9parser.Y"
+     {
+-	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCMIN);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 78:
+ #line 422 "ds9parser.Y"
+     {
+-	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCSEC);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 79:
+ #line 430 "ds9parser.Y"
+-    {yyval.integer = yyvsp[0].integer;;}
++    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 80:
+ #line 433 "ds9parser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 81:
+@@ -2628,13 +2961,13 @@
+ 	  CoordSystem sys = checkWCSSystem();
+ 	  SkyFrame sky = checkWCSSky();
+ 	  if (sky == GALACTIC || sky == ECLIPTIC) 
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
+ 	  else
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -2647,11 +2980,11 @@
+ #line 451 "ds9parser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(hmsToDegree(mksign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real),dmsToDegree(mksign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(hmsToDegree(mksign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)),dmsToDegree(mksign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -2664,470 +2997,470 @@
+ #line 461 "ds9parser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(dmsToDegree(mksign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),dmsToDegree(mksign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(dmsToDegree(mksign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),dmsToDegree(mksign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 86:
+ #line 470 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 87:
+ #line 477 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), 
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), 
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 88:
+ #line 485 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 89:
+ #line 492 "ds9parser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
+ 	;}
+     break;
+ 
+   case 90:
+ #line 498 "ds9parser.Y"
+     {
+-	  Vector rx = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[-2].real), IMAGE);
+-	  Vector ry = FITSPTR->mapToRef(Vector(yyvsp[0].real,yyvsp[0].real), PHYSICAL);
+-	  yyval.vector[0] = rx[0];
+-	  yyval.vector[1] = ry[0];
+-	  yyval.vector[2] = 1;
++	  Vector rx = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(1) - (3)].real)), IMAGE);
++	  Vector ry = FITSPTR->mapToRef(Vector((yyvsp[(3) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
++	  (yyval.vector)[0] = rx[0];
++	  (yyval.vector)[1] = ry[0];
++	  (yyval.vector)[2] = 1;
+ 	;}
+     break;
+ 
+   case 91:
+ #line 506 "ds9parser.Y"
+     {
+-	  Vector rx = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[-2].real), PHYSICAL);
+-	  Vector ry = FITSPTR->mapToRef(Vector(yyvsp[0].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = rx[0];
+-	  yyval.vector[1] = ry[0];
+-	  yyval.vector[2] = 1;
++	  Vector rx = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(1) - (3)].real)), PHYSICAL);
++	  Vector ry = FITSPTR->mapToRef(Vector((yyvsp[(3) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = rx[0];
++	  (yyval.vector)[1] = ry[0];
++	  (yyval.vector)[2] = 1;
+ 	;}
+     break;
+ 
+   case 92:
+ #line 515 "ds9parser.Y"
+-    {yyval.integer = IMAGE;;}
++    {(yyval.integer) = IMAGE;;}
+     break;
+ 
+   case 93:
+ #line 516 "ds9parser.Y"
+-    {yyval.integer = PHYSICAL;;}
++    {(yyval.integer) = PHYSICAL;;}
+     break;
+ 
+   case 94:
+ #line 517 "ds9parser.Y"
+-    {yyval.integer = DETECTOR;;}
++    {(yyval.integer) = DETECTOR;;}
+     break;
+ 
+   case 95:
+ #line 518 "ds9parser.Y"
+-    {yyval.integer = AMPLIFIER;;}
++    {(yyval.integer) = AMPLIFIER;;}
+     break;
+ 
+   case 96:
+ #line 519 "ds9parser.Y"
+-    {yyval.integer = yyvsp[0].integer; globalWCS = (CoordSystem)yyvsp[0].integer;;}
++    {(yyval.integer) = (yyvsp[(1) - (1)].integer); globalWCS = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 97:
+ #line 522 "ds9parser.Y"
+-    {yyval.integer = WCS;;}
++    {(yyval.integer) = WCS;;}
+     break;
+ 
+   case 98:
+ #line 523 "ds9parser.Y"
+-    {yyval.integer = WCSA;;}
++    {(yyval.integer) = WCSA;;}
+     break;
+ 
+   case 99:
+ #line 524 "ds9parser.Y"
+-    {yyval.integer = WCSB;;}
++    {(yyval.integer) = WCSB;;}
+     break;
+ 
+   case 100:
+ #line 525 "ds9parser.Y"
+-    {yyval.integer = WCSC;;}
++    {(yyval.integer) = WCSC;;}
+     break;
+ 
+   case 101:
+ #line 526 "ds9parser.Y"
+-    {yyval.integer = WCSD;;}
++    {(yyval.integer) = WCSD;;}
+     break;
+ 
+   case 102:
+ #line 527 "ds9parser.Y"
+-    {yyval.integer = WCSE;;}
++    {(yyval.integer) = WCSE;;}
+     break;
+ 
+   case 103:
+ #line 528 "ds9parser.Y"
+-    {yyval.integer = WCSF;;}
++    {(yyval.integer) = WCSF;;}
+     break;
+ 
+   case 104:
+ #line 529 "ds9parser.Y"
+-    {yyval.integer = WCSG;;}
++    {(yyval.integer) = WCSG;;}
+     break;
+ 
+   case 105:
+ #line 530 "ds9parser.Y"
+-    {yyval.integer = WCSH;;}
++    {(yyval.integer) = WCSH;;}
+     break;
+ 
+   case 106:
+ #line 531 "ds9parser.Y"
+-    {yyval.integer = WCSI;;}
++    {(yyval.integer) = WCSI;;}
+     break;
+ 
+   case 107:
+ #line 532 "ds9parser.Y"
+-    {yyval.integer = WCSJ;;}
++    {(yyval.integer) = WCSJ;;}
+     break;
+ 
+   case 108:
+ #line 533 "ds9parser.Y"
+-    {yyval.integer = WCSK;;}
++    {(yyval.integer) = WCSK;;}
+     break;
+ 
+   case 109:
+ #line 534 "ds9parser.Y"
+-    {yyval.integer = WCSL;;}
++    {(yyval.integer) = WCSL;;}
+     break;
+ 
+   case 110:
+ #line 535 "ds9parser.Y"
+-    {yyval.integer = WCSM;;}
++    {(yyval.integer) = WCSM;;}
+     break;
+ 
+   case 111:
+ #line 536 "ds9parser.Y"
+-    {yyval.integer = WCSN;;}
++    {(yyval.integer) = WCSN;;}
+     break;
+ 
+   case 112:
+ #line 537 "ds9parser.Y"
+-    {yyval.integer = WCSO;;}
++    {(yyval.integer) = WCSO;;}
+     break;
+ 
+   case 113:
+ #line 538 "ds9parser.Y"
+-    {yyval.integer = WCSP;;}
++    {(yyval.integer) = WCSP;;}
+     break;
+ 
+   case 114:
+ #line 539 "ds9parser.Y"
+-    {yyval.integer = WCSQ;;}
++    {(yyval.integer) = WCSQ;;}
+     break;
+ 
+   case 115:
+ #line 540 "ds9parser.Y"
+-    {yyval.integer = WCSR;;}
++    {(yyval.integer) = WCSR;;}
+     break;
+ 
+   case 116:
+ #line 541 "ds9parser.Y"
+-    {yyval.integer = WCSS;;}
++    {(yyval.integer) = WCSS;;}
+     break;
+ 
+   case 117:
+ #line 542 "ds9parser.Y"
+-    {yyval.integer = WCST;;}
++    {(yyval.integer) = WCST;;}
+     break;
+ 
+   case 118:
+ #line 543 "ds9parser.Y"
+-    {yyval.integer = WCSU;;}
++    {(yyval.integer) = WCSU;;}
+     break;
+ 
+   case 119:
+ #line 544 "ds9parser.Y"
+-    {yyval.integer = WCSV;;}
++    {(yyval.integer) = WCSV;;}
+     break;
+ 
+   case 120:
+ #line 545 "ds9parser.Y"
+-    {yyval.integer = WCSW;;}
++    {(yyval.integer) = WCSW;;}
+     break;
+ 
+   case 121:
+ #line 546 "ds9parser.Y"
+-    {yyval.integer = WCSX;;}
++    {(yyval.integer) = WCSX;;}
+     break;
+ 
+   case 122:
+ #line 547 "ds9parser.Y"
+-    {yyval.integer = WCSY;;}
++    {(yyval.integer) = WCSY;;}
+     break;
+ 
+   case 123:
+ #line 548 "ds9parser.Y"
+-    {yyval.integer = WCSZ;;}
++    {(yyval.integer) = WCSZ;;}
+     break;
+ 
+   case 124:
+ #line 549 "ds9parser.Y"
+-    {yyval.integer = WCS0;;}
++    {(yyval.integer) = WCS0;;}
+     break;
+ 
+   case 125:
+ #line 552 "ds9parser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 126:
+ #line 553 "ds9parser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 127:
+ #line 554 "ds9parser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 128:
+ #line 555 "ds9parser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 129:
+ #line 556 "ds9parser.Y"
+-    {yyval.integer = ICRS;;}
++    {(yyval.integer) = ICRS;;}
+     break;
+ 
+   case 130:
+ #line 557 "ds9parser.Y"
+-    {yyval.integer = GALACTIC;;}
++    {(yyval.integer) = GALACTIC;;}
+     break;
+ 
+   case 131:
+ #line 558 "ds9parser.Y"
+-    {yyval.integer = ECLIPTIC;;}
++    {(yyval.integer) = ECLIPTIC;;}
+     break;
+ 
+   case 132:
+ #line 561 "ds9parser.Y"
+-    {yyval.integer=DEGREES;;}
++    {(yyval.integer)=DEGREES;;}
+     break;
+ 
+   case 133:
+ #line 562 "ds9parser.Y"
+-    {yyval.integer=ARCMIN;;}
++    {(yyval.integer)=ARCMIN;;}
+     break;
+ 
+   case 134:
+ #line 563 "ds9parser.Y"
+-    {yyval.integer=ARCSEC;;}
++    {(yyval.integer)=ARCSEC;;}
+     break;
+ 
+   case 135:
+ #line 566 "ds9parser.Y"
+-    {yyval.integer = Marker::SELECT;;}
++    {(yyval.integer) = Marker::SELECT;;}
+     break;
+ 
+   case 136:
+ #line 567 "ds9parser.Y"
+-    {yyval.integer = Marker::EDIT;;}
++    {(yyval.integer) = Marker::EDIT;;}
+     break;
+ 
+   case 137:
+ #line 568 "ds9parser.Y"
+-    {yyval.integer = Marker::MOVE;;}
++    {(yyval.integer) = Marker::MOVE;;}
+     break;
+ 
+   case 138:
+ #line 569 "ds9parser.Y"
+-    {yyval.integer = Marker::ROTATE;;}
++    {(yyval.integer) = Marker::ROTATE;;}
+     break;
+ 
+   case 139:
+ #line 570 "ds9parser.Y"
+-    {yyval.integer = Marker::DELETE;;}
++    {(yyval.integer) = Marker::DELETE;;}
+     break;
+ 
+   case 140:
+ #line 571 "ds9parser.Y"
+-    {yyval.integer = Marker::HIGHLITE;;}
++    {(yyval.integer) = Marker::HIGHLITE;;}
+     break;
+ 
+   case 141:
+ #line 572 "ds9parser.Y"
+-    {yyval.integer = Marker::INCLUDE;;}
++    {(yyval.integer) = Marker::INCLUDE;;}
+     break;
+ 
+   case 142:
+ #line 573 "ds9parser.Y"
+-    {yyval.integer = Marker::SOURCE;;}
++    {(yyval.integer) = Marker::SOURCE;;}
+     break;
+ 
+   case 143:
+ #line 574 "ds9parser.Y"
+-    {yyval.integer = Marker::FIXED;;}
++    {(yyval.integer) = Marker::FIXED;;}
+     break;
+ 
+   case 144:
+ #line 577 "ds9parser.Y"
+-    {yyval.integer = CallBack::SELECTCB;;}
++    {(yyval.integer) = CallBack::SELECTCB;;}
+     break;
+ 
+   case 145:
+ #line 578 "ds9parser.Y"
+-    {yyval.integer = CallBack::UNSELECTCB;;}
++    {(yyval.integer) = CallBack::UNSELECTCB;;}
+     break;
+ 
+   case 146:
+ #line 579 "ds9parser.Y"
+-    {yyval.integer = CallBack::HIGHLITECB;;}
++    {(yyval.integer) = CallBack::HIGHLITECB;;}
+     break;
+ 
+   case 147:
+ #line 580 "ds9parser.Y"
+-    {yyval.integer = CallBack::UNHIGHLITECB;;}
++    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
+     break;
+ 
+   case 148:
+ #line 581 "ds9parser.Y"
+-    {yyval.integer = CallBack::MOVEBEGINCB;;}
++    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
+     break;
+ 
+   case 149:
+ #line 582 "ds9parser.Y"
+-    {yyval.integer = CallBack::MOVECB;;}
++    {(yyval.integer) = CallBack::MOVECB;;}
+     break;
+ 
+   case 150:
+ #line 583 "ds9parser.Y"
+-    {yyval.integer = CallBack::MOVEENDCB;;}
++    {(yyval.integer) = CallBack::MOVEENDCB;;}
+     break;
+ 
+   case 151:
+ #line 584 "ds9parser.Y"
+-    {yyval.integer = CallBack::EDITBEGINCB;;}
++    {(yyval.integer) = CallBack::EDITBEGINCB;;}
+     break;
+ 
+   case 152:
+ #line 585 "ds9parser.Y"
+-    {yyval.integer = CallBack::EDITCB;;}
++    {(yyval.integer) = CallBack::EDITCB;;}
+     break;
+ 
+   case 153:
+ #line 586 "ds9parser.Y"
+-    {yyval.integer = CallBack::EDITENDCB;;}
++    {(yyval.integer) = CallBack::EDITENDCB;;}
+     break;
+ 
+   case 154:
+ #line 587 "ds9parser.Y"
+-    {yyval.integer = CallBack::ROTATEBEGINCB;;}
++    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
+     break;
+ 
+   case 155:
+ #line 588 "ds9parser.Y"
+-    {yyval.integer = CallBack::ROTATECB;;}
++    {(yyval.integer) = CallBack::ROTATECB;;}
+     break;
+ 
+   case 156:
+ #line 589 "ds9parser.Y"
+-    {yyval.integer = CallBack::ROTATEENDCB;;}
++    {(yyval.integer) = CallBack::ROTATEENDCB;;}
+     break;
+ 
+   case 157:
+ #line 590 "ds9parser.Y"
+-    {yyval.integer = CallBack::DELETECB;;}
++    {(yyval.integer) = CallBack::DELETECB;;}
+     break;
+ 
+   case 158:
+ #line 591 "ds9parser.Y"
+-    {yyval.integer = CallBack::TEXTCB;;}
++    {(yyval.integer) = CallBack::TEXTCB;;}
+     break;
+ 
+   case 159:
+ #line 592 "ds9parser.Y"
+-    {yyval.integer = CallBack::COLORCB;;}
++    {(yyval.integer) = CallBack::COLORCB;;}
+     break;
+ 
+   case 160:
+ #line 593 "ds9parser.Y"
+-    {yyval.integer = CallBack::LINEWIDTHCB;;}
++    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
+     break;
+ 
+   case 161:
+ #line 594 "ds9parser.Y"
+-    {yyval.integer = CallBack::PROPERTYCB;;}
++    {(yyval.integer) = CallBack::PROPERTYCB;;}
+     break;
+ 
+   case 162:
+ #line 595 "ds9parser.Y"
+-    {yyval.integer = CallBack::FONTCB;;}
++    {(yyval.integer) = CallBack::FONTCB;;}
+     break;
+ 
+   case 163:
+ #line 596 "ds9parser.Y"
+-    {yyval.integer = CallBack::UPDATECB;;}
++    {(yyval.integer) = CallBack::UPDATECB;;}
+     break;
+ 
+   case 166:
+ #line 604 "ds9parser.Y"
+     {
+-	  setProps(&globalProps,yyvsp[-2].integer,yyvsp[0].integer);
+-	  setProps(&localProps,yyvsp[-2].integer,yyvsp[0].integer);
++	  setProps(&globalProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
++	  setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
+ 	;}
+     break;
+ 
+   case 167:
+ #line 609 "ds9parser.Y"
+     {
+-	  strncpy(globalColor,yyvsp[0].str,16);
+-	  strncpy(localColor,yyvsp[0].str,16);
++	  strncpy(globalColor,(yyvsp[(3) - (3)].str),16);
++	  strncpy(localColor,(yyvsp[(3) - (3)].str),16);
+ 	;}
+     break;
+ 
+   case 168:
+ #line 613 "ds9parser.Y"
+-    {globalWidth = localWidth = yyvsp[0].integer;;}
++    {globalWidth = localWidth = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 169:
+ #line 615 "ds9parser.Y"
+     {
+-	  strncpy(globalFont,yyvsp[0].str,32);
+-	  strncpy(localFont,yyvsp[0].str,32);
++	  strncpy(globalFont,(yyvsp[(3) - (3)].str),32);
++	  strncpy(localFont,(yyvsp[(3) - (3)].str),32);
+ 	;}
+     break;
+ 
+   case 170:
+ #line 620 "ds9parser.Y"
+     {
+-	  strncpy(globalText,yyvsp[0].str,80);
+-	  strncpy(localText,yyvsp[0].str,80);
++	  strncpy(globalText,(yyvsp[(3) - (3)].str),80);
++	  strncpy(localText,(yyvsp[(3) - (3)].str),80);
+ 	;}
+     break;
+ 
+@@ -3150,22 +3483,22 @@
+   case 173:
+ #line 635 "ds9parser.Y"
+     {
+-	  globalPoint = localPoint = yyvsp[0].integer;
++	  globalPoint = localPoint = (yyvsp[(3) - (3)].integer);
+ 	;}
+     break;
+ 
+   case 174:
+ #line 639 "ds9parser.Y"
+     {
+-	  globalLine1 = localLine1 = yyvsp[-1].integer;
+-	  globalLine2 = localLine2 = yyvsp[0].integer;
++	  globalLine1 = localLine1 = (yyvsp[(3) - (4)].integer);
++	  globalLine2 = localLine2 = (yyvsp[(4) - (4)].integer);
+ 	;}
+     break;
+ 
+   case 175:
+ #line 644 "ds9parser.Y"
+     {
+-	  globalVector = localVector = yyvsp[0].integer;
++	  globalVector = localVector = (yyvsp[(3) - (3)].integer);
+ 	;}
+     break;
+ 
+@@ -3178,43 +3511,43 @@
+   case 177:
+ #line 651 "ds9parser.Y"
+     {
+-	  strncpy(globalCompassNorth,yyvsp[-3].str,80);
+-	  strncpy(globalCompassEast,yyvsp[-2].str,80);
+-	  strncpy(localCompassNorth,yyvsp[-3].str,80);
+-	  strncpy(localCompassEast,yyvsp[-2].str,80);
+-	  globalCompassNArrow = localCompassNArrow = yyvsp[-1].integer;
+-	  globalCompassEArrow = localCompassEArrow = yyvsp[0].integer;
++	  strncpy(globalCompassNorth,(yyvsp[(4) - (7)].str),80);
++	  strncpy(globalCompassEast,(yyvsp[(5) - (7)].str),80);
++	  strncpy(localCompassNorth,(yyvsp[(4) - (7)].str),80);
++	  strncpy(localCompassEast,(yyvsp[(5) - (7)].str),80);
++	  globalCompassNArrow = localCompassNArrow = (yyvsp[(6) - (7)].integer);
++	  globalCompassEArrow = localCompassEArrow = (yyvsp[(7) - (7)].integer);
+ 	;}
+     break;
+ 
+   case 178:
+ #line 660 "ds9parser.Y"
+     {
+-	  globalTextAngle = localTextAngle = yyvsp[0].real;
++	  globalTextAngle = localTextAngle = (yyvsp[(3) - (3)].real);
+ 	;}
+     break;
+ 
+   case 179:
+ #line 663 "ds9parser.Y"
+-    {globalWCS = (CoordSystem)yyvsp[0].integer;;}
++    {globalWCS = (CoordSystem)(yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 180:
+ #line 667 "ds9parser.Y"
+     {
+-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-3].integer;
+-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-2].integer;
+-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[-1].integer;
+-	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
++	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
++	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
++	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(4) - (4)].integer);
+ 	;}
+     break;
+ 
+   case 181:
+ #line 674 "ds9parser.Y"
+     {
+-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
++	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
+ 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
+-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3222,10 +3555,10 @@
+   case 182:
+ #line 681 "ds9parser.Y"
+     {
+-	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
++	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
+ 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
+ 	  globalRulerDistSystem = localRulerDistSystem = WCS;
+-	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3233,8 +3566,8 @@
+ #line 688 "ds9parser.Y"
+     {
+ 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
+-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
+-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
++	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3243,9 +3576,9 @@
+ #line 695 "ds9parser.Y"
+     {
+ 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
+-	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
++	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
+ 	  globalRulerDistSystem = localRulerDistSystem = WCS;
+-	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3254,7 +3587,7 @@
+     {
+ 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
+ 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
+-	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3265,7 +3598,7 @@
+ 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
+ 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
+ 	  globalRulerDistSystem = localRulerDistSystem = WCS;
+-	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3275,7 +3608,7 @@
+ 	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
+ 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
+ 	  globalRulerDistSystem = localRulerDistSystem = WCS;
+-	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(1) - (1)].integer);
+ 	;}
+     break;
+ 
+@@ -3292,15 +3625,15 @@
+   case 189:
+ #line 732 "ds9parser.Y"
+     {
+-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)yyvsp[-1].integer;
+-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
++	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
++	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+   case 190:
+ #line 737 "ds9parser.Y"
+     {
+-	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)yyvsp[0].integer;
++	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
+ 	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
+ 	;}
+     break;
+@@ -3309,7 +3642,7 @@
+ #line 742 "ds9parser.Y"
+     {
+ 	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
+-	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
++	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
+ 	;}
+     break;
+ 
+@@ -3362,38 +3695,38 @@
+ 
+   case 196:
+ #line 794 "ds9parser.Y"
+-    {setProps(&localProps,yyvsp[-2].integer,yyvsp[0].integer);;}
++    {setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
+     break;
+ 
+   case 197:
+ #line 795 "ds9parser.Y"
+-    {strncpy(localColor,yyvsp[0].str,16);;}
++    {strncpy(localColor,(yyvsp[(3) - (3)].str),16);;}
+     break;
+ 
+   case 198:
+ #line 796 "ds9parser.Y"
+-    {localWidth = yyvsp[0].integer;;}
++    {localWidth = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 199:
+ #line 797 "ds9parser.Y"
+-    {strncpy(localFont,yyvsp[0].str,32);;}
++    {strncpy(localFont,(yyvsp[(3) - (3)].str),32);;}
+     break;
+ 
+   case 200:
+ #line 798 "ds9parser.Y"
+-    {strncpy(localText,yyvsp[0].str,80);;}
++    {strncpy(localText,(yyvsp[(3) - (3)].str),80);;}
+     break;
+ 
+   case 201:
+ #line 799 "ds9parser.Y"
+-    {taglist.append(new Tag(yyvsp[0].str));;}
++    {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
+     break;
+ 
+   case 202:
+ #line 800 "ds9parser.Y"
+     {cblist.append(
+-	    new CallBack(FR->getInterp(),(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str));;}
++	    new CallBack(FR->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
+     break;
+ 
+   case 203:
+@@ -3408,50 +3741,50 @@
+ 
+   case 205:
+ #line 805 "ds9parser.Y"
+-    {localPoint = yyvsp[0].integer;;}
++    {localPoint = (yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 206:
+ #line 806 "ds9parser.Y"
+-    {localLine1=yyvsp[-1].integer; localLine2=yyvsp[0].integer;;}
++    {localLine1=(yyvsp[(3) - (4)].integer); localLine2=(yyvsp[(4) - (4)].integer);;}
+     break;
+ 
+   case 207:
+ #line 807 "ds9parser.Y"
+-    {localVector=yyvsp[0].integer;;}
++    {localVector=(yyvsp[(3) - (3)].integer);;}
+     break;
+ 
+   case 209:
+ #line 810 "ds9parser.Y"
+     {
+-	  strncpy(localCompassNorth,yyvsp[-3].str,80);
+-	  strncpy(localCompassEast,yyvsp[-2].str,80);
+-	  localCompassNArrow = yyvsp[-1].integer;
+-	  localCompassEArrow = yyvsp[0].integer;
++	  strncpy(localCompassNorth,(yyvsp[(4) - (7)].str),80);
++	  strncpy(localCompassEast,(yyvsp[(5) - (7)].str),80);
++	  localCompassNArrow = (yyvsp[(6) - (7)].integer);
++	  localCompassEArrow = (yyvsp[(7) - (7)].integer);
+ 	;}
+     break;
+ 
+   case 210:
+ #line 816 "ds9parser.Y"
+-    {localTextAngle=yyvsp[0].real;;}
++    {localTextAngle=(yyvsp[(3) - (3)].real);;}
+     break;
+ 
+   case 214:
+ #line 823 "ds9parser.Y"
+     {
+-	  localRulerCoordSystem = (CoordSystem)yyvsp[-3].integer;
+-	  localRulerSkyFrame = (SkyFrame)yyvsp[-2].integer;
+-	  localRulerDistSystem = (CoordSystem)yyvsp[-1].integer;
+-	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
++	  localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
++	  localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
++	  localRulerDistFormat = (SkyFormat)(yyvsp[(4) - (4)].integer);
+ 	;}
+     break;
+ 
+   case 215:
+ #line 830 "ds9parser.Y"
+     {
+-	  localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
++	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
+ 	  localRulerSkyFrame = FK5;
+-	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3459,10 +3792,10 @@
+   case 216:
+ #line 837 "ds9parser.Y"
+     {
+-	  localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
++	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
+ 	  localRulerSkyFrame = FK5;
+ 	  localRulerDistSystem = WCS;
+-	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3470,8 +3803,8 @@
+ #line 844 "ds9parser.Y"
+     {
+ 	  localRulerCoordSystem = WCS;
+-	  localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
+-	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
++	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3480,9 +3813,9 @@
+ #line 851 "ds9parser.Y"
+     {
+ 	  localRulerCoordSystem = WCS;
+-	  localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
++	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
+ 	  localRulerDistSystem = WCS;
+-	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3491,7 +3824,7 @@
+     {
+ 	  localRulerCoordSystem = WCS;
+ 	  localRulerSkyFrame = FK5;
+-	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
++	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
+ 	  localRulerDistFormat = DEGREES;
+ 	;}
+     break;
+@@ -3502,7 +3835,7 @@
+ 	  localRulerCoordSystem = WCS;
+ 	  localRulerSkyFrame = FK5;
+ 	  localRulerDistSystem = WCS;
+-	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+@@ -3512,7 +3845,7 @@
+ 	  localRulerCoordSystem = IMAGE;
+ 	  localRulerSkyFrame = FK5;
+ 	  localRulerDistSystem = WCS;
+-	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
++	  localRulerDistFormat = (SkyFormat)(yyvsp[(1) - (1)].integer);
+ 	;}
+     break;
+ 
+@@ -3529,15 +3862,15 @@
+   case 223:
+ #line 888 "ds9parser.Y"
+     {
+-	  localCompassCoordSystem = (CoordSystem)yyvsp[-1].integer;
+-	  localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
++	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
++	  localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
+ 	;}
+     break;
+ 
+   case 224:
+ #line 893 "ds9parser.Y"
+     {
+-	  localCompassCoordSystem = (CoordSystem)yyvsp[0].integer;
++	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
+ 	  localCompassSkyFrame = FK5;
+ 	;}
+     break;
+@@ -3546,7 +3879,7 @@
+ #line 898 "ds9parser.Y"
+     {
+ 	  localCompassCoordSystem = WCS;
+-	  localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
++	  localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
+ 	;}
+     break;
+ 
+@@ -3580,7 +3913,7 @@
+ 
+   case 231:
+ #line 914 "ds9parser.Y"
+-    {aAngle=yyvsp[-1].real;localEpanda=2;;}
++    {aAngle=(yyvsp[(9) - (10)].real);localEpanda=2;;}
+     break;
+ 
+   case 232:
+@@ -3595,7 +3928,7 @@
+ 
+   case 234:
+ #line 919 "ds9parser.Y"
+-    {aAngle=yyvsp[-1].real;localBpanda=2;;}
++    {aAngle=(yyvsp[(9) - (10)].real);localBpanda=2;;}
+     break;
+ 
+   case 235:
+@@ -3648,37 +3981,37 @@
+ 
+   case 237:
+ #line 964 "ds9parser.Y"
+-    {yyval.integer = CIRCLE;;}
++    {(yyval.integer) = CIRCLE;;}
+     break;
+ 
+   case 238:
+ #line 965 "ds9parser.Y"
+-    {yyval.integer = BOX;;}
++    {(yyval.integer) = BOX;;}
+     break;
+ 
+   case 239:
+ #line 966 "ds9parser.Y"
+-    {yyval.integer = DIAMOND;;}
++    {(yyval.integer) = DIAMOND;;}
+     break;
+ 
+   case 240:
+ #line 967 "ds9parser.Y"
+-    {yyval.integer = CROSS;;}
++    {(yyval.integer) = CROSS;;}
+     break;
+ 
+   case 241:
+ #line 968 "ds9parser.Y"
+-    {yyval.integer = XPT;;}
++    {(yyval.integer) = XPT;;}
+     break;
+ 
+   case 242:
+ #line 969 "ds9parser.Y"
+-    {yyval.integer = ARROW;;}
++    {(yyval.integer) = ARROW;;}
+     break;
+ 
+   case 243:
+ #line 970 "ds9parser.Y"
+-    {yyval.integer = BOXCIRCLE;;}
++    {(yyval.integer) = BOXCIRCLE;;}
+     break;
+ 
+   case 244:
+@@ -3698,7 +4031,7 @@
+ 
+   case 247:
+ #line 979 "ds9parser.Y"
+-    {FR->createTextCmd(Vector(yyvsp[-3].vector),
++    {FR->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	    localTextAngle,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -3706,16 +4039,16 @@
+ 
+   case 248:
+ #line 984 "ds9parser.Y"
+-    {FR->createCompositeCmd(Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++    {FR->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    (yyvsp[(5) - (8)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 249:
+ #line 989 "ds9parser.Y"
+-    {FR->createVectCmd(Vector(yyvsp[-7].vector),
+-	    yyvsp[-5].real,yyvsp[-3].real,
++    {FR->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
+ 	    localVector,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -3725,9 +4058,9 @@
+ #line 995 "ds9parser.Y"
+     {
+ 	  // hard coded into projection.tcl
+-	  FR->createProjectionCmd(Vector(yyvsp[-7].vector),
+-	    Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++	  FR->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    Vector((yyvsp[(5) - (10)].vector)),
++	    (yyvsp[(7) - (10)].real),
+ 	    "ProjectionPlot", "ProjectionPlotDelete",
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+@@ -3736,8 +4069,8 @@
+ 
+   case 251:
+ #line 1005 "ds9parser.Y"
+-    {FR->createRulerCmd(Vector(yyvsp[-5].vector),
+-	    Vector(yyvsp[-3].vector),
++    {FR->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    Vector((yyvsp[(5) - (8)].vector)),
+    	    localRulerCoordSystem, localRulerSkyFrame,
+ 	    localRulerDistSystem, localRulerDistFormat,
+ 	    localColor,localWidth,localFont,
+@@ -3746,8 +4079,8 @@
+ 
+   case 252:
+ #line 1012 "ds9parser.Y"
+-    {FR->createCompassCmd(Vector(yyvsp[-5].vector), 
+-	   yyvsp[-3].real,
++    {FR->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
++	   (yyvsp[(5) - (8)].real),
+ 	   localCompassNorth, localCompassEast, 
+ 	   localCompassNArrow, localCompassEArrow,
+    	   localCompassCoordSystem, localCompassSkyFrame,
+@@ -3757,16 +4090,16 @@
+ 
+   case 253:
+ #line 1022 "ds9parser.Y"
+-    {FR->createCircleCmd(Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++    {FR->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    (yyvsp[(5) - (8)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 254:
+ #line 1027 "ds9parser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-7].vector),
+-	    yyvsp[-5].real,yyvsp[-3].real,1,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),1,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+@@ -3774,9 +4107,9 @@
+   case 255:
+ #line 1033 "ds9parser.Y"
+     {
+-	  aAnnuli[0] = yyvsp[-7].real;
+-	  aAnnuli[1] = yyvsp[-5].real;
+-	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
++	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
++	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
++	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
+ 	    aNum,aAnnuli,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+@@ -3785,8 +4118,8 @@
+ 
+   case 256:
+ #line 1043 "ds9parser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
+-	    yyvsp[-7].real,yyvsp[-5].real,yyvsp[-3].integer,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
++	    (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),(yyvsp[(9) - (12)].integer),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+@@ -3798,14 +4131,14 @@
+ 	  case 0: /* ignore it */
+ 	    break;
+ 	  case 1: /* normal cpanda */
+-	    FR->createCpandaCmd(Vector(yyvsp[-15].vector),
+-	      yyvsp[-13].real,yyvsp[-11].real,yyvsp[-9].integer,
+-	      yyvsp[-7].real,yyvsp[-5].real,yyvsp[-3].integer,
++	    FR->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
++	      (yyvsp[(5) - (18)].real),(yyvsp[(7) - (18)].real),(yyvsp[(9) - (18)].integer),
++	      (yyvsp[(11) - (18)].real),(yyvsp[(13) - (18)].real),(yyvsp[(15) - (18)].integer),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case 2: /* one of our special pandas */
+-	    FR->createCpandaCmd(Vector(yyvsp[-15].vector),
++	    FR->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
+ 	      aAngNum,aAngles,
+ 	      aNum,aAnnuli,
+ 	      localColor,localWidth,localFont,
+@@ -3820,9 +4153,9 @@
+     {
+ 	  // for ellipse annulus
+ 	  aStatus = 1;
+-	  aCenter = Vector(yyvsp[-7].vector);
+-	  aAngles[0] = yyvsp[-3].real;
+-	  aVector[0] = Vector(yyvsp[-5].vector);
++	  aCenter = Vector((yyvsp[(3) - (10)].vector));
++	  aAngles[0] = (yyvsp[(7) - (10)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
+ 	  aNumsao = 1;
+ 	  strncpy(aColor,localColor,16);
+ 	  aWidth = localWidth;
+@@ -3831,9 +4164,9 @@
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createEllipseCmd(Vector(yyvsp[-7].vector),
+-	    Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++	  FR->createEllipseCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    Vector((yyvsp[(5) - (10)].vector)),
++	    (yyvsp[(7) - (10)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3843,9 +4176,9 @@
+ #line 1093 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-9].vector),
+-	    Vector(yyvsp[-7].vector),Vector(yyvsp[-5].vector),1,
+-	    yyvsp[-3].real,
++	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
++	    Vector((yyvsp[(5) - (12)].vector)),Vector((yyvsp[(7) - (12)].vector)),1,
++	    (yyvsp[(9) - (12)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3855,9 +4188,9 @@
+ #line 1103 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-11].vector),
+-	    Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
+-	    yyvsp[-3].real,
++	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
++	    Vector((yyvsp[(5) - (14)].vector)),Vector((yyvsp[(7) - (14)].vector)),(yyvsp[(9) - (14)].integer),
++	    (yyvsp[(11) - (14)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3867,11 +4200,11 @@
+ #line 1113 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  aVector[0] = Vector(yyvsp[-9].vector);
+-	  aVector[1] = Vector(yyvsp[-7].vector);
+-	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-11].vector),
++	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
++	  aVector[1] = Vector((yyvsp[(7) - (14)].vector));
++	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
+ 	    aNum,aVector,
+-	    yyvsp[-3].real,
++	    (yyvsp[(11) - (14)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3882,7 +4215,7 @@
+     {	
+ 	  // old saoimage syntax
+ 	  aStatus = 2;
+-	  aVector[aNumsao++] = Vector(yyvsp[-13].vector);
++	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+@@ -3893,15 +4226,15 @@
+ 	  case 0: /* ignore it */
+ 	    break;
+ 	  case 1: /* normal epanda */
+-	    FR->createEpandaCmd(Vector(yyvsp[-17].vector),
+-	      yyvsp[-15].real,yyvsp[-13].real,yyvsp[-11].integer,
+-	      Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
+-	      yyvsp[-3].real,
++	    FR->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
++	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
++	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
++	      (yyvsp[(17) - (20)].real),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case 2: /* one of our special pandas */
+-	    FR->createEpandaCmd(Vector(yyvsp[-17].vector),
++	    FR->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+ 	      aAngNum,aAngles,
+ 	      aNum,aVector,
+ 	      aAngle,
+@@ -3917,9 +4250,9 @@
+     {
+ 	  // for box annulus
+ 	  aStatus = 3;
+-	  aCenter = Vector(yyvsp[-7].vector);
+-	  aAngles[0] = yyvsp[-3].real;
+-	  aVector[0] = Vector(yyvsp[-5].vector);
++	  aCenter = Vector((yyvsp[(3) - (10)].vector));
++	  aAngles[0] = (yyvsp[(7) - (10)].real);
++	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
+ 	  aNumsao = 1;
+ 	  strncpy(aColor,localColor,16);
+ 	  aWidth = localWidth;
+@@ -3928,9 +4261,9 @@
+ 	  strncpy(aComment,localComment,80);
+ 	  aProps = localProps;
+ 
+-	  FR->createBoxCmd(Vector(yyvsp[-7].vector),
+-	    Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++	  FR->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    Vector((yyvsp[(5) - (10)].vector)),
++	    (yyvsp[(7) - (10)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3938,9 +4271,9 @@
+ 
+   case 265:
+ #line 1178 "ds9parser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-7].vector),
+-	    Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    Vector((yyvsp[(5) - (10)].vector)),
++	    (yyvsp[(7) - (10)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+@@ -3949,9 +4282,9 @@
+ #line 1185 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  FR->createBoxAnnulusCmd(Vector(yyvsp[-9].vector),
+-	    Vector(yyvsp[-7].vector),Vector(yyvsp[-5].vector),1,
+-	    yyvsp[-3].real,
++	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
++	    Vector((yyvsp[(5) - (12)].vector)),Vector((yyvsp[(7) - (12)].vector)),1,
++	    (yyvsp[(9) - (12)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3961,11 +4294,11 @@
+ #line 1195 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  aVector[0] = Vector(yyvsp[-9].vector);
+-	  aVector[1] = Vector(yyvsp[-7].vector);
+-	  FR->createBoxAnnulusCmd(Vector(yyvsp[-11].vector),
++	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
++	  aVector[1] = Vector((yyvsp[(7) - (14)].vector));
++	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
+ 	    aNum,aVector,
+-	    yyvsp[-3].real,
++	    (yyvsp[(11) - (14)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3975,9 +4308,9 @@
+ #line 1207 "ds9parser.Y"
+     {
+ 	  // prefered syntax
+-	  FR->createBoxAnnulusCmd(Vector(yyvsp[-11].vector),
+-	    Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
+-	    yyvsp[-3].real,
++	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
++	    Vector((yyvsp[(5) - (14)].vector)),Vector((yyvsp[(7) - (14)].vector)),(yyvsp[(9) - (14)].integer),
++	    (yyvsp[(11) - (14)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+ 	;}
+@@ -3988,7 +4321,7 @@
+     {	
+ 	  // old saoimage syntax
+ 	  aStatus = 4;
+-	  aVector[aNumsao++] = Vector(yyvsp[-13].vector);
++	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
+ 	;}
+     break;
+ 
+@@ -3999,15 +4332,15 @@
+ 	  case 0: /* ignore it */
+ 	    break;
+ 	  case 1: /* normal bpanda */
+-	    FR->createBpandaCmd(Vector(yyvsp[-17].vector),
+-	      yyvsp[-15].real,yyvsp[-13].real,yyvsp[-11].integer,
+-	      Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
+-	      yyvsp[-3].real,
++	    FR->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
++	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
++	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
++	      (yyvsp[(17) - (20)].real),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case 2: /* one of our special pandas */
+-	    FR->createBpandaCmd(Vector(yyvsp[-17].vector),
++	    FR->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
+ 	      aAngNum,aAngles,
+ 	      aNum,aVector,
+ 	      aAngle,
+@@ -4020,8 +4353,8 @@
+ 
+   case 271:
+ #line 1249 "ds9parser.Y"
+-    {FR->createLineCmd(Vector(yyvsp[-5].vector),
+-	    Vector(yyvsp[-3].vector),
++    {FR->createLineCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    Vector((yyvsp[(5) - (8)].vector)),
+ 	    localLine1,localLine2,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -4032,37 +4365,37 @@
+     {
+ 	  switch (localPoint) {
+ 	  case CIRCLE:
+-	    FR->createCirclePointCmd(Vector(yyvsp[-3].vector),
++	    FR->createCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case BOX:
+-	    FR->createBoxPointCmd(Vector(yyvsp[-3].vector),
++	    FR->createBoxPointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case DIAMOND:
+-	    FR->createDiamondPointCmd(Vector(yyvsp[-3].vector),
++	    FR->createDiamondPointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case CROSS:
+-	    FR->createCrossPointCmd(Vector(yyvsp[-3].vector),
++	    FR->createCrossPointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case XPT:
+-	    FR->createExPointCmd(Vector(yyvsp[-3].vector),
++	    FR->createExPointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case ARROW:
+-	    FR->createArrowPointCmd(Vector(yyvsp[-3].vector),
++	    FR->createArrowPointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+ 	  case BOXCIRCLE:
+-	    FR->createBoxCirclePointCmd(Vector(yyvsp[-3].vector),
++	    FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	      localColor,localWidth,localFont,
+ 	      localText,localProps,localComment,taglist,cblist);
+ 	    break;
+@@ -4072,49 +4405,49 @@
+ 
+   case 273:
+ #line 1296 "ds9parser.Y"
+-    {FR->createCirclePointCmd(Vector(yyvsp[-3].vector),
++    {FR->createCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 274:
+ #line 1300 "ds9parser.Y"
+-    {FR->createBoxPointCmd(Vector(yyvsp[-3].vector),
++    {FR->createBoxPointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 275:
+ #line 1304 "ds9parser.Y"
+-    {FR->createDiamondPointCmd(Vector(yyvsp[-3].vector),
++    {FR->createDiamondPointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 276:
+ #line 1308 "ds9parser.Y"
+-    {FR->createCrossPointCmd(Vector(yyvsp[-3].vector),
++    {FR->createCrossPointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 277:
+ #line 1312 "ds9parser.Y"
+-    {FR->createExPointCmd(Vector(yyvsp[-3].vector),
++    {FR->createExPointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 278:
+ #line 1316 "ds9parser.Y"
+-    {FR->createArrowPointCmd(Vector(yyvsp[-3].vector),
++    {FR->createArrowPointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 279:
+ #line 1320 "ds9parser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[-3].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+@@ -4133,7 +4466,7 @@
+ 
+   case 286:
+ #line 1337 "ds9parser.Y"
+-    {FR->createTextCmd(Vector(yyvsp[-3].vector),
++    {FR->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
+ 	    localTextAngle,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -4141,12 +4474,12 @@
+ 
+   case 287:
+ #line 1341 "ds9parser.Y"
+-    {strncpy(localText,yyvsp[-1].str,80);;}
++    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
+     break;
+ 
+   case 288:
+ #line 1343 "ds9parser.Y"
+-    {FR->createTextCmd(Vector(yyvsp[-6].vector),
++    {FR->createTextCmd(Vector((yyvsp[(3) - (9)].vector)),
+ 	    localTextAngle,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -4154,16 +4487,16 @@
+ 
+   case 289:
+ #line 1348 "ds9parser.Y"
+-    {FR->createCompositeCmd(Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++    {FR->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    (yyvsp[(5) - (8)].real),
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 290:
+ #line 1353 "ds9parser.Y"
+-    {FR->createVectCmd(Vector(yyvsp[-7].vector),
+-	    yyvsp[-5].real,yyvsp[-3].real,
++    {FR->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
+ 	    localVector,
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);;}
+@@ -4173,9 +4506,9 @@
+ #line 1359 "ds9parser.Y"
+     {
+ 	  // hard coded into projection.tcl
+-	  FR->createProjectionCmd(Vector(yyvsp[-7].vector),
+-	    Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,
++	  FR->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
++	    Vector((yyvsp[(5) - (10)].vector)),
++	    (yyvsp[(7) - (10)].real),
+ 	    "ProjectionPlot", "ProjectionPlotDelete",
+ 	    localColor,localWidth,localFont,
+ 	    localText,localProps,localComment,taglist,cblist);
+@@ -4184,8 +4517,8 @@
+ 
+   case 292:
+ #line 1369 "ds9parser.Y"
+-    {FR->createRulerCmd(Vector(yyvsp[-5].vector),
+-	    Vector(yyvsp[-3].vector),
++    {FR->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    Vector((yyvsp[(5) - (8)].vector)),
+    	    localRulerCoordSystem, localRulerSkyFrame,
+ 	    localRulerDistSystem, localRulerDistFormat,
+ 	    localColor,localWidth,localFont,
+@@ -4194,8 +4527,8 @@
+ 
+   case 293:
+ #line 1376 "ds9parser.Y"
+-    {FR->createCompassCmd(Vector(yyvsp[-5].vector), 
+-	   yyvsp[-3].real,
++    {FR->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
++	   (yyvsp[(5) - (8)].real),
+ 	   localCompassNorth, localCompassEast, 
+ 	   localCompassNArrow, localCompassEArrow,
+    	   localCompassCoordSystem, localCompassSkyFrame,
+@@ -4205,14 +4538,14 @@
+ 
+   case 296:
+ #line 1389 "ds9parser.Y"
+-    {polylist.append(new Vertex(yyvsp[0].vector));;}
++    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
+     break;
+ 
+   case 299:
+ #line 1397 "ds9parser.Y"
+     {
+ 	  if (aNum < MAXANNULI)
+-	    aAnnuli[aNum++] = yyvsp[0].real;
++	    aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);
+ 	;}
+     break;
+ 
+@@ -4220,13 +4553,13 @@
+ #line 1408 "ds9parser.Y"
+     {
+ 	  if (aAngNum < MAXANGLES)
+-	    aAngles[aAngNum++] = yyvsp[0].real;
++	    aAngles[aAngNum++] = (yyvsp[(1) - (1)].real);
+ 	;}
+     break;
+ 
+   case 305:
+ #line 1418 "ds9parser.Y"
+-    {aVector[aNum++] = Vector(yyvsp[-2].real,yyvsp[0].real);;}
++    {aVector[aNum++] = Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real));;}
+     break;
+ 
+   case 306:
+@@ -4260,15 +4593,14 @@
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 4598 "ds9parser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 4267 "ds9parser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -4297,99 +4629,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -4399,15 +4697,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -4436,9 +4736,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -4446,11 +4747,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -4470,21 +4772,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/tngparser.C
++++ saods9-4.0b7/saotk/frame/tngparser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse tngparse
+ #define yylex   tnglex
+ #define yyerror tngerror
+@@ -103,6 +115,7 @@
+      YELLOW_ = 296
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define STRING 260
+@@ -158,8 +171,8 @@
+ #define DISCARD_(x) {yyclearin; tngDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -216,16 +229,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 60 "tngparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 229 "tngparser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 248 "tngparser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -236,56 +256,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 241 "tngparser.C"
++/* Line 216 of yacc.c.  */
++#line 261 "tngparser.C"
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++#endif
++
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
++
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
++# endif
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -295,24 +430,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -330,39 +465,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
++    while (YYID (0))
+ 
+ #endif
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+-#endif
+-
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  3
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   136
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  51
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  33
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  80
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  143
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   296
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       42,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -399,7 +528,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned char yyprhs[] =
++static const yytype_uint8 yyprhs[] =
+ {
+        0,     0,     3,     6,    10,    13,    14,    17,    19,    23,
+       25,    27,    29,    31,    33,    35,    37,    39,    40,    42,
+@@ -412,8 +541,8 @@
+      234
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int8 yyrhs[] =
+ {
+       52,     0,    -1,    68,    53,    -1,    53,    54,    55,    -1,
+       54,    55,    -1,    -1,    16,    57,    -1,    39,    -1,    69,
+@@ -442,7 +571,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,   123,   123,   126,   127,   130,   131,   132,   133,   134,
+      137,   138,   139,   142,   143,   146,   147,   150,   151,   154,
+@@ -456,9 +585,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "STRING", "DEGREE",
+@@ -480,7 +609,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -492,7 +621,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,    51,    52,    53,    53,    54,    54,    54,    54,    54,
+       55,    55,    55,    56,    56,    57,    57,    58,    58,    59,
+@@ -506,7 +635,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     2,     3,     2,     0,     2,     1,     3,     1,
+        1,     1,     1,     1,     1,     1,     1,     0,     1,     0,
+@@ -522,7 +651,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+       38,     0,    39,     1,     0,     7,    60,    39,     0,    40,
+        9,    16,    15,     6,     0,     0,     0,     0,     0,    12,
+@@ -541,8 +670,8 @@
+       49,    45,    44
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const short yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int16 yydefgoto[] =
+ {
+       -1,     1,     7,     8,    22,    63,    13,    80,    46,    88,
+      131,   132,   101,    99,    64,    89,    77,     2,     9,    25,
+@@ -553,7 +682,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -87
+-static const short yypact[] =
++static const yytype_int16 yypact[] =
+ {
+      -87,     6,    -5,   -87,   -18,   -87,   -13,     0,    -7,   -28,
+      -87,   -87,   -87,   -87,   -41,   -22,    -4,    42,    -7,   -87,
+@@ -573,7 +702,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const yysigned_char yypgoto[] =
++static const yytype_int8 yypgoto[] =
+ {
+      -87,   -87,   -87,    89,    79,     9,   -87,     1,    76,   -86,
+      -17,   -87,   -87,    17,    30,   -23,   -87,   -87,   -87,   -87,
+@@ -586,7 +715,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -22
+-static const short yytable[] =
++static const yytype_int16 yytable[] =
+ {
+       -2,    19,    14,    -5,   107,    41,     3,    15,    -5,    26,
+       16,     4,    11,    12,    42,   111,     4,   113,   -21,    23,
+@@ -604,7 +733,7 @@
+        0,    75,    59,    60,    76,    61,    62
+ };
+ 
+-static const short yycheck[] =
++static const yytype_int16 yycheck[] =
+ {
+        0,     8,    15,     8,    90,    17,     0,    20,     8,    50,
+       23,    16,    30,    31,    26,   101,    16,   103,     8,    47,
+@@ -624,7 +753,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,    52,    68,     0,    16,    39,    49,    53,    54,    69,
+       76,    30,    31,    57,    15,    20,    23,    79,    54,     8,
+@@ -643,22 +772,6 @@
+       80,    80,    80
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -684,30 +797,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -728,42 +874,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -772,45 +972,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -825,13 +1032,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -841,45 +1044,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -889,70 +1094,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
+ 
+-
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
++
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
++
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -960,13 +1287,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -975,10 +1302,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -991,14 +1318,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -1009,13 +1340,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -1026,18 +1363,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -1046,9 +1383,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -1072,8 +1409,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -1086,18 +1422,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -1108,21 +1444,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -1153,19 +1489,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1180,7 +1514,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1200,22 +1534,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -1262,12 +1595,12 @@
+ 
+   case 13:
+ #line 142 "tngparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 14:
+ #line 143 "tngparser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 15:
+@@ -1282,42 +1615,42 @@
+ 
+   case 23:
+ #line 162 "tngparser.Y"
+-    {yyval.real = 0;;}
++    {(yyval.real) = 0;;}
+     break;
+ 
+   case 24:
+ #line 163 "tngparser.Y"
+-    {yyval.real = yyvsp[0].real;;}
++    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 25:
+ #line 166 "tngparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 26:
+ #line 167 "tngparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 27:
+ #line 170 "tngparser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real,IMAGE);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real),IMAGE);;}
+     break;
+ 
+   case 28:
+ #line 174 "tngparser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 29:
+ #line 182 "tngparser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 30:
+@@ -1327,60 +1660,60 @@
+ 	  CoordSystem sys = checkWCSSystem();
+ 	  SkyFrame sky = checkWCSSky();
+ 	  if (sky == GALACTIC || sky == ECLIPTIC) 
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
+ 	  else
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 31:
+ #line 200 "tngparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 32:
+ #line 207 "tngparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
+ 	    checkWCSSystem(), checkWCSSky());
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 33:
+ #line 216 "tngparser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 34:
+ #line 217 "tngparser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 35:
+ #line 218 "tngparser.Y"
+-    {yyval.integer = GALACTIC;;}
++    {(yyval.integer) = GALACTIC;;}
+     break;
+ 
+   case 36:
+ #line 219 "tngparser.Y"
+-    {yyval.integer = ECLIPTIC;;}
++    {(yyval.integer) = ECLIPTIC;;}
+     break;
+ 
+   case 37:
+ #line 220 "tngparser.Y"
+-    {yyval.integer = ICRS;;}
++    {(yyval.integer) = ICRS;;}
+     break;
+ 
+   case 38:
+@@ -1431,34 +1764,34 @@
+ 
+   case 43:
+ #line 256 "tngparser.Y"
+-    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
++	    (yyvsp[(5) - (7)].real),
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 44:
+ #line 262 "tngparser.Y"
+-    {FR->createEllipseCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 45:
+ #line 269 "tngparser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
+-	    Vector(yyvsp[-4].vector),
+-	    yyvsp[-2].real,
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
++	    Vector((yyvsp[(5) - (9)].vector)),
++	    (yyvsp[(7) - (9)].real),
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 46:
+ #line 276 "tngparser.Y"
+-    {FR->createLineCmd(Vector(yyvsp[-4].vector),
+-	    Vector(yyvsp[-2].vector),
++    {FR->createLineCmd(Vector((yyvsp[(3) - (7)].vector)),
++	    Vector((yyvsp[(5) - (7)].vector)),
+ 	    0,0,
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+@@ -1466,19 +1799,19 @@
+ 
+   case 47:
+ #line 283 "tngparser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+     break;
+ 
+   case 48:
+ #line 287 "tngparser.Y"
+-    {strncpy(localText,yyvsp[-1].str,80);;}
++    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
+     break;
+ 
+   case 49:
+ #line 288 "tngparser.Y"
+-    {FR->createTextCmd(Vector(yyvsp[-5].vector),
++    {FR->createTextCmd(Vector((yyvsp[(3) - (8)].vector)),
+ 	    0,
+ 	    localColor,1,globalFont,localText,
+ 	    localProps,localComment,taglist,cblist);;}
+@@ -1498,7 +1831,7 @@
+ 
+   case 54:
+ #line 303 "tngparser.Y"
+-    {polylist.append(new Vertex(yyvsp[0].vector));;}
++    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
+     break;
+ 
+   case 56:
+@@ -1518,7 +1851,7 @@
+ 
+   case 61:
+ #line 309 "tngparser.Y"
+-    {strncpy(globalText,yyvsp[0].str,80);;}
++    {strncpy(globalText,(yyvsp[(3) - (3)].str),80);;}
+     break;
+ 
+   case 63:
+@@ -1584,7 +1917,7 @@
+ 
+   case 74:
+ #line 331 "tngparser.Y"
+-    {strncpy(localComment,yyvsp[0].str,80);;}
++    {strncpy(localComment,(yyvsp[(3) - (3)].str),80);;}
+     break;
+ 
+   case 77:
+@@ -1609,20 +1942,19 @@
+ #line 346 "tngparser.Y"
+     {
+ 	    globalSystem = localSystem = WCS;
+-	    globalSky = localSky = (SkyFrame)yyvsp[-1].integer;
++	    globalSky = localSky = (SkyFrame)(yyvsp[(2) - (3)].integer);
+ 	  ;}
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 1952 "tngparser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 1621 "tngparser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -1651,99 +1983,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -1753,15 +2051,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -1790,9 +2090,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -1800,11 +2101,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -1824,21 +2126,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/fitsimage.h
++++ saods9-4.0b7/saotk/frame/fitsimage.h
+@@ -12,7 +12,7 @@
+ 
+ class FitsFile;
+ 
+-#include "wcs.h"
++#include "../../wcssubs-3.5.6/wcs.h"
+ 
+ class FitsImage {
+ protected:
+@@ -405,33 +405,33 @@
+   char* getKeyword(const char*);
+   int findKeyword(const char*);
+ 
+-  int FitsImage::saveFitsImageFile(const char* fn, int compress)
++  int saveFitsImageFile(const char* fn, int compress)
+     {return image_ ? image_->saveFitsImageFile(fn, compress) : 0;}
+ 
+-  int FitsImage::saveFitsImageChannel(Tcl_Interp* interp, const char* ch, 
++  int saveFitsImageChannel(Tcl_Interp* interp, const char* ch, 
+ 				      int compress)
+     {return image_ ? image_->saveFitsImageChannel(interp, ch, compress) : 0;}
+ 
+-  int FitsImage::saveFitsImageSocket(int s, int compress)
++  int saveFitsImageSocket(int s, int compress)
+     {return image_ ? image_->saveFitsImageSocket(s, compress) : 0;}
+ 
+-  int FitsImage::saveFitsTableFile(const char* fn, int compress)
++  int saveFitsTableFile(const char* fn, int compress)
+     {return fits_ ? fits_->saveFitsTableFile(fn, compress) : 0;}
+ 
+-  int FitsImage::saveFitsTableChannel(Tcl_Interp* interp, const char* ch, 
++  int saveFitsTableChannel(Tcl_Interp* interp, const char* ch, 
+ 				      int compress)
+     {return fits_ ? fits_->saveFitsTableChannel(interp, ch, compress): 0;}
+ 
+-  int FitsImage::saveFitsTableSocket(int s, int compress)
++  int saveFitsTableSocket(int s, int compress)
+     {return fits_ ? fits_->saveFitsTableSocket(s, compress) : 0;}
+ 
+-  int FitsImage::saveArrayFile(const char* fn)
++  int saveArrayFile(const char* fn)
+     {return image_ ? image_->saveArrayFile(fn) : 0;}
+ 
+-  int FitsImage::saveArrayChannel(Tcl_Interp* interp, const char* ch)
++  int saveArrayChannel(Tcl_Interp* interp, const char* ch)
+     {return image_ ? image_->saveArrayChannel(interp, ch) : 0;}
+ 
+-  int FitsImage::saveArraySocket(int s)
++  int saveArraySocket(int s)
+     {return image_ ? image_->saveArraySocket(s) : 0;}
+ };
+ 
+--- saods9-4.0b7.orig/saotk/frame/contourscale.C
++++ saods9-4.0b7/saotk/frame/contourscale.C
+@@ -3,7 +3,7 @@
+ // For conditions of distribution and use, see copyright notice in "copyright"
+ 
+ #include <math.h>
+-#include <iostream.h>
++#include <iostream>
+ 
+ #include "contourscale.h"
+ #include "framebase.h"
+--- saods9-4.0b7.orig/saotk/frame/lex.C
++++ saods9-4.0b7/saotk/frame/lex.C
+@@ -4,7 +4,7 @@
+ /* A lexical scanner generated by flex */
+ 
+ /* Scanner skeleton version:
+- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/lex.C,v 1.181 2005/08/24 21:41:24 joye Exp $
++ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
+  */
+ 
+ #define FLEX_SCANNER
+@@ -12,7 +12,6 @@
+ #define YY_FLEX_MINOR_VERSION 5
+ 
+ 
+-
+ /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+ #ifdef c_plusplus
+ #ifndef __cplusplus
+@@ -24,8 +23,12 @@
+ #ifdef __cplusplus
+ 
+ #include <stdlib.h>
+-#include <iostream>
+-using namespace std;
++#include <fstream>
++using std::istream;
++using std::ostream;
++#ifndef _WIN32
++#include <unistd.h>
++#endif
+ 
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -65,6 +68,7 @@
+ #define YY_PROTO(proto) ()
+ #endif
+ 
++
+ /* Returned upon end-of-file. */
+ #define YY_NULL 0
+ 
+@@ -995,7 +999,7 @@
+   extern frFlexLexer* frlexx;
+   extern int frsign;
+ /* rules */
+-#line 999 "lex.C"
++#line 1003 "lex.C"
+ 
+ /* Macros after this point can all be overridden by user definitions in
+  * section 1.
+@@ -1119,13 +1123,13 @@
+ YY_DECL
+ 	{
+ 	register yy_state_type yy_current_state;
+-	register char *yy_cp = NULL, *yy_bp = NULL;
++	register char *yy_cp, *yy_bp;
+ 	register int yy_act;
+ 
+ #line 29 "lex.L"
+ 
+ 
+-#line 1129 "lex.C"
++#line 1133 "lex.C"
+ 
+ 	if ( yy_init )
+ 		{
+@@ -2810,7 +2814,7 @@
+ #line 417 "lex.L"
+ ECHO;
+ 	YY_BREAK
+-#line 2814 "lex.C"
++#line 2818 "lex.C"
+ case YY_STATE_EOF(INITIAL):
+ 	yyterminate();
+ 
+@@ -3328,6 +3332,7 @@
+ 	return c;
+ 	}
+ 
++
+ void yyFlexLexer::yyrestart( istream* input_file )
+ 	{
+ 	if ( ! yy_current_buffer )
+--- saods9-4.0b7.orig/saotk/frame/xyparser.C
++++ saods9-4.0b7/saotk/frame/xyparser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse xyparse
+ #define yylex   xylex
+ #define yyerror xyerror
+@@ -118,6 +130,7 @@
+      WCSZ_ = 311
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define HOUR 260
+@@ -186,8 +199,8 @@
+ #define FITSPTR (FR->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -226,16 +239,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 40 "xyparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 239 "xyparser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 258 "xyparser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -246,56 +266,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 251 "xyparser.C"
++/* Line 216 of yacc.c.  */
++#line 271 "xyparser.C"
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++#endif
++
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
++
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
++# endif
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -305,24 +440,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -340,39 +475,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
++    while (YYID (0))
+ 
+ #endif
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+-#endif
+-
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  3
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   138
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  60
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  20
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  75
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  96
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   311
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       57,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -411,7 +540,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned char yyprhs[] =
++static const yytype_uint8 yyprhs[] =
+ {
+        0,     0,     3,     4,     7,    11,    14,    15,    18,    20,
+       22,    25,    26,    30,    31,    33,    36,    38,    40,    42,
+@@ -423,8 +552,8 @@
+      161,   163,   165,   167,   169,   171
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int8 yyrhs[] =
+ {
+       61,     0,    -1,    -1,    62,    63,    -1,    63,    64,    69,
+       -1,    64,    69,    -1,    -1,    16,    71,    -1,    29,    -1,
+@@ -447,7 +576,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+        0,   115,   115,   115,   121,   122,   125,   126,   127,   128,
+      129,   131,   131,   134,   135,   138,   139,   142,   145,   146,
+@@ -460,9 +589,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "HOUR", "MINUTE",
+@@ -482,7 +611,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -494,7 +623,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,    60,    62,    61,    63,    63,    64,    64,    64,    64,
+       64,    65,    64,    66,    66,    67,    67,    68,    69,    69,
+@@ -507,7 +636,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     0,     2,     3,     2,     0,     2,     1,     1,
+        2,     0,     3,     0,     1,     2,     1,     1,     1,     1,
+@@ -522,7 +651,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+        2,     0,    11,     1,    39,    38,     0,    40,    35,    36,
+       37,     8,    41,    42,    43,    44,    45,    46,    47,    48,
+@@ -536,8 +665,8 @@
+        0,     0,     0,     0,    32,    30
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const yysigned_char yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int8 yydefgoto[] =
+ {
+       -1,     1,     2,    39,    40,    41,    76,    77,    78,    50,
+       79,    45,    72,    57,    58,    87,    86,    42,    67,    59
+@@ -546,7 +675,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -46
+-static const yysigned_char yypact[] =
++static const yytype_int8 yypact[] =
+ {
+      -46,     4,    47,   -46,   -46,   -46,   -24,   -46,   -46,   -46,
+      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,
+@@ -561,7 +690,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const yysigned_char yypgoto[] =
++static const yytype_int8 yypgoto[] =
+ {
+      -46,   -46,   -46,   -46,    73,   -46,   -46,   -46,    36,    69,
+       33,   -46,    51,    42,   -46,   -46,   -46,   -46,   -46,   -46
+@@ -572,7 +701,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -7
+-static const yysigned_char yytable[] =
++static const yytype_int8 yytable[] =
+ {
+       -3,    60,    43,    44,     3,    61,    62,    63,    64,    65,
+       69,    66,    -6,     4,    71,     5,     6,     7,    75,    52,
+@@ -590,7 +719,7 @@
+        0,     0,     0,     0,     0,     0,     0,    88,    89
+ };
+ 
+-static const yysigned_char yycheck[] =
++static const yytype_int8 yycheck[] =
+ {
+        0,    14,    26,    27,     0,    18,    19,    20,    21,    22,
+        9,    24,    12,    13,    59,    15,    16,    17,     3,     4,
+@@ -610,7 +739,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,    61,    62,     0,    13,    15,    16,    17,    23,    25,
+       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+@@ -624,22 +753,6 @@
+        3,     3,     9,     9,    10,    10
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -665,30 +778,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -709,42 +855,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -753,45 +953,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -806,13 +1013,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -822,45 +1025,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -870,70 +1075,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
+ 
+-
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
++
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
++
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -941,13 +1268,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -956,10 +1283,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -972,14 +1299,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -990,13 +1321,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -1007,18 +1344,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -1027,9 +1364,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -1053,8 +1390,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -1067,18 +1403,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -1089,21 +1425,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -1134,19 +1470,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1161,7 +1495,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1181,22 +1515,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -1246,12 +1579,12 @@
+ 
+   case 9:
+ #line 128 "xyparser.Y"
+-    {globalSystem = (CoordSystem)yyvsp[0].integer;;}
++    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 10:
+ #line 130 "xyparser.Y"
+-    {globalSystem = (CoordSystem)yyvsp[-1].integer; globalSky = (SkyFrame)yyvsp[0].integer;;}
++    {globalSystem = (CoordSystem)(yyvsp[(1) - (2)].integer); globalSky = (SkyFrame)(yyvsp[(2) - (2)].integer);;}
+     break;
+ 
+   case 11:
+@@ -1271,12 +1604,12 @@
+ 
+   case 21:
+ #line 150 "xyparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 22:
+ #line 151 "xyparser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 23:
+@@ -1291,7 +1624,7 @@
+ 
+   case 27:
+ #line 162 "xyparser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 28:
+@@ -1299,13 +1632,13 @@
+     {
+ 	  Vector r;
+ 	  if (localSky == GALACTIC || localSky == ECLIPTIC) 
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
+ 	  else
+-	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real),localSystem,localSky);
++	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),localSystem,localSky);
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1318,12 +1651,12 @@
+ #line 178 "xyparser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(hmsToDegree(xysign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
+-	    dmsToDegree(xysign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(hmsToDegree(xysign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
++	    dmsToDegree(xysign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    localSystem, localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1336,238 +1669,238 @@
+ #line 189 "xyparser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(dmsToDegree(xysign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
+-	    dmsToDegree(xysign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(dmsToDegree(xysign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
++	    dmsToDegree(xysign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    localSystem, localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 33:
+ #line 199 "xyparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 34:
+ #line 206 "xyparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 35:
+ #line 214 "xyparser.Y"
+-    {yyval.integer = IMAGE;;}
++    {(yyval.integer) = IMAGE;;}
+     break;
+ 
+   case 36:
+ #line 215 "xyparser.Y"
+-    {yyval.integer = IMAGE;;}
++    {(yyval.integer) = IMAGE;;}
+     break;
+ 
+   case 37:
+ #line 216 "xyparser.Y"
+-    {yyval.integer = PHYSICAL;;}
++    {(yyval.integer) = PHYSICAL;;}
+     break;
+ 
+   case 38:
+ #line 217 "xyparser.Y"
+-    {yyval.integer = PHYSICAL;;}
++    {(yyval.integer) = PHYSICAL;;}
+     break;
+ 
+   case 39:
+ #line 218 "xyparser.Y"
+-    {yyval.integer = AMPLIFIER;;}
++    {(yyval.integer) = AMPLIFIER;;}
+     break;
+ 
+   case 40:
+ #line 219 "xyparser.Y"
+-    {yyval.integer = DETECTOR;;}
++    {(yyval.integer) = DETECTOR;;}
+     break;
+ 
+   case 41:
+ #line 220 "xyparser.Y"
+-    {yyval.integer = WCS;;}
++    {(yyval.integer) = WCS;;}
+     break;
+ 
+   case 42:
+ #line 221 "xyparser.Y"
+-    {yyval.integer = WCSA;;}
++    {(yyval.integer) = WCSA;;}
+     break;
+ 
+   case 43:
+ #line 222 "xyparser.Y"
+-    {yyval.integer = WCSB;;}
++    {(yyval.integer) = WCSB;;}
+     break;
+ 
+   case 44:
+ #line 223 "xyparser.Y"
+-    {yyval.integer = WCSC;;}
++    {(yyval.integer) = WCSC;;}
+     break;
+ 
+   case 45:
+ #line 224 "xyparser.Y"
+-    {yyval.integer = WCSD;;}
++    {(yyval.integer) = WCSD;;}
+     break;
+ 
+   case 46:
+ #line 225 "xyparser.Y"
+-    {yyval.integer = WCSE;;}
++    {(yyval.integer) = WCSE;;}
+     break;
+ 
+   case 47:
+ #line 226 "xyparser.Y"
+-    {yyval.integer = WCSF;;}
++    {(yyval.integer) = WCSF;;}
+     break;
+ 
+   case 48:
+ #line 227 "xyparser.Y"
+-    {yyval.integer = WCSG;;}
++    {(yyval.integer) = WCSG;;}
+     break;
+ 
+   case 49:
+ #line 228 "xyparser.Y"
+-    {yyval.integer = WCSH;;}
++    {(yyval.integer) = WCSH;;}
+     break;
+ 
+   case 50:
+ #line 229 "xyparser.Y"
+-    {yyval.integer = WCSI;;}
++    {(yyval.integer) = WCSI;;}
+     break;
+ 
+   case 51:
+ #line 230 "xyparser.Y"
+-    {yyval.integer = WCSJ;;}
++    {(yyval.integer) = WCSJ;;}
+     break;
+ 
+   case 52:
+ #line 231 "xyparser.Y"
+-    {yyval.integer = WCSK;;}
++    {(yyval.integer) = WCSK;;}
+     break;
+ 
+   case 53:
+ #line 232 "xyparser.Y"
+-    {yyval.integer = WCSL;;}
++    {(yyval.integer) = WCSL;;}
+     break;
+ 
+   case 54:
+ #line 233 "xyparser.Y"
+-    {yyval.integer = WCSM;;}
++    {(yyval.integer) = WCSM;;}
+     break;
+ 
+   case 55:
+ #line 234 "xyparser.Y"
+-    {yyval.integer = WCSN;;}
++    {(yyval.integer) = WCSN;;}
+     break;
+ 
+   case 56:
+ #line 235 "xyparser.Y"
+-    {yyval.integer = WCSO;;}
++    {(yyval.integer) = WCSO;;}
+     break;
+ 
+   case 57:
+ #line 236 "xyparser.Y"
+-    {yyval.integer = WCSP;;}
++    {(yyval.integer) = WCSP;;}
+     break;
+ 
+   case 58:
+ #line 237 "xyparser.Y"
+-    {yyval.integer = WCSQ;;}
++    {(yyval.integer) = WCSQ;;}
+     break;
+ 
+   case 59:
+ #line 238 "xyparser.Y"
+-    {yyval.integer = WCSR;;}
++    {(yyval.integer) = WCSR;;}
+     break;
+ 
+   case 60:
+ #line 239 "xyparser.Y"
+-    {yyval.integer = WCSS;;}
++    {(yyval.integer) = WCSS;;}
+     break;
+ 
+   case 61:
+ #line 240 "xyparser.Y"
+-    {yyval.integer = WCST;;}
++    {(yyval.integer) = WCST;;}
+     break;
+ 
+   case 62:
+ #line 241 "xyparser.Y"
+-    {yyval.integer = WCSU;;}
++    {(yyval.integer) = WCSU;;}
+     break;
+ 
+   case 63:
+ #line 242 "xyparser.Y"
+-    {yyval.integer = WCSV;;}
++    {(yyval.integer) = WCSV;;}
+     break;
+ 
+   case 64:
+ #line 243 "xyparser.Y"
+-    {yyval.integer = WCSW;;}
++    {(yyval.integer) = WCSW;;}
+     break;
+ 
+   case 65:
+ #line 244 "xyparser.Y"
+-    {yyval.integer = WCSX;;}
++    {(yyval.integer) = WCSX;;}
+     break;
+ 
+   case 66:
+ #line 245 "xyparser.Y"
+-    {yyval.integer = WCSY;;}
++    {(yyval.integer) = WCSY;;}
+     break;
+ 
+   case 67:
+ #line 246 "xyparser.Y"
+-    {yyval.integer = WCSZ;;}
++    {(yyval.integer) = WCSZ;;}
+     break;
+ 
+   case 68:
+ #line 249 "xyparser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 69:
+ #line 250 "xyparser.Y"
+-    {yyval.integer = FK4;;}
++    {(yyval.integer) = FK4;;}
+     break;
+ 
+   case 70:
+ #line 251 "xyparser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 71:
+ #line 252 "xyparser.Y"
+-    {yyval.integer = FK5;;}
++    {(yyval.integer) = FK5;;}
+     break;
+ 
+   case 72:
+ #line 253 "xyparser.Y"
+-    {yyval.integer = ICRS;;}
++    {(yyval.integer) = ICRS;;}
+     break;
+ 
+   case 73:
+ #line 254 "xyparser.Y"
+-    {yyval.integer = GALACTIC;;}
++    {(yyval.integer) = GALACTIC;;}
+     break;
+ 
+   case 74:
+ #line 255 "xyparser.Y"
+-    {yyval.integer = ECLIPTIC;;}
++    {(yyval.integer) = ECLIPTIC;;}
+     break;
+ 
+   case 75:
+ #line 258 "xyparser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[0].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(1) - (1)].vector)),
+ 	    "green",1,"helvetica 10 normal","",
+ 	    Marker::SELECT | Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
+ 	    Marker::DELETE | Marker::HIGHLITE | 
+@@ -1577,15 +1910,14 @@
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 1915 "xyparser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 1584 "xyparser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -1614,99 +1946,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -1716,15 +2014,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -1753,9 +2053,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -1763,11 +2064,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -1787,21 +2089,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/frame/tngparser.Y
++++ saods9-4.0b7/saotk/frame/tngparser.Y
+@@ -12,8 +12,8 @@
+ #define DISCARD_(x) {yyclearin; tngDiscard(x);}
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+--- saods9-4.0b7.orig/saotk/frame/ciaoparser.C
++++ saods9-4.0b7/saotk/frame/ciaoparser.C
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c.  */
++/* A Bison parser, made by GNU Bison 2.3.  */
+ 
+-/* Skeleton parser for Yacc-like parsing with Bison,
+-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++   Free Software Foundation, Inc.
+ 
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+-   Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.  */
++   Foundation, Inc., 51 Franklin Street, Fifth Floor,
++   Boston, MA 02110-1301, USA.  */
++
++/* As a special exception, you may create a larger work that contains
++   part or all of the Bison parser skeleton and distribute that work
++   under terms of your choice, so long as that work isn't itself a
++   parser generator using the skeleton or a modified version thereof
++   as a parser skeleton.  Alternatively, if you modify or redistribute
++   the parser skeleton itself, you may (at your option) remove this
++   special exception, which will cause the skeleton and the resulting
++   Bison output files to be licensed under the GNU General Public
++   License without this special exception.
+ 
+-/* As a special exception, when this file is copied by Bison into a
+-   Bison output file, you may use that output file without restriction.
+-   This special exception was added by the Free Software Foundation
+-   in version 1.24 of Bison.  */
++   This special exception was added by the Free Software Foundation in
++   version 2.2 of Bison.  */
+ 
+-/* Written by Richard Stallman by simplifying the original so called
+-   ``semantic'' parser.  */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++   simplifying the original so-called "semantic" parser.  */
+ 
+ /* All symbols defined below should begin with yy or YY, to avoid
+    infringing on user name space.  This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output.  */
+ #define YYBISON 1
+ 
++/* Bison version.  */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+ 
+@@ -45,8 +58,7 @@
+ /* Using locations.  */
+ #define YYLSP_NEEDED 0
+ 
+-/* If NAME_PREFIX is specified substitute the variables and functions
+-   names.  */
++/* Substitute the variable and function names.  */
+ #define yyparse ciaoparse
+ #define yylex   ciaolex
+ #define yyerror ciaoerror
+@@ -85,6 +97,7 @@
+      VERSION_ = 278
+    };
+ #endif
++/* Tokens.  */
+ #define INT 258
+ #define REAL 259
+ #define HOUR 260
+@@ -120,8 +133,8 @@
+ #define FITSPTR (FR->findFits(1))
+ 
+ #include <math.h>
+-#include <string.h>
+-#include <iostream.h>
++#include <string>
++#include <iostream>
+ 
+ #include "framebase.h"
+ #include "fitsimage.h"
+@@ -163,16 +176,23 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
+ #line 43 "ciaoparser.Y"
+-typedef union YYSTYPE {
++{
+   double real;
+   int integer;
+   char str[2048];
+   double vector[3];
+-} YYSTYPE;
+-/* Line 191 of yacc.c.  */
+-#line 176 "ciaoparser.C"
++}
++/* Line 193 of yacc.c.  */
++#line 195 "ciaoparser.C"
++	YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -183,56 +203,171 @@
+ /* Copy the second part of user declarations.  */
+ 
+ 
+-/* Line 214 of yacc.c.  */
+-#line 188 "ciaoparser.C"
++/* Line 216 of yacc.c.  */
++#line 208 "ciaoparser.C"
+ 
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
+ 
+-# ifndef YYFREE
+-#  define YYFREE free
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++#  define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++#  define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++#  define YYSIZE_T size_t
++# else
++#  define YYSIZE_T unsigned int
+ # endif
+-# ifndef YYMALLOC
+-#  define YYMALLOC malloc
++#endif
++
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
++
++#ifndef YY_
++# if YYENABLE_NLS
++#  if ENABLE_NLS
++#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
++#  endif
++# endif
++# ifndef YY_
++#  define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E.  */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++    int i;
++#endif
++{
++  return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+ 
+ # ifdef YYSTACK_USE_ALLOCA
+ #  if YYSTACK_USE_ALLOCA
+-#   define YYSTACK_ALLOC alloca
+-#  endif
+-# else
+-#  if defined (alloca) || defined (_ALLOCA_H)
+-#   define YYSTACK_ALLOC alloca
+-#  else
+ #   ifdef __GNUC__
+ #    define YYSTACK_ALLOC __builtin_alloca
++#   elif defined __BUILTIN_VA_ARG_INCR
++#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++#   elif defined _AIX
++#    define YYSTACK_ALLOC __alloca
++#   elif defined _MSC_VER
++#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++#    define alloca _alloca
++#   else
++#    define YYSTACK_ALLOC alloca
++#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#     ifndef _STDLIB_H
++#      define _STDLIB_H 1
++#     endif
++#    endif
+ #   endif
+ #  endif
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's `empty if-body' warning. */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-#  if defined (__STDC__) || defined (__cplusplus)
+-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YYSIZE_T size_t
++   /* Pacify GCC's `empty if-body' warning.  */
++#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++    /* The OS might guarantee only one guard page at the bottom of the stack,
++       and a page size can be as small as 4096 bytes.  So we cannot safely
++       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
++       to allow for a few compiler-allocated temporary stack slots.  */
++#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ #  endif
++# else
+ #  define YYSTACK_ALLOC YYMALLOC
+ #  define YYSTACK_FREE YYFREE
++#  ifndef YYSTACK_ALLOC_MAXIMUM
++#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++#  endif
++#  if (defined __cplusplus && ! defined _STDLIB_H \
++       && ! ((defined YYMALLOC || defined malloc) \
++	     && (defined YYFREE || defined free)))
++#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++#   ifndef _STDLIB_H
++#    define _STDLIB_H 1
++#   endif
++#  endif
++#  ifndef YYMALLOC
++#   define YYMALLOC malloc
++#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
++#  ifndef YYFREE
++#   define YYFREE free
++#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++#   endif
++#  endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+ 
+ 
+-#if (! defined (yyoverflow) \
+-     && (! defined (__cplusplus) \
+-	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++     && (! defined __cplusplus \
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+ {
+-  short yyss;
++  yytype_int16 yyss;
+   YYSTYPE yyvs;
+   };
+ 
+@@ -242,24 +377,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+    N elements.  */
+ # define YYSTACK_BYTES(N) \
+-     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
++     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+       + YYSTACK_GAP_MAXIMUM)
+ 
+ /* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+-#  if defined (__GNUC__) && 1 < __GNUC__
++#  if defined __GNUC__ && 1 < __GNUC__
+ #   define YYCOPY(To, From, Count) \
+       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+ #   define YYCOPY(To, From, Count)		\
+       do					\
+ 	{					\
+-	  register YYSIZE_T yyi;		\
++	  YYSIZE_T yyi;				\
+ 	  for (yyi = 0; yyi < (Count); yyi++)	\
+ 	    (To)[yyi] = (From)[yyi];		\
+ 	}					\
+-      while (0)
++      while (YYID (0))
+ #  endif
+ # endif
+ 
+@@ -277,39 +412,33 @@
+ 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ 	yyptr += yynewbytes / sizeof (*yyptr);				\
+       }									\
+-    while (0)
++    while (YYID (0))
+ 
+ #endif
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-   typedef signed char yysigned_char;
+-#else
+-   typedef short yysigned_char;
+-#endif
+-
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state.  */
+ #define YYFINAL  9
+ /* YYLAST -- Last index in YYTABLE.  */
+ #define YYLAST   135
+ 
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals.  */
+ #define YYNTOKENS  31
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals.  */
+ #define YYNNTS  22
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules.  */
+ #define YYNRULES  50
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  122
+ 
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   278
+ 
+-#define YYTRANSLATE(YYX) 						\
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       24,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -344,7 +473,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+    YYRHS.  */
+-static const unsigned char yyprhs[] =
++static const yytype_uint8 yyprhs[] =
+ {
+        0,     0,     3,     7,    10,    11,    14,    16,    20,    22,
+       24,    26,    28,    30,    32,    34,    35,    37,    38,    40,
+@@ -354,8 +483,8 @@
+      171
+ };
+ 
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int8 yyrhs[] =
+ {
+       32,     0,    -1,    32,    33,    34,    -1,    33,    34,    -1,
+       -1,    15,    36,    -1,    23,    -1,    40,    48,    49,    -1,
+@@ -378,7 +507,7 @@
+ };
+ 
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+-static const unsigned char yyrline[] =
++static const yytype_uint8 yyrline[] =
+ {
+        0,    86,    86,    87,    90,    91,    92,    93,    96,    97,
+       98,   101,   102,   105,   106,   109,   110,   113,   114,   117,
+@@ -389,9 +518,9 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+ static const char *const yytname[] =
+ {
+   "$end", "error", "$undefined", "INT", "REAL", "HOUR", "MINUTE",
+@@ -408,7 +537,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+    token YYLEX-NUM.  */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+@@ -418,7 +547,7 @@
+ # endif
+ 
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+        0,    31,    32,    32,    33,    33,    33,    33,    34,    34,
+       34,    35,    35,    36,    36,    37,    37,    38,    38,    39,
+@@ -429,7 +558,7 @@
+ };
+ 
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+        0,     2,     3,     2,     0,     2,     1,     3,     1,     1,
+        1,     1,     1,     1,     1,     0,     1,     0,     1,     0,
+@@ -442,7 +571,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+    means the default is an error.  */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+       21,     0,     6,    21,     0,    36,    14,    13,     5,     1,
+        0,    10,     8,     9,     3,    37,    38,     0,     2,    17,
+@@ -459,8 +588,8 @@
+       19,    42
+ };
+ 
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const yysigned_char yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM].  */
++static const yytype_int8 yydefgoto[] =
+ {
+       -1,     3,     4,    14,    41,     8,    54,    29,    62,     5,
+      105,    75,    79,    42,    63,    87,    86,    17,    27,    35,
+@@ -470,7 +599,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+    STATE-NUM.  */
+ #define YYPACT_NINF -89
+-static const yysigned_char yypact[] =
++static const yytype_int8 yypact[] =
+ {
+       81,   -11,   -89,    61,     3,   -19,   -89,   -89,   -89,   -89,
+        3,   -89,   -89,   -89,   -89,   -89,   -89,    95,   -89,   -15,
+@@ -488,7 +617,7 @@
+ };
+ 
+ /* YYPGOTO[NTERM-NUM].  */
+-static const yysigned_char yypgoto[] =
++static const yytype_int8 yypgoto[] =
+ {
+      -89,   -89,    72,    87,   -41,   -89,   -42,    67,   -38,   -89,
+      -88,   -37,   -29,    22,    89,   -89,   -89,   -89,   -89,   -89,
+@@ -500,7 +629,7 @@
+    number is the opposite.  If zero, do what YYDEFACT says.
+    If YYTABLE_NINF, syntax error.  */
+ #define YYTABLE_NINF -20
+-static const yysigned_char yytable[] =
++static const yytype_int8 yytable[] =
+ {
+       55,    56,    57,    58,    59,    60,     6,     7,    66,   107,
+       15,    16,    28,    70,    11,    74,    78,    74,    78,    74,
+@@ -518,7 +647,7 @@
+       38,     0,     0,    40,    76,    77
+ };
+ 
+-static const yysigned_char yycheck[] =
++static const yytype_int8 yycheck[] =
+ {
+       42,    43,    44,    45,    46,    47,    17,    18,    50,    97,
+       29,    30,    27,    54,    11,    56,    57,    58,    59,    60,
+@@ -538,7 +667,7 @@
+ 
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+    symbol of state STATE-NUM.  */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+        0,    15,    23,    32,    33,    40,    17,    18,    36,     0,
+       33,    11,    24,    25,    34,    29,    30,    48,    34,    12,
+@@ -555,22 +684,6 @@
+       41,    39
+ };
+ 
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-#  define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok		(yyerrstatus = 0)
+ #define yyclearin	(yychar = YYEMPTY)
+ #define YYEMPTY		(-2)
+@@ -596,30 +709,63 @@
+       yychar = (Token);						\
+       yylval = (Value);						\
+       yytoken = YYTRANSLATE (yychar);				\
+-      YYPOPSTACK;						\
++      YYPOPSTACK (1);						\
+       goto yybackup;						\
+     }								\
+   else								\
+-    { 								\
+-      yyerror ("syntax error: cannot back up");\
++    {								\
++      yyerror (YY_("syntax error: cannot back up")); \
+       YYERROR;							\
+     }								\
+-while (0)
++while (YYID (0))
++
+ 
+ #define YYTERROR	1
+ #define YYERRCODE	256
+ 
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+-   are run).  */
+ 
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++   If N is 0, then set CURRENT to the empty location which ends
++   the previous symbol: RHS[0] (always defined).  */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
+-   ((Current).first_line   = (Rhs)[1].first_line,	\
+-    (Current).first_column = (Rhs)[1].first_column,	\
+-    (Current).last_line    = (Rhs)[N].last_line,	\
+-    (Current).last_column  = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N)				\
++    do									\
++      if (YYID (N))                                                    \
++	{								\
++	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
++	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
++	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
++	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
++	}								\
++      else								\
++	{								\
++	  (Current).first_line   = (Current).last_line   =		\
++	    YYRHSLOC (Rhs, 0).last_line;				\
++	  (Current).first_column = (Current).last_column =		\
++	    YYRHSLOC (Rhs, 0).last_column;				\
++	}								\
++    while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++   This macro was not mandated originally: define only if we know
++   we won't break user code: when these are the locations we know.  */
++
++#ifndef YY_LOCATION_PRINT
++# if YYLTYPE_IS_TRIVIAL
++#  define YY_LOCATION_PRINT(File, Loc)			\
++     fprintf (File, "%d.%d-%d.%d",			\
++	      (Loc).first_line, (Loc).first_column,	\
++	      (Loc).last_line,  (Loc).last_column)
++# else
++#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+ 
++
+ /* YYLEX -- calling `yylex' with the right arguments.  */
+ 
+ #ifdef YYLEX_PARAM
+@@ -640,42 +786,96 @@
+ do {						\
+   if (yydebug)					\
+     YYFPRINTF Args;				\
+-} while (0)
++} while (YYID (0))
+ 
+-# define YYDSYMPRINT(Args)			\
+-do {						\
+-  if (yydebug)					\
+-    yysymprint Args;				\
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
++do {									  \
++  if (yydebug)								  \
++    {									  \
++      YYFPRINTF (stderr, "%s ", Title);					  \
++      yy_symbol_print (stderr,						  \
++		  Type, Value); \
++      YYFPRINTF (stderr, "\n");						  \
++    }									  \
++} while (YYID (0))
+ 
+-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+-do {								\
+-  if (yydebug)							\
+-    {								\
+-      YYFPRINTF (stderr, "%s ", Title);				\
+-      yysymprint (stderr, 					\
+-                  Token, Value);	\
+-      YYFPRINTF (stderr, "\n");					\
+-    }								\
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (!yyvaluep)
++    return;
++# ifdef YYPRINT
++  if (yytype < YYNTOKENS)
++    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
++# endif
++  switch (yytype)
++    {
++      default:
++	break;
++    }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT.  |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
++{
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
++  YYFPRINTF (yyoutput, ")");
++}
+ 
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+-    short *bottom;
+-    short *top;
++    yytype_int16 *bottom;
++    yytype_int16 *top;
+ #endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+-  for (/* Nothing. */; bottom <= top; ++bottom)
++  for (; bottom <= top; ++bottom)
+     YYFPRINTF (stderr, " %d", *bottom);
+   YYFPRINTF (stderr, "\n");
+ }
+@@ -684,45 +884,52 @@
+ do {								\
+   if (yydebug)							\
+     yy_stack_print ((Bottom), (Top));				\
+-} while (0)
++} while (YYID (0))
+ 
+ 
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced.  |
+ `------------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
+     int yyrule;
+ #endif
+ {
++  int yynrhs = yyr2[yyrule];
+   int yyi;
+-  unsigned int yylno = yyrline[yyrule];
+-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+-             yyrule - 1, yylno);
+-  /* Print the symbols being reduced, and their result.  */
+-  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+-    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+-  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++  unsigned long int yylno = yyrline[yyrule];
++  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++	     yyrule - 1, yylno);
++  /* The symbols being reduced.  */
++  for (yyi = 0; yyi < yynrhs; yyi++)
++    {
++      fprintf (stderr, "   $%d = ", yyi + 1);
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
++      fprintf (stderr, "\n");
++    }
+ }
+ 
+ # define YY_REDUCE_PRINT(Rule)		\
+ do {					\
+   if (yydebug)				\
+-    yy_reduce_print (Rule);		\
+-} while (0)
++    yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+ 
+ /* Nonzero means print parse trace.  It is left uninitialized so that
+    multiple parsers can coexist.  */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -737,13 +944,9 @@
+    if the built-in stack extension method is used).
+ 
+    Do not make this value too large; the results are undefined if
+-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+    evaluated with infinite-precision integer arithmetic.  */
+ 
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -753,45 +956,47 @@
+ #if YYERROR_VERBOSE
+ 
+ # ifndef yystrlen
+-#  if defined (__GLIBC__) && defined (_STRING_H)
++#  if defined __GLIBC__ && defined _STRING_H
+ #   define yystrlen strlen
+ #  else
+ /* Return the length of YYSTR.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-#   else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+-     const char *yystr;
+-#   endif
++    const char *yystr;
++#endif
+ {
+-  register const char *yys = yystr;
+-
+-  while (*yys++ != '\0')
++  YYSIZE_T yylen;
++  for (yylen = 0; yystr[yylen]; yylen++)
+     continue;
+-
+-  return yys - yystr - 1;
++  return yylen;
+ }
+ #  endif
+ # endif
+ 
+ # ifndef yystpcpy
+-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ #   define yystpcpy stpcpy
+ #  else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+    YYDEST.  */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static char *
+-#   if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-#   else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+-     char *yydest;
+-     const char *yysrc;
+-#   endif
++    char *yydest;
++    const char *yysrc;
++#endif
+ {
+-  register char *yyd = yydest;
+-  register const char *yys = yysrc;
++  char *yyd = yydest;
++  const char *yys = yysrc;
+ 
+   while ((*yyd++ = *yys++) != '\0')
+     continue;
+@@ -801,70 +1006,192 @@
+ #  endif
+ # endif
+ 
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++   quotes and backslashes, so that it's suitable for yyerror.  The
++   heuristic is that double-quoting is unnecessary unless the string
++   contains an apostrophe, a comma, or backslash (other than
++   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
++   null, do not copy; instead, return the length of what the result
++   would have been.  */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++  if (*yystr == '"')
++    {
++      YYSIZE_T yyn = 0;
++      char const *yyp = yystr;
+ 
+-
++      for (;;)
++	switch (*++yyp)
++	  {
++	  case '\'':
++	  case ',':
++	    goto do_not_strip_quotes;
++
++	  case '\\':
++	    if (*++yyp != '\\')
++	      goto do_not_strip_quotes;
++	    /* Fall through.  */
++	  default:
++	    if (yyres)
++	      yyres[yyn] = *yyp;
++	    yyn++;
++	    break;
++
++	  case '"':
++	    if (yyres)
++	      yyres[yyn] = '\0';
++	    return yyn;
++	  }
++    do_not_strip_quotes: ;
++    }
+ 
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT.  |
+-`--------------------------------*/
++  if (! yyres)
++    return yystrlen (yystr);
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+-    FILE *yyoutput;
+-    int yytype;
+-    YYSTYPE *yyvaluep;
+-#endif
++  return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
++   including the terminating null byte.  If YYRESULT is null, do not
++   copy anything; just return the number of bytes that would be
++   copied.  As a special case, return 0 if an ordinary "syntax error"
++   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
++   size calculation.  */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  int yyn = yypact[yystate];
+ 
+-  if (yytype < YYNTOKENS)
++  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++    return 0;
++  else
+     {
+-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++      int yytype = YYTRANSLATE (yychar);
++      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++      YYSIZE_T yysize = yysize0;
++      YYSIZE_T yysize1;
++      int yysize_overflow = 0;
++      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++      int yyx;
++
++# if 0
++      /* This is so xgettext sees the translatable formats that are
++	 constructed on the fly.  */
++      YY_("syntax error, unexpected %s");
++      YY_("syntax error, unexpected %s, expecting %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+-    }
+-  else
+-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++      char *yyfmt;
++      char const *yyf;
++      static char const yyunexpected[] = "syntax error, unexpected %s";
++      static char const yyexpecting[] = ", expecting %s";
++      static char const yyor[] = " or %s";
++      char yyformat[sizeof yyunexpected
++		    + sizeof yyexpecting - 1
++		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++		       * (sizeof yyor - 1))];
++      char const *yyprefix = yyexpecting;
++
++      /* Start YYX at -YYN if negative to avoid negative indexes in
++	 YYCHECK.  */
++      int yyxbegin = yyn < 0 ? -yyn : 0;
++
++      /* Stay within bounds of both yycheck and yytname.  */
++      int yychecklim = YYLAST - yyn + 1;
++      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++      int yycount = 1;
++
++      yyarg[0] = yytname[yytype];
++      yyfmt = yystpcpy (yyformat, yyunexpected);
++
++      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++	  {
++	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++	      {
++		yycount = 1;
++		yysize = yysize0;
++		yyformat[sizeof yyunexpected - 1] = '\0';
++		break;
++	      }
++	    yyarg[yycount++] = yytname[yyx];
++	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++	    yysize_overflow |= (yysize1 < yysize);
++	    yysize = yysize1;
++	    yyfmt = yystpcpy (yyfmt, yyprefix);
++	    yyprefix = yyor;
++	  }
++
++      yyf = YY_(yyformat);
++      yysize1 = yysize + yystrlen (yyf);
++      yysize_overflow |= (yysize1 < yysize);
++      yysize = yysize1;
+ 
+-  switch (yytype)
+-    {
+-      default:
+-        break;
++      if (yysize_overflow)
++	return YYSIZE_MAXIMUM;
++
++      if (yyresult)
++	{
++	  /* Avoid sprintf, as that infringes on the user's name space.
++	     Don't have undefined behavior even if the translation
++	     produced a string with the wrong number of "%s"s.  */
++	  char *yyp = yyresult;
++	  int yyi = 0;
++	  while ((*yyp = *yyf) != '\0')
++	    {
++	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++		{
++		  yyp += yytnamerr (yyp, yyarg[yyi++]);
++		  yyf += 2;
++		}
++	      else
++		{
++		  yyp++;
++		  yyf++;
++		}
++	    }
++	}
++      return yysize;
+     }
+-  YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+ 
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol.  |
+ `-----------------------------------------------*/
+ 
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep)
++    const char *yymsg;
+     int yytype;
+     YYSTYPE *yyvaluep;
+ #endif
+ {
+-  /* Pacify ``unused variable'' warnings.  */
+-  (void) yyvaluep;
++  YYUSE (yyvaluep);
++
++  if (!yymsg)
++    yymsg = "Deleting";
++  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+   switch (yytype)
+     {
+ 
+       default:
+-        break;
++	break;
+     }
+ }
+ 
+@@ -872,13 +1199,13 @@
+ /* Prevent warnings from -Wmissing-prototypes.  */
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
+ #else
+ int yyparse ();
+@@ -887,10 +1214,10 @@
+ 
+ 
+ 
+-/* The lookahead symbol.  */
++/* The look-ahead symbol.  */
+ int yychar;
+ 
+-/* The semantic value of the lookahead symbol.  */
++/* The semantic value of the look-ahead symbol.  */
+ YYSTYPE yylval;
+ 
+ /* Number of syntax errors so far.  */
+@@ -903,14 +1230,18 @@
+ `----------*/
+ 
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+-  void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++    void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
+ #else
+@@ -921,13 +1252,19 @@
+ #endif
+ {
+   
+-  register int yystate;
+-  register int yyn;
++  int yystate;
++  int yyn;
+   int yyresult;
+   /* Number of tokens to shift before error messages enabled.  */
+   int yyerrstatus;
+-  /* Lookahead token as an internal (translated) token number.  */
++  /* Look-ahead token as an internal (translated) token number.  */
+   int yytoken = 0;
++#if YYERROR_VERBOSE
++  /* Buffer for error messages, and its allocated size.  */
++  char yymsgbuf[128];
++  char *yymsg = yymsgbuf;
++  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+ 
+   /* Three stacks and their tools:
+      `yyss': related to states,
+@@ -938,18 +1275,18 @@
+      to reallocate them elsewhere.  */
+ 
+   /* The state stack.  */
+-  short	yyssa[YYINITDEPTH];
+-  short *yyss = yyssa;
+-  register short *yyssp;
++  yytype_int16 yyssa[YYINITDEPTH];
++  yytype_int16 *yyss = yyssa;
++  yytype_int16 *yyssp;
+ 
+   /* The semantic value stack.  */
+   YYSTYPE yyvsa[YYINITDEPTH];
+   YYSTYPE *yyvs = yyvsa;
+-  register YYSTYPE *yyvsp;
++  YYSTYPE *yyvsp;
+ 
+ 
+ 
+-#define YYPOPSTACK   (yyvsp--, yyssp--)
++#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+ 
+   YYSIZE_T yystacksize = YYINITDEPTH;
+ 
+@@ -958,9 +1295,9 @@
+   YYSTYPE yyval;
+ 
+ 
+-  /* When reducing, the number of symbols on the RHS of the reduced
+-     rule.  */
+-  int yylen;
++  /* The number of symbols on the RHS of the reduced rule.
++     Keep to zero when no symbol should be popped.  */
++  int yylen = 0;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+ 
+@@ -984,8 +1321,7 @@
+ `------------------------------------------------------------*/
+  yynewstate:
+   /* In all cases, when you get here, the value and location stacks
+-     have just been pushed. so pushing a state here evens the stacks.
+-     */
++     have just been pushed.  So pushing a state here evens the stacks.  */
+   yyssp++;
+ 
+  yysetstate:
+@@ -998,18 +1334,18 @@
+ 
+ #ifdef yyoverflow
+       {
+-	/* Give user a chance to reallocate the stack. Use copies of
++	/* 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;
++	yytype_int16 *yyss1 = yyss;
+ 
+ 
+ 	/* Each stack pointer address is followed by the size of the
+ 	   data in use in that stack, in bytes.  This used to be a
+ 	   conditional around just the two extra args, but that might
+ 	   be undefined if yyoverflow is a macro.  */
+-	yyoverflow ("parser stack overflow",
++	yyoverflow (YY_("memory exhausted"),
+ 		    &yyss1, yysize * sizeof (*yyssp),
+ 		    &yyvs1, yysize * sizeof (*yyvsp),
+ 
+@@ -1020,21 +1356,21 @@
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+-      goto yyoverflowlab;
++      goto yyexhaustedlab;
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-	goto yyoverflowlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+ 	yystacksize = YYMAXDEPTH;
+ 
+       {
+-	short *yyss1 = yyss;
++	yytype_int16 *yyss1 = yyss;
+ 	union yyalloc *yyptr =
+ 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ 	if (! yyptr)
+-	  goto yyoverflowlab;
++	  goto yyexhaustedlab;
+ 	YYSTACK_RELOCATE (yyss);
+ 	YYSTACK_RELOCATE (yyvs);
+ 
+@@ -1065,19 +1401,17 @@
+ `-----------*/
+ 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.  */
++  /* Do appropriate processing given the current state.  Read a
++     look-ahead token if we need one and don't already have one.  */
+ 
++  /* First try to decide what to do without reference to look-ahead token.  */
+   yyn = yypact[yystate];
+   if (yyn == YYPACT_NINF)
+     goto yydefault;
+ 
+-  /* Not known => get a lookahead token if don't already have one.  */
++  /* Not known => get a look-ahead token if don't already have one.  */
+ 
+-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
++  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1092,7 +1426,7 @@
+   else
+     {
+       yytoken = YYTRANSLATE (yychar);
+-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+     }
+ 
+   /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1112,22 +1446,21 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  /* Shift the lookahead token.  */
+-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+-  /* Discard the token being shifted unless it is eof.  */
+-  if (yychar != YYEOF)
+-    yychar = YYEMPTY;
+-
+-  *++yyvsp = yylval;
+-
+-
+   /* Count tokens shifted since error; after three, turn off error
+      status.  */
+   if (yyerrstatus)
+     yyerrstatus--;
+ 
++  /* Shift the look-ahead token.  */
++  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++  /* Discard the shifted token unless it is eof.  */
++  if (yychar != YYEOF)
++    yychar = YYEMPTY;
++
+   yystate = yyn;
++  *++yyvsp = yylval;
++
+   goto yynewstate;
+ 
+ 
+@@ -1174,12 +1507,12 @@
+ 
+   case 11:
+ #line 101 "ciaoparser.Y"
+-    {yyval.real=yyvsp[0].real;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
+     break;
+ 
+   case 12:
+ #line 102 "ciaoparser.Y"
+-    {yyval.real=yyvsp[0].integer;;}
++    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
+     break;
+ 
+   case 13:
+@@ -1204,67 +1537,67 @@
+ 
+   case 22:
+ #line 129 "ciaoparser.Y"
+-    {yyval.real = degToRad(yyvsp[0].real);;}
++    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
+     break;
+ 
+   case 23:
+ #line 132 "ciaoparser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, PHYSICAL);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
+     break;
+ 
+   case 24:
+ #line 133 "ciaoparser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, WCS, ARCMIN);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCMIN);;}
+     break;
+ 
+   case 25:
+ #line 134 "ciaoparser.Y"
+-    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, WCS, ARCSEC);;}
++    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCSEC);;}
+     break;
+ 
+   case 26:
+ #line 138 "ciaoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 27:
+ #line 145 "ciaoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), WCS, ARCMIN);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCMIN);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 28:
+ #line 152 "ciaoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), WCS, ARCSEC);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCSEC);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 29:
+ #line 160 "ciaoparser.Y"
+-    {yyval.real = parseDMS(yyvsp[0].str);;}
++    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
+     break;
+ 
+   case 30:
+ #line 164 "ciaoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real),WCS,FK5);
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),WCS,FK5);
+ 
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1277,12 +1610,12 @@
+ #line 172 "ciaoparser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(hmsToDegree(ciaosign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
+-	    dmsToDegree(ciaosign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(hmsToDegree(ciaosign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
++	    dmsToDegree(ciaosign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    WCS, FK5);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1295,22 +1628,22 @@
+ #line 183 "ciaoparser.Y"
+     {
+ 	  Vector r = FITSPTR->mapToRef(
+-	    Vector(dmsToDegree(ciaosign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
+-	    dmsToDegree(ciaosign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
++	    Vector(dmsToDegree(ciaosign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
++	    dmsToDegree(ciaosign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
+ 	    WCS, FK5);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+   case 35:
+ #line 193 "ciaoparser.Y"
+     {
+-	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
+-	  yyval.vector[0] = r[0];
+-	  yyval.vector[1] = r[1];
+-	  yyval.vector[2] = r[2];
++	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
++	  (yyval.vector)[0] = r[0];
++	  (yyval.vector)[1] = r[1];
++	  (yyval.vector)[2] = r[2];
+ 	;}
+     break;
+ 
+@@ -1326,52 +1659,52 @@
+ 
+   case 39:
+ #line 207 "ciaoparser.Y"
+-    {FR->createCircleCmd(Vector(yyvsp[-3].vector),
+-	    yyvsp[-1].real,
++    {FR->createCircleCmd(Vector((yyvsp[(3) - (6)].vector)),
++	    (yyvsp[(5) - (6)].real),
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 40:
+ #line 212 "ciaoparser.Y"
+-    {FR->createEllipseCmd(Vector(yyvsp[-5].vector),
+-	    Vector(yyvsp[-3].vector),yyvsp[-1].real,
++    {FR->createEllipseCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    Vector((yyvsp[(5) - (8)].vector)),(yyvsp[(7) - (8)].real),
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 41:
+ #line 217 "ciaoparser.Y"
+-    {FR->createAnnulusCmd(Vector(yyvsp[-5].vector),
+-	    yyvsp[-3].real,yyvsp[-1].real,1,
++    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (8)].vector)),
++	    (yyvsp[(5) - (8)].real),(yyvsp[(7) - (8)].real),1,
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 42:
+ #line 222 "ciaoparser.Y"
+-    {FR->createCpandaCmd(Vector(yyvsp[-9].vector),
+-	    yyvsp[-3].real,yyvsp[-1].real,1,
+-	    yyvsp[-7].real,yyvsp[-5].real,1,
++    {FR->createCpandaCmd(Vector((yyvsp[(3) - (12)].vector)),
++	    (yyvsp[(9) - (12)].real),(yyvsp[(11) - (12)].real),1,
++	    (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),1,
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 43:
+ #line 228 "ciaoparser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-3].vector),
+-	    Vector(yyvsp[-1].vector),
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (6)].vector)),
++	    Vector((yyvsp[(5) - (6)].vector)),
+ 	    0,
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 44:
+ #line 234 "ciaoparser.Y"
+-    {FR->createBoxCmd(Vector(yyvsp[-5].vector),
+-	     Vector(yyvsp[-3].vector),
+-	     yyvsp[-1].real,
++    {FR->createBoxCmd(Vector((yyvsp[(3) - (8)].vector)),
++	     Vector((yyvsp[(5) - (8)].vector)),
++	     (yyvsp[(7) - (8)].real),
+ 	     color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+   case 45:
+ #line 240 "ciaoparser.Y"
+-    {FR->createBoxCirclePointCmd(Vector(yyvsp[-1].vector),
++    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (4)].vector)),
+ 	    color,1,font,text,props,NULL,taglist,cblist);;}
+     break;
+ 
+@@ -1388,19 +1721,18 @@
+ 
+   case 50:
+ #line 252 "ciaoparser.Y"
+-    {polylist.append(new Vertex(yyvsp[0].vector));;}
++    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
+     break;
+ 
+ 
++/* Line 1267 of yacc.c.  */
++#line 1730 "ciaoparser.C"
++      default: break;
+     }
++  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ 
+-/* Line 1000 of yacc.c.  */
+-#line 1399 "ciaoparser.C"
+-
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
+-
+-
++  YYPOPSTACK (yylen);
++  yylen = 0;
+   YY_STACK_PRINT (yyss, yyssp);
+ 
+   *++yyvsp = yyval;
+@@ -1429,99 +1761,65 @@
+   if (!yyerrstatus)
+     {
+       ++yynerrs;
+-#if YYERROR_VERBOSE
+-      yyn = yypact[yystate];
+-
+-      if (YYPACT_NINF < yyn && yyn < YYLAST)
+-	{
+-	  YYSIZE_T yysize = 0;
+-	  int yytype = YYTRANSLATE (yychar);
+-	  const char* yyprefix;
+-	  char *yymsg;
+-	  int yyx;
+-
+-	  /* Start YYX at -YYN if negative to avoid negative indexes in
+-	     YYCHECK.  */
+-	  int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+-	  /* Stay within bounds of both yycheck and yytname.  */
+-	  int yychecklim = YYLAST - yyn;
+-	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+-	  int yycount = 0;
+-
+-	  yyprefix = ", expecting ";
+-	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++      yyerror (YY_("syntax error"));
++#else
++      {
++	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++	  {
++	    YYSIZE_T yyalloc = 2 * yysize;
++	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
++	    if (yymsg != yymsgbuf)
++	      YYSTACK_FREE (yymsg);
++	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++	    if (yymsg)
++	      yymsg_alloc = yyalloc;
++	    else
+ 	      {
+-		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+-		yycount += 1;
+-		if (yycount == 5)
+-		  {
+-		    yysize = 0;
+-		    break;
+-		  }
++		yymsg = yymsgbuf;
++		yymsg_alloc = sizeof yymsgbuf;
+ 	      }
+-	  yysize += (sizeof ("syntax error, unexpected ")
+-		     + yystrlen (yytname[yytype]));
+-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+-	  if (yymsg != 0)
+-	    {
+-	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+-	      yyp = yystpcpy (yyp, yytname[yytype]);
++	  }
+ 
+-	      if (yycount < 5)
+-		{
+-		  yyprefix = ", expecting ";
+-		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+-		      {
+-			yyp = yystpcpy (yyp, yyprefix);
+-			yyp = yystpcpy (yyp, yytname[yyx]);
+-			yyprefix = " or ";
+-		      }
+-		}
+-	      yyerror (yymsg);
+-	      YYSTACK_FREE (yymsg);
+-	    }
+-	  else
+-	    yyerror ("syntax error; also virtual memory exhausted");
+-	}
+-      else
+-#endif /* YYERROR_VERBOSE */
+-	yyerror ("syntax error");
++	if (0 < yysize && yysize <= yymsg_alloc)
++	  {
++	    (void) yysyntax_error (yymsg, yystate, yychar);
++	    yyerror (yymsg);
++	  }
++	else
++	  {
++	    yyerror (YY_("syntax error"));
++	    if (yysize != 0)
++	      goto yyexhaustedlab;
++	  }
++      }
++#endif
+     }
+ 
+ 
+ 
+   if (yyerrstatus == 3)
+     {
+-      /* If just tried and failed to reuse lookahead token after an
++      /* If just tried and failed to reuse look-ahead token after an
+ 	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* If at end of input, pop the error token,
+-	     then the rest of the stack, then return failure.  */
++	{
++	  /* Return failure if at end of input.  */
+ 	  if (yychar == YYEOF)
+-	     for (;;)
+-	       {
+-		 YYPOPSTACK;
+-		 if (yyssp == yyss)
+-		   YYABORT;
+-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-		 yydestruct (yystos[*yyssp], yyvsp);
+-	       }
+-        }
++	    YYABORT;
++	}
+       else
+ 	{
+-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+-	  yydestruct (yytoken, &yylval);
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
+ 	  yychar = YYEMPTY;
+-
+ 	}
+     }
+ 
+-  /* Else will try to reuse lookahead token after shifting the error
++  /* Else will try to reuse look-ahead token after shifting the error
+      token.  */
+   goto yyerrlab1;
+ 
+@@ -1531,15 +1829,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+ 
+-#ifdef __GNUC__
+-  /* Pacify GCC when the user code never invokes YYERROR and the label
+-     yyerrorlab therefore never appears in user code.  */
+-  if (0)
++  /* Pacify compilers like GCC when the user code never invokes
++     YYERROR and the label yyerrorlab therefore never appears in user
++     code.  */
++  if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+-#endif
+ 
+-  yyvsp -= yylen;
+-  yyssp -= yylen;
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYERROR.  */
++  YYPOPSTACK (yylen);
++  yylen = 0;
++  YY_STACK_PRINT (yyss, yyssp);
+   yystate = *yyssp;
+   goto yyerrlab1;
+ 
+@@ -1568,9 +1868,10 @@
+       if (yyssp == yyss)
+ 	YYABORT;
+ 
+-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+-      yydestruct (yystos[yystate], yyvsp);
+-      YYPOPSTACK;
++
++      yydestruct ("Error: popping",
++		  yystos[yystate], yyvsp);
++      YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+@@ -1578,11 +1879,12 @@
+   if (yyn == YYFINAL)
+     YYACCEPT;
+ 
+-  YYDPRINTF ((stderr, "Shifting error token, "));
+-
+   *++yyvsp = yylval;
+ 
+ 
++  /* Shift the error token.  */
++  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+   yystate = yyn;
+   goto yynewstate;
+ 
+@@ -1602,21 +1904,39 @@
+   goto yyreturn;
+ 
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here.  |
+-`----------------------------------------------*/
+-yyoverflowlab:
+-  yyerror ("parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here.  |
++`-------------------------------------------------*/
++yyexhaustedlab:
++  yyerror (YY_("memory exhausted"));
+   yyresult = 2;
+   /* Fall through.  */
+ #endif
+ 
+ yyreturn:
++  if (yychar != YYEOF && yychar != YYEMPTY)
++     yydestruct ("Cleanup: discarding lookahead",
++		 yytoken, &yylval);
++  /* Do not reclaim the symbols of the rule which action triggered
++     this YYABORT or YYACCEPT.  */
++  YYPOPSTACK (yylen);
++  YY_STACK_PRINT (yyss, yyssp);
++  while (yyssp != yyss)
++    {
++      yydestruct ("Cleanup: popping",
++		  yystos[*yyssp], yyvsp);
++      YYPOPSTACK (1);
++    }
+ #ifndef yyoverflow
+   if (yyss != yyssa)
+     YYSTACK_FREE (yyss);
+ #endif
+-  return yyresult;
++#if YYERROR_VERBOSE
++  if (yymsg != yymsgbuf)
++    YYSTACK_FREE (yymsg);
++#endif
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+ 
+ 
+--- saods9-4.0b7.orig/saotk/vector/vector.h
++++ saods9-4.0b7/saotk/vector/vector.h
+@@ -13,6 +13,10 @@
+ 
+ #include "tk.h"
+ 
++class Vector;
++class Matrix;
++class BBox;
++
+ class Vector {
+   friend class Matrix;
+   friend class Translate;
+--- saods9-4.0b7.orig/saotk/colorbar/lut.C
++++ saods9-4.0b7/saotk/colorbar/lut.C
+@@ -1,4 +1,4 @@
+-// Copyright (C) 1999-200
++// Copyright (C) 1999-2005
+ // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
+ // For conditions of distribution and use, see copyright notice in "copyright"
+ 
diff --git a/debian/patches/sla.patch b/debian/patches/sla.patch
new file mode 100644
index 0000000..a7cdb69
--- /dev/null
+++ b/debian/patches/sla.patch
@@ -0,0 +1,20 @@
+--- saods9-4.0b7.orig/sla/Makefile
++++ saods9-4.0b7/sla/Makefile
+@@ -0,0 +1,17 @@
++# ./sla/Makefile
++# A work of Justin Pryzby during the year of 2005.
++# Hereby placed into the public domain.
++SRC=$(wildcard *.f)
++OBJ=$(SRC:.f=.o)
++STLIB=libsla.a
++LIBDIR=../lib/
++FCFLAGS=$(FLAGS)
++FC=gfortran
++
++install: $(STLIB)
++	mkdir -p $(LIBDIR);
++	cp $^ $(LIBDIR);
++
++$(STLIB): $(OBJ)
++	ar q $@ $^;
++	ranlib $@
diff --git a/debian/patches/wcssubs.patch b/debian/patches/wcssubs.patch
new file mode 100644
index 0000000..8be3a53
--- /dev/null
+++ b/debian/patches/wcssubs.patch
@@ -0,0 +1,59 @@
+--- saods9-4.0b7.orig/wcssubs-3.5.6/Makefile
++++ saods9-4.0b7/wcssubs-3.5.6/Makefile
+@@ -12,6 +12,7 @@
+ 	lin.c \
+ 	platepos.c \
+ 	proj.c \
++	slasubs.c \
+ 	sph.c \
+ 	tnxpos.c \
+ 	wcs.c \
+--- saods9-4.0b7.orig/wcssubs-3.5.6/slasubs.c
++++ saods9-4.0b7/wcssubs-3.5.6/slasubs.c
+@@ -17,6 +17,7 @@
+  *	      rotations about specified Cartesian axes.
+  */
+ 
++#if 0
+ void
+ slaDcs2c (a, b, v)
+ 
+@@ -222,6 +223,7 @@
+   return ( fabs ( w ) < DPI ) ? w : w - dsign ( D2PI, angle );
+ }
+ 
++#endif
+ 
+ void
+ slaDeuler (order, phi, theta, psi, rmat)
+--- saods9-4.0b7.orig/wcssubs-3.5.6/hget.c
++++ saods9-4.0b7/wcssubs-3.5.6/hget.c
+@@ -153,7 +153,7 @@
+     char *value;
+     double dval;
+     int minint;
+-    int lval, id;
++    int lval;
+     char *dchar;
+ 
+     /* Get value and comment from header string */
+@@ -1355,8 +1355,10 @@
+     return (strnsrch (s1, s2, ls1));
+ }
+ 
++#if 0
+ static char *scase;
+ static int lscase = 0;
++#endif
+ 
+ /* Find string s2 within string s1 */
+ 
+@@ -1369,7 +1371,7 @@
+ 
+ {
+     char *s,*s1e;
+-    char cfirst,clast, s2i;
++    char cfirst,clast;
+     int i,ls2;
+ 
+     /* Return null string if either pointer is NULL */
diff --git a/debian/patches/xpa.patch b/debian/patches/xpa.patch
new file mode 100644
index 0000000..953233c
--- /dev/null
+++ b/debian/patches/xpa.patch
@@ -0,0 +1,82 @@
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaaccess.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaaccess.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpaaccess 1"
+ .TH xpaaccess 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpaaccess: see if template matches registered XPA access points\fR
++xpaaccess \- see if template matches registered XPA access points
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ xpaaccess [\-c] [\-h] [\-i nsinet] [\-m method] [\-n] [\-t sval,lval] [\-u users] \-v <template> [type]
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpainfo.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpainfo.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpainfo 1"
+ .TH xpainfo 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpainfo: send short message to one or more XPA servers\fR
++xpainfo \- send short message to one or more XPA servers
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ xpainfo [\-h] [\-i nsinet] [\-m method] [\-n] [\-s] [\-t sval,lval] [\-u users] <template|host:port> [paramlist]
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaget.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaget.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpaget 1"
+ .TH xpaget 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpaget: retrieve data from one or more XPA servers\fR
++xpaget \- retrieve data from one or more XPA servers
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ xpaget [\-h] [\-i nsinet] [\-m method] [\-s] [\-t sval,lval] [\-u users] <template|host:port> [paramlist]
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaset.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaset.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpaset 1"
+ .TH xpaset 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpaset: send data to one or more XPA servers\fR
++xpaset \- send data to one or more XPA servers
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ <data> | xpaset  [\-h] [\-i nsinet] [\-m method] [\-n] [\-p] [\-s] [\-t sval,lval] [\-u users] [\-v] <template|host:port> [paramlist]
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpans.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpans.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpans 1"
+ .TH xpans 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpans: the XPA Name Server\fR
++xpans \- the XPA Name Server
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ .Vb 1
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpachanges.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpachanges.1
+@@ -128,10 +128,10 @@
+ .rm #[ #] #H #V #F C
+ .\" ========================================================================
+ .\"
+-.IX Title "xpachanges 1"
+-.TH xpachanges 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
++.IX Title "xpachanges 7"
++.TH xpachanges 7 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBXPA Changes: Changes For Users from XPA 1.0 and 2.0\fR
++XPA Changes \- Changes For Users from XPA 1.0 and 2.0
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ This document describes changes that will affect users who migrate
+--- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpamb.1
++++ saods9-4.0b7/xpa-2.1.6/man/man1/xpamb.1
+@@ -131,7 +131,7 @@
+ .IX Title "xpamb 1"
+ .TH xpamb 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
+ .SH "NAME"
+-\&\fBxpamb: the XPA Message Bus\fR
++xpamb \- the XPA Message Bus
+ .SH "SYNOPSIS"
+ .IX Header "SYNOPSIS"
+ The xpamb program can act as a \*(L"classical\*(R" message bus interface
diff --git a/debian/saods9-4.0b7-2-nodebian.diff b/debian/saods9-4.0b7-2-nodebian.diff
deleted file mode 100644
index bb413e8..0000000
--- a/debian/saods9-4.0b7-2-nodebian.diff
+++ /dev/null
@@ -1,21650 +0,0 @@
---- saods9-4.0b7.orig/make.linux
-+++ saods9-4.0b7/make.linux
-@@ -1,21 +1,21 @@
- ARCH	= linux
--BUILD_SHARED = yes
--OPTS = -O2
-+OPTS = $(FLAGS) -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/tcl8.4 
-+DEPENDS = no
- #OPTS = -gstabs+ -fno-inline
- #OPTS = -gstabs+ -fno-inline -pg
- 
--X11INCLUDE=/usr/X11R6/include
-+X11INCLUDE=/usr/include/X11
- X11LIB	= /usr/X11R6/lib
- 
- CXX	= g++
--CXXOPT	= ${OPTS} -fPIC -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-+CXXOPT	= ${OPTS} 
- CC	= gcc
- CCc	= gcc
- #CCc	= 'gcc -g'
--CCOPT	= ${OPTS} -fPIC -DHAVE_SYS_UN_H -DHAVE_SYS_SHM_H -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-+CCOPT	= $(OPTS)
- 
- LIBCMD	= $(AR) -cq
--RANLIB	= echo
-+RANLIB	= ranlib
- SHCMD	= $(CXX) -shared -o
- SHEXT	= so
--ETAGS	= etags
-+ETAGS	= true
---- saods9-4.0b7.orig/Makefile
-+++ saods9-4.0b7/Makefile
-@@ -26,7 +26,7 @@
-   TCLXDIR = $(TCLXDIR)/win
- 
-   TCLLIBFLAGS = --prefix ..
--  PREHTMLFLAGS = config_BUILD_TCLSH=tclsh84s config_TARGET_TCL_SCRIPT_DIR=$(root)/lib/tcl8.4
-+  PREHTMLFLAGS = config_BUILD_TCLSH=tclsh84s config_TARGET_TCL_SCRIPT_DIR=$(root)/share/tcltk/tcl8.4
- else
-   EXE	=
-   WISH	= wish8.4
-@@ -37,6 +37,7 @@
- 
-   XFLAGS = --x-includes=$(X11INCLUDE) --x-libraries="$(X11LIB) $(HTMLEXTLIB)"
-   TCLLIBFLAGS = --prefix $(root)
-+  PREHTMLFLAGS= config_TARGET_TCL_SCRIPT_DIR=/usr/share/tcltk/tcl8.4 config_TARGET_TK_SCRIPT_DIR=/usr/share/tcltk/tk8.4
- endif
- 
- TCLFLAGS = --enable-gcc --prefix $(root) $(XFLAGS)
-@@ -46,12 +47,12 @@
- 	--with-tcl=$(root)/$(TCLDIR) --with-tk=$(root)/$(TKDIR) $(XFLAGS)
- TKIMGFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
- 	 --with-tk=$(root)/$(TKDIRDIR) $(XFLAGS)
--XPAFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIRDIR) \
-+XPAFLAGS = --enable-gcc --prefix $(root) --with-tcl=/usr/share/tcltk/tcl8.4 \
- 	$(XFLAGS)
--HTMLFLAGS = --enable-gcc --prefix $(root) --with-tcl=$(root)/$(TCLDIR) \
--	--with-tk=$(root)/$(TKDIR) $(XFLAGS)
-+HTMLFLAGS = --enable-gcc --prefix $(root) --with-tcl=/usr/share/tcltk/tcl8.4/ --with-tk=/usr/share/tcltk/tk8.4/
-+
-+FUNTOOLSFLAGS = --prefix $(root) --enable-gcc --with-zlib=-lz --with-wcslib=../lib/libwcs.a --enable-mainlib
- 
--FUNTOOLSFLAGS = --prefix $(root) --enable-gcc --with-zlib=../lib/libz.a --with-wcslib=../lib/libwcs.a --enable-mainlib
- ZLIBFLAGS = --prefix $(root)
- 
- SAOINDEX= lib/pkgIndex.tcl
-@@ -185,7 +186,7 @@
- 
- tkindex : FORCE
- 	@echo "Installing Tk mkIndex..."
--	cd lib/tk8.4; echo "pkg_mkIndex . *.tcl" | ../../bin/tclsh8.4	
-+	cd share/tcltk/tk8.4; echo "pkg_mkIndex . *.tcl" | ../../../bin/tclsh8.4	
- 
- blt	: FORCE
- 	@echo "Installing BLT..."
-@@ -194,7 +195,7 @@
- 
- mktclapp: FORCE
- 	@echo "Installing MKTCLAPP..."
--	cd $(MKTCLAPPDIR); CC=$(CCc) $(MAKE) mktclapp -e
-+	cd $(MKTCLAPPDIR); CC=$(CCc) CFLAGS="$(CCOPT)" $(MAKE) mktclapp -e
- 	cp $(MKTCLAPPDIR)/mktclapp$(EXE) bin/.
- 
- zlib  : FORCE
-@@ -219,13 +220,13 @@
- 
- tkmpeg	: FORCE
- 	@echo "Installing TKMPEG..."
--	cd $(TKMPEGDIR); $(MAKE)
-+	cd $(TKMPEGDIR); $(MAKE) CXXOPT="$(CXXOPT)"
- 	cd $(TKMPEGDIR); $(MAKE) install
- 
- html	: FORCE
- 	@echo "Installing HTMLWIDGET noshared..."
--	cd $(HTMLDIR); CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=no
--	cd $(HTMLDIR); $(MAKE)
-+	cd $(HTMLDIR); CFLAGS="$(CXXOPT)" CC=$(CCc) $(PREHTMLFLAGS) $(root)/htmlwidget/configure $(HTMLFLAGS) --enable-shared=no
-+	cd $(HTMLDIR); $(MAKE) headers libtkhtml.a
- 	cp $(HTMLDIR)/libtkhtml.a lib/.
- 
- htmlsh	: FORCE
-@@ -242,7 +243,7 @@
- 
- xpa	: FORCE
- 	@echo "Installing XPA..."
--	cd $(XPADIR); CC=$(CCc) ./configure $(XPAFLAGS)  --disable-shared
-+	cd $(XPADIR); CC=$(CCc) CFLAGS="$(CCOPT)" ./configure $(XPAFLAGS)  --disable-shared
- 	cd $(XPADIR); $(MAKE); $(MAKE) install
- 
- iis	: FORCE
-@@ -272,7 +273,7 @@
- 
- saotk	: FORCE
- 	@echo "Installing SAOTK..."
--	cd $(SAOTKDIR); $(MAKE) install
-+	cd $(SAOTKDIR); $(MAKE) CXX="$(CXX)" install
- 
- win	: FORCE
- 	@echo "Installing WIN..."
---- saods9-4.0b7.orig/wcssubs-3.5.6/Makefile
-+++ saods9-4.0b7/wcssubs-3.5.6/Makefile
-@@ -12,6 +12,7 @@
- 	lin.c \
- 	platepos.c \
- 	proj.c \
-+	slasubs.c \
- 	sph.c \
- 	tnxpos.c \
- 	wcs.c \
---- saods9-4.0b7.orig/wcssubs-3.5.6/slasubs.c
-+++ saods9-4.0b7/wcssubs-3.5.6/slasubs.c
-@@ -17,6 +17,7 @@
-  *	      rotations about specified Cartesian axes.
-  */
- 
-+#if 0
- void
- slaDcs2c (a, b, v)
- 
-@@ -222,6 +223,7 @@
-   return ( fabs ( w ) < DPI ) ? w : w - dsign ( D2PI, angle );
- }
- 
-+#endif
- 
- void
- slaDeuler (order, phi, theta, psi, rmat)
---- saods9-4.0b7.orig/wcssubs-3.5.6/hget.c
-+++ saods9-4.0b7/wcssubs-3.5.6/hget.c
-@@ -153,7 +153,7 @@
-     char *value;
-     double dval;
-     int minint;
--    int lval, id;
-+    int lval;
-     char *dchar;
- 
-     /* Get value and comment from header string */
-@@ -1355,8 +1355,10 @@
-     return (strnsrch (s1, s2, ls1));
- }
- 
-+#if 0
- static char *scase;
- static int lscase = 0;
-+#endif
- 
- /* Find string s2 within string s1 */
- 
-@@ -1369,7 +1371,7 @@
- 
- {
-     char *s,*s1e;
--    char cfirst,clast, s2i;
-+    char cfirst,clast;
-     int i,ls2;
- 
-     /* Return null string if either pointer is NULL */
---- saods9-4.0b7.orig/ds9/ds9.tcl
-+++ saods9-4.0b7/ds9/ds9.tcl
-@@ -46,10 +46,10 @@
- 
- # other tcl packages
- if {$tcl_platform(platform) != "windows"} {
--    source ../lib/tcl8.4/http2.5/http.tcl
--    source ../lib/tcllib1.6/base64/base64.tcl
--    source ../lib/tcllib1.6/log/log.tcl
--    source ../lib/tcllib1.6/ftp/ftp.tcl
-+    source /usr/share/tcltk/tcl8.4/http2.5/http.tcl
-+    #source /usr/lib/tcllib1.8/base64/base64.tcl
-+    #source /usr/lib/tcllib1.8/log/log.tcl
-+    #source /usr/lib/tcllib1.8/ftp/ftp.tcl
- } else {
-     source C:/cygwin/home/joye/saods9/lib/tcl8.4/http2.5/http.tcl
-     source C:/cygwin/home/joye/saods9/lib/tcllib1.6/base64/base64.tcl
-@@ -84,7 +84,7 @@
- # we need this after BLT is loaded
- # neede for BLT_ZoomStack
- if {$tcl_platform(platform) != "windows"} {
--    source ../lib/blt2.4/graph.tcl
-+    source /usr/lib/blt2.4/graph.tcl
- } else {
-     source C:/cygwin/home/joye/saods9/lib/blt2.4/graph.tcl
- }
---- saods9-4.0b7.orig/ds9/ds9.mta
-+++ saods9-4.0b7/ds9/ds9.mta
-@@ -9,9 +9,9 @@
- ## CFile:ds9.C 1
- ## CmdLine None
- ## ConfigFile ds9.mta
--## Data:../lib/blt2.4/bltGraph.pro 1
--## Data:../lib/tcl8.4/encoding/iso8859-1.enc 1
--## Data:../lib/tcl8.4/encoding/symbol.enc 1
-+## Data:/usr/lib/blt2.4/bltGraph.pro 1
-+## Data:/usr/share/tcltk/tcl8.4/encoding/iso8859-1.enc 1
-+## Data:/usr/share/tcltk/tcl8.4/encoding/symbol.enc 1
- ## Data:doc/acknowledgment.html 1
- ## Data:doc/faq.html 1
- ## Data:doc/helpdesk.html 1
-@@ -79,11 +79,11 @@
- ## MainScript ds9.tcl
- ## Mode Tcl/Tk
- ## NoSource No
--## OtherLib:../lib/blt2.4 1
--## OtherLib:../lib/tcl8.4/http2.5 1
--## OtherLib:../lib/tcllib1.6/base64 1
--## OtherLib:../lib/tcllib1.6/ftp 1
--## OtherLib:../lib/tcllib1.6/log 1
-+## OtherLib:/usr/lib/blt2.4 1
-+## OtherLib:/usr/share/tcltk/tcl8.4/http2.5 1
-+# OtherLib:/usr/lib/tcllib1.8/base64 1
-+# OtherLib:/usr/lib/tcllib1.8/ftp 1
-+# OtherLib:/usr/lib/tcllib1.8/log 1
- ## OutputFile ds9tk.c
- ## Shroud No
- ## Standalone Yes
-@@ -177,76 +177,76 @@
- ## TclFile:vo.tcl 1
- ## TclFile:wcs.tcl 1
- ## TclFile:xpa.tcl 1
--## TclLib ../lib/tcl8.4
--## TkLib ../lib/tk8.4
-+## TclLib /usr/share/tcltk/tcl8.4
-+## TkLib /usr/share/tcltk/tk8.4
- #
- -main-script "ds9.tcl"
---tcl-library "../lib/tcl8.4"
---tk-library "../lib/tk8.4"
---strip-tcl "../lib/blt2.4/dnd.tcl"
---strip-tcl "../lib/blt2.4/dragdrop.tcl"
---strip-tcl "../lib/blt2.4/graph.tcl"
---strip-tcl "../lib/blt2.4/hierbox.tcl"
---strip-tcl "../lib/blt2.4/pkgIndex.tcl"
---strip-tcl "../lib/blt2.4/tabnotebook.tcl"
---strip-tcl "../lib/blt2.4/tabset.tcl"
---strip-tcl "../lib/blt2.4/tclIndex"
---strip-tcl "../lib/blt2.4/treeview.tcl"
---strip-tcl "../lib/tcl8.4/auto.tcl"
---strip-tcl "../lib/tcl8.4/history.tcl"
---strip-tcl "../lib/tcl8.4/http2.5/http.tcl"
---strip-tcl "../lib/tcl8.4/http2.5/pkgIndex.tcl"
---strip-tcl "../lib/tcl8.4/init.tcl"
---strip-tcl "../lib/tcl8.4/ldAout.tcl"
---strip-tcl "../lib/tcl8.4/package.tcl"
---strip-tcl "../lib/tcl8.4/parray.tcl"
---strip-tcl "../lib/tcl8.4/safe.tcl"
---strip-tcl "../lib/tcl8.4/tclIndex"
---strip-tcl "../lib/tcl8.4/word.tcl"
---strip-tcl "../lib/tcllib1.6/base64/base64.tcl"
---strip-tcl "../lib/tcllib1.6/base64/base64c.tcl"
---strip-tcl "../lib/tcllib1.6/base64/pkgIndex.tcl"
---strip-tcl "../lib/tcllib1.6/base64/uuencode.tcl"
---strip-tcl "../lib/tcllib1.6/base64/yencode.tcl"
---strip-tcl "../lib/tcllib1.6/ftp/ftp.tcl"
---strip-tcl "../lib/tcllib1.6/ftp/ftp_geturl.tcl"
---strip-tcl "../lib/tcllib1.6/ftp/pkgIndex.tcl"
---strip-tcl "../lib/tcllib1.6/log/log.tcl"
---strip-tcl "../lib/tcllib1.6/log/logger.tcl"
---strip-tcl "../lib/tcllib1.6/log/pkgIndex.tcl"
---strip-tcl "../lib/tk8.4/bgerror.tcl"
---strip-tcl "../lib/tk8.4/button.tcl"
---strip-tcl "../lib/tk8.4/choosedir.tcl"
---strip-tcl "../lib/tk8.4/clrpick.tcl"
---strip-tcl "../lib/tk8.4/comdlg.tcl"
---strip-tcl "../lib/tk8.4/console.tcl"
---strip-tcl "../lib/tk8.4/dialog.tcl"
---strip-tcl "../lib/tk8.4/entry.tcl"
---strip-tcl "../lib/tk8.4/focus.tcl"
---strip-tcl "../lib/tk8.4/listbox.tcl"
---strip-tcl "../lib/tk8.4/menu.tcl"
---strip-tcl "../lib/tk8.4/mkpsenc.tcl"
---strip-tcl "../lib/tk8.4/msgbox.tcl"
---strip-tcl "../lib/tk8.4/obsolete.tcl"
---strip-tcl "../lib/tk8.4/optMenu.tcl"
---strip-tcl "../lib/tk8.4/palette.tcl"
---strip-tcl "../lib/tk8.4/panedwindow.tcl"
---strip-tcl "../lib/tk8.4/pkgIndex.tcl"
---strip-tcl "../lib/tk8.4/safetk.tcl"
---strip-tcl "../lib/tk8.4/scale.tcl"
---strip-tcl "../lib/tk8.4/scrlbar.tcl"
---strip-tcl "../lib/tk8.4/spinbox.tcl"
---strip-tcl "../lib/tk8.4/tclIndex"
---strip-tcl "../lib/tk8.4/tearoff.tcl"
---strip-tcl "../lib/tk8.4/text.tcl"
---strip-tcl "../lib/tk8.4/tk.tcl"
---strip-tcl "../lib/tk8.4/tkfbox.tcl"
---strip-tcl "../lib/tk8.4/unsupported.tcl"
---strip-tcl "../lib/tk8.4/xmfbox.tcl"
-+-tcl-library "/usr/share/tcltk/tcl8.4"
-+-tk-library "/usr/share/tcltk/tk8.4"
-+-strip-tcl "/usr/lib/blt2.4/dnd.tcl"
-+-strip-tcl "/usr/lib/blt2.4/dragdrop.tcl"
-+-strip-tcl "/usr/lib/blt2.4/graph.tcl"
-+-strip-tcl "/usr/lib/blt2.4/hierbox.tcl"
-+-strip-tcl "/usr/lib/blt2.4/pkgIndex.tcl"
-+-strip-tcl "/usr/lib/blt2.4/tabnotebook.tcl"
-+-strip-tcl "/usr/lib/blt2.4/tabset.tcl"
-+-strip-tcl "/usr/lib/blt2.4/tclIndex"
-+-strip-tcl "/usr/lib/blt2.4/treeview.tcl"
-+-strip-tcl "auto.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/history.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/http2.5/http.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/http2.5/pkgIndex.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/init.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/ldAout.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/package.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/parray.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/safe.tcl"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/tclIndex"
-+-strip-tcl "/usr/share/tcltk/tcl8.4/word.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/base64/base64.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/base64/base64c.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/base64/pkgIndex.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/base64/uuencode.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/base64/yencode.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/ftp/ftp.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/ftp/ftp_geturl.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/ftp/pkgIndex.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/log/log.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/log/logger.tcl"
-+#-strip-tcl "/usr/lib/tcllib1.8/log/pkgIndex.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/bgerror.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/button.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/choosedir.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/clrpick.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/comdlg.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/console.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/dialog.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/entry.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/focus.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/listbox.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/menu.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/mkpsenc.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/msgbox.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/obsolete.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/optMenu.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/palette.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/panedwindow.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/pkgIndex.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/safetk.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/scale.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/scrlbar.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/spinbox.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/tclIndex"
-+-strip-tcl "/usr/share/tcltk/tk8.4/tearoff.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/text.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/tk.tcl"
-+-strip-tcl "tkfbox.tcl"
-+-strip-tcl "/usr/share/tcltk/tk8.4/unsupported.tcl"
-+-strip-tcl "xmfbox.tcl"
- "ds9.C"
---i "../lib/blt2.4/bltGraph.pro"
---i "../lib/tcl8.4/encoding/iso8859-1.enc"
---i "../lib/tcl8.4/encoding/symbol.enc"
-+-i "/usr/lib/blt2.4/bltGraph.pro"
-+-i "/usr/share/tcltk/tcl8.4/encoding/iso8859-1.enc"
-+-i "/usr/share/tcltk/tcl8.4/encoding/symbol.enc"
- -i "doc/acknowledgment.html"
- -i "doc/faq.html"
- -i "doc/helpdesk.html"
---- saods9-4.0b7.orig/ds9/Makefile
-+++ saods9-4.0b7/ds9/Makefile
-@@ -175,20 +175,12 @@
- 
- INDEX	= pkgIndex.tcl
- 
--LIBS	= -L../lib -lsaotk -ltkhtml -ltkmpeg -L../lib/Img1.3 \
--	-ltkimgwindow1.3 \
--	-ltkimgjpeg1.3 -ljpegtcl1.0 \
--	-ltkimgtiff1.3 -ltifftcl1.0 \
--	-ltkimgpng1.3 -lpngtcl1.0 \
--	-ltkimgppm1.3 \
--	-ltkimggif1.3 \
--	-ltkimgbmp1.3 \
--	-ltkimgxbm1.3 \
--	-lzlibtcl1.0 -ltkimg1.3 \
--	-L../lib/Tktable2.9 -lTktable2.9 \
--	-L../lib -lz -lxpa -liis -lcheckdns \
--	-lBLT24 \
--	-ltk8.4 -ltcl8.4
-+LIBS	=					\
-+	/usr/lib/Tktable2.9/libTktable2.9.so	\
-+	-lz -lBLT -ltk8.4 -ltcl8.4		\
-+	-L../lib -lsaotk -ltkhtml -ltkmpeg -lsla\
-+	-liis -lcheckdns  -lxpa  -lcheckdns	\
-+	-lgfortran
- 
- LIBS.a	= ../lib/libsaotk.a \
- 	../lib/libtkhtml.a \
-@@ -254,17 +246,7 @@
- # 
- ifeq ($(ARCH),linux)
- ds9	: ds9.o ds9tk.o FORCE
--	$(RM) $@
--	rm -f libstdc++.a
--	ln -s `$(CXX) -print-file-name=libstdc++.a` .
--	$(CXX) -static-libgcc $(OPTS) \
--	-Wl,--export-dynamic \
--	-o $@ ds9.o ds9tk.o \
--	-Wl,-Bstatic $(LIBS) \
--	-L. -lstdc++ \
--	-Wl,-Bdynamic  -L$(X11LIB) -lX11 \
--	-ldl -lpthread
--	rm -f libstdc++.a
-+	$(CXX) $(OPTS) -o $@ ds9.o ds9tk.o $(LIBS)
- endif
- 
- #--------------------------linux64
---- saods9-4.0b7.orig/ds9/ds9.C
-+++ saods9-4.0b7/ds9/ds9.C
-@@ -6,6 +6,7 @@
- using namespace std;
- 
- #include "ds9tk.h"
-+#include <tcl.h>
- 
- extern "C" {
-   int Blt_Init(Tcl_Interp*);
-@@ -15,20 +16,6 @@
-   int Tkhtml_Init(Tcl_Interp*);
-   int Tkmpeg_Init(Tcl_Interp*);
- 
--  int Tkimg_Init(Tcl_Interp*);
--  int Zlibtcl_Init(Tcl_Interp*);
--  int Jpegtcl_Init(Tcl_Interp*);
--  int Tkimgjpeg_Init(Tcl_Interp*);
--  int Tifftcl_Init(Tcl_Interp*);
--  int Tkimgtiff_Init(Tcl_Interp*);
--  int Pngtcl_Init(Tcl_Interp*);
--  int Tkimgpng_Init(Tcl_Interp*);
--  int Tkimggif_Init(Tcl_Interp*);
--  int Tkimgppm_Init(Tcl_Interp*);
--  int Tkimgbmp_Init(Tcl_Interp*);
--  int Tkimgxbm_Init(Tcl_Interp*);
--  int Tkimgwindow_Init(Tcl_Interp*);
--
-   int Tclxpa_Init(Tcl_Interp*);
-   int Iis_Init(Tcl_Interp*);
- }
-@@ -74,57 +61,8 @@
- 
-   // Tkimg _inits
- 
--  if (Tkimg_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "img", Tkimg_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Zlibtcl_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "zlibtcl", Zlibtcl_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Jpegtcl_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "jpegtcl", Jpegtcl_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgjpeg_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "jpeg", Tkimgjpeg_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tifftcl_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "tifftcl", Tifftcl_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgtiff_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "tiff", Tkimgtiff_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Pngtcl_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "pngtcl", Pngtcl_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgpng_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "png", Tkimgpng_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimggif_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "gif", Tkimggif_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgppm_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "ppm", Tkimgppm_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgbmp_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "bmp", Tkimgbmp_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgxbm_Init(interp) == TCL_ERROR)
--    return TCL_ERROR;
--  Tcl_StaticPackage (interp, "xbm", Tkimgxbm_Init,(Tcl_PackageInitProc*)NULL);
--
--  if (Tkimgwindow_Init(interp) == TCL_ERROR)
-+  if (Tcl_PkgRequire (interp, "Img", NULL, 0) == NULL)
-     return TCL_ERROR;
--  Tcl_StaticPackage (interp, "window", Tkimgwindow_Init,(Tcl_PackageInitProc*)NULL);
- 
-   return TCL_OK;
- }
---- saods9-4.0b7.orig/ds9/sample.tcl
-+++ saods9-4.0b7/ds9/sample.tcl
-@@ -1,4 +1,4 @@
--#  Copyright (C) 1999-200
-+#  Copyright (C) 1999-2005
- #  Smithsonian Astrophysical Observatory, Cambridge, MA, USA
- #  For conditions of distribution and use, see copyright notice in "copyright"
- 
---- saods9-4.0b7.orig/sla/Makefile
-+++ saods9-4.0b7/sla/Makefile
-@@ -0,0 +1,17 @@
-+# ./sla/Makefile
-+# A work of Justin Pryzby during the year of 2005.
-+# Hereby placed into the public domain.
-+SRC=$(wildcard *.f)
-+OBJ=$(SRC:.f=.o)
-+STLIB=libsla.a
-+LIBDIR=../lib/
-+FCFLAGS=$(FLAGS)
-+FC=gfortran
-+
-+install: $(STLIB)
-+	mkdir -p $(LIBDIR);
-+	cp $^ $(LIBDIR);
-+
-+$(STLIB): $(OBJ)
-+	ar q $@ $^;
-+	ranlib $@
---- saods9-4.0b7.orig/funtools-1.3.0b9/Makefile.in
-+++ saods9-4.0b7/funtools-1.3.0b9/Makefile.in
-@@ -60,7 +60,7 @@
- # FITSY_LIBS =		-L./fitsy -lfitsy
- 
- # wcs files are in the wcs subdirectory
--WCS_INC =		-I./wcs
-+WCS_INC =		-I../wcssubs-3.5.6/
- # WCS_LIBS =		-L./wcs -lwcs
- 
- # filter files are in the filter subdirectory
-@@ -187,7 +187,7 @@
- 
- # Subdirectories to run make in for the primary targets.
- 
--SUBLIBS =	util fitsy wcs filter
-+SUBLIBS =	util fitsy filter
- 
- SUBDIRS =	$(SUBLIBS) gnu funtest
- 
---- saods9-4.0b7.orig/funtools-1.3.0b9/filter/Makefile.in
-+++ saods9-4.0b7/funtools-1.3.0b9/filter/Makefile.in
-@@ -55,7 +55,7 @@
- #FITSY_LIBS =		-L../fitsy
- 
- # wcs files are in the wcs subdirectory
--WCS_INC =		-I../wcs
-+WCS_INC =		-I../../wcssubs-3.5.6
- #WCS_LIBS =		-L../wcs -lwcs
- 
- # extra includes for compiling
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaaccess.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaaccess.1
-@@ -131,7 +131,7 @@
- .IX Title "xpaaccess 1"
- .TH xpaaccess 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpaaccess: see if template matches registered XPA access points\fR
-+xpaaccess \- see if template matches registered XPA access points
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- xpaaccess [\-c] [\-h] [\-i nsinet] [\-m method] [\-n] [\-t sval,lval] [\-u users] \-v <template> [type]
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpainfo.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpainfo.1
-@@ -131,7 +131,7 @@
- .IX Title "xpainfo 1"
- .TH xpainfo 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpainfo: send short message to one or more XPA servers\fR
-+xpainfo \- send short message to one or more XPA servers
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- xpainfo [\-h] [\-i nsinet] [\-m method] [\-n] [\-s] [\-t sval,lval] [\-u users] <template|host:port> [paramlist]
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaget.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaget.1
-@@ -131,7 +131,7 @@
- .IX Title "xpaget 1"
- .TH xpaget 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpaget: retrieve data from one or more XPA servers\fR
-+xpaget \- retrieve data from one or more XPA servers
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- xpaget [\-h] [\-i nsinet] [\-m method] [\-s] [\-t sval,lval] [\-u users] <template|host:port> [paramlist]
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpaset.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpaset.1
-@@ -131,7 +131,7 @@
- .IX Title "xpaset 1"
- .TH xpaset 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpaset: send data to one or more XPA servers\fR
-+xpaset \- send data to one or more XPA servers
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- <data> | xpaset  [\-h] [\-i nsinet] [\-m method] [\-n] [\-p] [\-s] [\-t sval,lval] [\-u users] [\-v] <template|host:port> [paramlist]
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpans.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpans.1
-@@ -131,7 +131,7 @@
- .IX Title "xpans 1"
- .TH xpans 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpans: the XPA Name Server\fR
-+xpans \- the XPA Name Server
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- .Vb 1
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpachanges.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpachanges.1
-@@ -128,10 +128,10 @@
- .rm #[ #] #H #V #F C
- .\" ========================================================================
- .\"
--.IX Title "xpachanges 1"
--.TH xpachanges 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
-+.IX Title "xpachanges 7"
-+.TH xpachanges 7 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBXPA Changes: Changes For Users from XPA 1.0 and 2.0\fR
-+XPA Changes \- Changes For Users from XPA 1.0 and 2.0
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- This document describes changes that will affect users who migrate
---- saods9-4.0b7.orig/xpa-2.1.6/man/man1/xpamb.1
-+++ saods9-4.0b7/xpa-2.1.6/man/man1/xpamb.1
-@@ -131,7 +131,7 @@
- .IX Title "xpamb 1"
- .TH xpamb 1 "March 25, 2005" "version 2.1.6" "SAORD Documentation"
- .SH "NAME"
--\&\fBxpamb: the XPA Message Bus\fR
-+xpamb \- the XPA Message Bus
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- The xpamb program can act as a \*(L"classical\*(R" message bus interface
---- saods9-4.0b7.orig/htmlwidget/src/htmlindex.c
-+++ saods9-4.0b7/htmlwidget/src/htmlindex.c
-@@ -24,6 +24,7 @@
- **   http://www.hwaci.com/drh/
- */
- #include <ctype.h>
-+#include <string.h>
- #include <tk.h>
- #include "htmlindex.h"
- 
---- saods9-4.0b7.orig/htmlwidget/src/htmldraw.c
-+++ saods9-4.0b7/htmlwidget/src/htmldraw.c
-@@ -404,14 +404,12 @@
-   }else{
-     /* We are dealing with a single HtmlElement which contains something
-     ** other than plain text. */
--    int top, btm, cntr;
-     int cnt, w;
-     char zBuf[30];
-     switch( src->base.type ){
-       case Html_LI:
-         x = src->li.x;
-         y = src->li.y;
--        cntr = (top+btm)/2;
-         switch( src->li.type ){
-           case LI_TYPE_Enum_1:
-             sprintf(zBuf,"%d.",src->li.cnt);
---- saods9-4.0b7.orig/htmlwidget/src/htmlcmd.c
-+++ saods9-4.0b7/htmlwidget/src/htmlcmd.c
-@@ -25,6 +25,7 @@
- */
- #include <tk.h>
- #include <stdlib.h>
-+#include <string.h>
- #include "htmlcmd.h"
- 
- /*
---- saods9-4.0b7.orig/htmlwidget/confdefs.h
-+++ saods9-4.0b7/htmlwidget/confdefs.h
-@@ -0,0 +1 @@
-+
---- saods9-4.0b7.orig/iis/util.c
-+++ saods9-4.0b7/iis/util.c
-@@ -1,5 +1,6 @@
- #include <stdio.h>
- #include <stdlib.h>
-+#include <string.h>
- 
- #include "iis.h"
- #include "xim.h"
---- saods9-4.0b7.orig/iis/xim.C
-+++ saods9-4.0b7/iis/xim.C
-@@ -24,7 +24,7 @@
- 
- void iisIO(void* data, int mask)
- {
--  int fd = (int)data;
-+  int fd = *(int*)data;
- 
-   if (IISDebug)
-     cerr << "iisIO() " << fd << ' ' << mask << endl;
-@@ -48,7 +48,7 @@
-   iis->chan[fd] = chan;
- #ifndef __WIN32__
-   Tcl_CreateFileHandler(fd, TCL_READABLE, (void (*)(void*,int))iisIO,
--			(void*)fd);
-+			&fd);
- #else
-   Tcl_CreateEventSource(setupProc, checkProc, (void*)fd);
- #endif
---- saods9-4.0b7.orig/iis/iistcl.C
-+++ saods9-4.0b7/iis/iistcl.C
-@@ -6,10 +6,12 @@
- #include <string.h>
- 
- #if __GNUC__ >= 3
-+#include <cstdlib>
- #include <iostream>
- #include <sstream>
- using namespace std;
- #else
-+#include <stdlib.h>
- #include <iostream.h>
- #include <strstream.h>
- #endif
-@@ -46,6 +48,7 @@
-   return copy;
- }
- 
-+#if 0
- static char* toLower(char* str)
- {
-   char* ptr = str;
-@@ -55,6 +58,7 @@
-   }
-   return str;
- }
-+#endif
- 
- int Iis_Init(Tcl_Interp* interp) {
- 
-@@ -154,7 +158,7 @@
-       xim.chan[i].dataout = 0;    // output channel
-       xim.chan[i].keepalive = 0;  // used to keep input fifo ready
-       xim.chan[i].path[0] = '\0'; // for unix sockets
--      xim.chan[i].reference_frame;// reference (cmd i/o) frame
-+      xim.chan[i].reference_frame=0;// reference (cmd i/o) frame
-       xim.chan[i].rf_p = NULL;    // reference frame descriptor
-     }
-   }
---- saods9-4.0b7.orig/iis/iis.c
-+++ saods9-4.0b7/iis/iis.c
-@@ -4,10 +4,14 @@
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
-+#include <string.h>
- #ifdef HAVE_SYS_UN_H
- #include <sys/un.h>
- #endif
- #include <fcntl.h>
-+#include <unistd.h>
-+#include <ctype.h>
-+#include <time.h>
- 
- #include "iis.h"
- #include "xim.h"
-@@ -110,7 +114,7 @@
-  * UNIX domain socket connection.  All three types of server ports are
-  * simultaneously ready to receive client connections.
-  */
--xim_iisOpen (xim)
-+int xim_iisOpen (xim)
- register XimDataPtr xim;
- {
- 	int nopen = 0;
-@@ -292,7 +296,7 @@
- 	    goto err;
- 
- 	/* Allocate and fill in i/o channel descriptor. */
--	if (chan = get_iochan(xim)) {
-+	if ((chan = get_iochan(xim))) {
- 	    chan->xim = (XtPointer) xim;
- 	    chan->type = IO_INET;
- 	    chan->datain = s;
-@@ -360,7 +364,7 @@
- 	    goto err;
- 
- 	/* Allocate and fill in i/o channel descriptor. */
--	if (chan = get_iochan(xim)) {
-+	if ((chan = get_iochan(xim))) {
- 	    chan->xim = (XtPointer) xim;
- 	    chan->type = IO_UNIX;
- 	    chan->datain = s;
-@@ -414,7 +418,7 @@
- 	} */
- 
- 	/* Allocate and fill in i/o channel descriptor. */
--	if (chan = get_iochan(xim)) {
-+	if ((chan = get_iochan(xim))) {
- 	    chan->xim = (XtPointer) xim;
- 	    chan->type = chan_port->type;
- 	    chan->datain = s;
-@@ -457,7 +461,6 @@
- get_iochan (xim)
- register XimDataPtr xim;
- {
--	register IoChanPtr chan;
- 	register int i;
- 
- 	for (i=0;  i < XtNumber(xim->chan);  i++)
-@@ -744,7 +747,7 @@
- 		 */
- 		char emsg[SZ_WCSBUF];
- 		char *text;
--		int frame, wcsnum;
-+		int frame;
- 
- 		memset ((char *)emsg, 0, SZ_WCSBUF);
- 
-@@ -1031,7 +1034,7 @@
- 
- /* DECODE_FRAMENO -- Decode encoded IIS register frame number.
-  */
--static
-+static int
- decode_frameno (z)
- register int	z;
- {
-@@ -1385,6 +1388,8 @@
-  * elsewhere if needed, our only purpose here is to extract the frame WCS.
-  */
- 
-+print_mappings (FrameBufPtr fr);
-+
- static void
- add_mapping (xim, ctran, wcsbuf, fr)
- register XimDataPtr xim;
-@@ -1476,8 +1481,7 @@
- 
- /* PRINT_MAPPINGS -- Debug routine to print all mappings on a frame.
-  */
--print_mappings (fr)
--FrameBufPtr fr;
-+print_mappings (FrameBufPtr fr)
- {
- 	MappingPtr mp;
- 	register int i;
---- saods9-4.0b7.orig/checkdns/checkdns.c
-+++ saods9-4.0b7/checkdns/checkdns.c
-@@ -9,6 +9,8 @@
- #include <signal.h>
- #include <netdb.h>
- #include <tcl.h>
-+#include <string.h>
-+#include <stdlib.h>
- 
- #ifndef SZ_LINE
- #define SZ_LINE 2048
-@@ -30,7 +32,6 @@
- {
-   int flag=0;
-   char host[SZ_LINE];
--  struct hostent *hostent;
-   struct sigaction act1, oact1;
- 
-   /* start the alarm, if necessary */
---- saods9-4.0b7.orig/saotk/fitsy++/strm.C
-+++ saods9-4.0b7/saotk/fitsy++/strm.C
-@@ -346,7 +346,7 @@
-   if (!(this->pExt_ || (this->pIndex_>0))) {
- 
-     // we are only looking for a primary image
--    if (this->head_ = this->headRead()) {
-+    if ((this->head_ = this->headRead())) {
-       this->found();
-       return;
-     }
-@@ -402,7 +402,7 @@
- 	this->head_ = NULL;
-       }
- 
--      if (this->head_ = this->headRead()) {
-+      if ((this->head_ = this->headRead())) {
- 	this->ext_++;
- 	this->found();
- 	return;
---- saods9-4.0b7.orig/saotk/fitsy++/outchannel.C
-+++ saods9-4.0b7/saotk/fitsy++/outchannel.C
-@@ -7,7 +7,7 @@
- OutFitsChannel::OutFitsChannel(Tcl_Interp* interp, const char* ch)
- {
-   int tclMode;
--  if (ch_ = Tcl_GetChannel(interp, (char*)ch, &tclMode))
-+  if ((ch_ = Tcl_GetChannel(interp, (char*)ch, &tclMode)))
-     valid_ = 1;
- }
- 
---- saods9-4.0b7.orig/saotk/fitsy++/outfile.C
-+++ saods9-4.0b7/saotk/fitsy++/outfile.C
-@@ -6,7 +6,7 @@
- 
- OutFitsFile::OutFitsFile(const char* fn)
- {
--  if (fd_ = fopen(fn, "wb"))
-+  if ((fd_ = fopen(fn, "wb")))
-     valid_ = 1;
- }
- 
-@@ -23,7 +23,7 @@
- 
- OutFitsFileGZ::OutFitsFileGZ(const char* fn)
- {
--  if (fd_ = gzopen(fn, "wb"))
-+  if ((fd_ = gzopen(fn, "wb")))
-     valid_ = 1;
- }
- 
---- saods9-4.0b7.orig/saotk/tkpostscript.h
-+++ saods9-4.0b7/saotk/tkpostscript.h
-@@ -4,7 +4,7 @@
- 
- // this is copied from tkCanvPs.c
- 
--#include "../../tk8.4.9/generic/tkCanvas.h"
-+#include <tk-private/generic/tkCanvas.h>
- 
- typedef struct TkPostscriptInfo {
-     int x, y, width, height;	/* Area to print, in canvas pixel
---- saods9-4.0b7.orig/saotk/Makefile
-+++ saods9-4.0b7/saotk/Makefile
-@@ -34,7 +34,6 @@
- 	../$(WCSSUBSDIR)/*.o \
- 	../$(SLADIR)/*.o \
- 	../$(ASTDIR)/*.o \
--	../$(ZLIBDIR)/*.o \
- 	../$(FUNTOOLSDIR)/filter/*.o \
- 	../$(FUNTOOLSDIR)/fitsy/*.o \
- 	../$(FUNTOOLSDIR)/util/*.o
---- saods9-4.0b7.orig/saotk/frame/parser.H
-+++ saods9-4.0b7/saotk/frame/parser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -332,6 +342,7 @@
-      ZOOM_ = 558
-    };
- #endif
-+/* Tokens.  */
- #define REAL 258
- #define INT 259
- #define STRING 260
-@@ -637,18 +648,20 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 54 "parser.Y"
--typedef union YYSTYPE {
-+{
-   char chr;
-   char str[2048];
-   void* ptr;
-   int integer;
-   double real;
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 652 "parser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 664 "parser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -656,5 +669,3 @@
- 
- extern YYSTYPE frlval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/prosparser.C
-+++ saods9-4.0b7/saotk/frame/prosparser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse prosparse
- #define yylex   proslex
- #define yyerror proserror
-@@ -95,6 +107,7 @@
-      VERSION_ = 288
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -142,8 +155,8 @@
- #define DISCARD_(x) {yyclearin; prosDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -205,16 +218,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 65 "prosparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 218 "prosparser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 237 "prosparser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -225,56 +245,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 230 "prosparser.C"
-+/* Line 216 of yacc.c.  */
-+#line 250 "prosparser.C"
-+
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
-+
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
-+# endif
-+#endif
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -284,24 +419,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -319,39 +454,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
--
--#endif
-+    while (YYID (0))
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
- #endif
- 
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  3
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   229
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  45
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  41
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  90
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  195
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   288
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       34,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -387,7 +516,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned short yyprhs[] =
-+static const yytype_uint16 yyprhs[] =
- {
-        0,     0,     3,     7,    11,    14,    15,    18,    20,    21,
-       25,    26,    30,    34,    36,    38,    40,    42,    44,    46,
-@@ -401,8 +530,8 @@
-      313
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const yysigned_char yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int8 yyrhs[] =
- {
-       46,     0,    -1,    69,    47,    79,    -1,    47,    48,    51,
-       -1,    48,    51,    -1,    -1,    19,    53,    -1,    33,    -1,
-@@ -439,7 +568,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,   123,   123,   126,   127,   130,   131,   132,   133,   133,
-      134,   134,   135,   136,   139,   140,   141,   144,   145,   148,
-@@ -454,9 +583,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "STRING", "HOUR",
-@@ -478,7 +607,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -489,7 +618,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,    45,    46,    47,    47,    48,    48,    48,    49,    48,
-       50,    48,    48,    48,    51,    51,    51,    52,    52,    53,
-@@ -504,7 +633,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     3,     3,     2,     0,     2,     1,     0,     3,
-        0,     3,     3,     1,     1,     1,     1,     1,     1,     1,
-@@ -521,7 +650,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned char yydefact[] =
-+static const yytype_uint8 yydefact[] =
- {
-       58,     0,    59,     1,    52,     0,    55,     0,    54,    53,
-       49,    50,     7,    86,    59,     0,     8,    10,    60,    13,
-@@ -545,8 +674,8 @@
-       27,    25,    25,    72,    69
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const short yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int16 yydefgoto[] =
- {
-       -1,     1,    14,    15,    33,    34,    32,    66,    22,    78,
-       53,    86,   139,   140,   168,   106,   156,    67,    87,   116,
-@@ -558,7 +687,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -110
--static const short yypact[] =
-+static const yytype_int16 yypact[] =
- {
-     -110,    20,   185,  -110,  -110,     4,  -110,    18,  -110,  -110,
-     -110,  -110,  -110,  -110,   162,    14,  -110,  -110,    -5,  -110,
-@@ -583,7 +712,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const short yypgoto[] =
-+static const yytype_int16 yypgoto[] =
- {
-     -110,  -110,  -110,   136,  -110,  -110,   125,   -17,  -110,   -45,
-      -44,   -12,  -109,  -110,   -77,   -57,  -110,    75,   -46,  -110,
-@@ -597,7 +726,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -83
--static const short yytable[] =
-+static const yytype_int16 yytable[] =
- {
-       54,    55,    56,    57,   101,    59,   107,    68,    69,    70,
-       71,    72,    28,    74,    73,   142,   159,   -25,   109,   144,
-@@ -624,7 +753,7 @@
-       -5,     0,     0,     0,     0,     0,     0,     0,     0,    13
- };
- 
--static const short yycheck[] =
-+static const yytype_int16 yycheck[] =
- {
-       44,    45,    46,    47,    81,    49,    83,    53,    54,    55,
-       56,    57,    14,    59,    58,   124,    42,    14,    44,   128,
-@@ -653,7 +782,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,    46,    69,     0,    16,    19,    20,    22,    23,    24,
-       25,    29,    33,    44,    47,    48,    66,    67,    70,    82,
-@@ -677,22 +806,6 @@
-       54,    57,    57,    56,    56
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -718,30 +831,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -762,42 +908,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -806,45 +1006,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -859,13 +1066,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -875,45 +1078,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -923,70 +1128,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
-+
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
- 
--
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
-+
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -994,13 +1321,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -1009,10 +1336,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -1025,14 +1352,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -1043,13 +1374,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -1060,18 +1397,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -1080,9 +1417,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -1106,8 +1443,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -1120,18 +1456,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -1142,21 +1478,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -1187,19 +1523,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -1214,7 +1548,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -1234,22 +1568,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -1291,12 +1624,12 @@
- 
-   case 8:
- #line 133 "prosparser.Y"
--    {globalSystem = (CoordSystem)yyvsp[0].integer;;}
-+    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 10:
- #line 134 "prosparser.Y"
--    {globalSystem = WCS; globalSky = (SkyFrame)yyvsp[0].integer;;}
-+    {globalSystem = WCS; globalSky = (SkyFrame)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 16:
-@@ -1306,12 +1639,12 @@
- 
-   case 17:
- #line 144 "prosparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 18:
- #line 145 "prosparser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 19:
-@@ -1326,97 +1659,97 @@
- 
-   case 27:
- #line 164 "prosparser.Y"
--    {yyval.real = 0;;}
-+    {(yyval.real) = 0;;}
-     break;
- 
-   case 28:
- #line 165 "prosparser.Y"
--    {yyval.real = yyvsp[0].real;;}
-+    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 29:
- #line 168 "prosparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 30:
- #line 169 "prosparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 31:
- #line 170 "prosparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 32:
- #line 173 "prosparser.Y"
--    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
-+    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
-     break;
- 
-   case 33:
- #line 174 "prosparser.Y"
--    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), DEGREES);;}
-+    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREES);;}
-     break;
- 
-   case 34:
- #line 175 "prosparser.Y"
--    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCMIN);;}
-+    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
-     break;
- 
-   case 35:
- #line 176 "prosparser.Y"
--    {yyval.real = FITPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCSEC);;}
-+    {(yyval.real) = FITPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
-     break;
- 
-   case 36:
- #line 180 "prosparser.Y"
-     {
--	  Vector r = FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 37:
- #line 187 "prosparser.Y"
-     {
--	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),DEGREES);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREES);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 38:
- #line 194 "prosparser.Y"
-     {
--	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCMIN);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 39:
- #line 201 "prosparser.Y"
-     {
--	  Vector r=FITPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCSEC);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 40:
- #line 209 "prosparser.Y"
--    {yyval.integer = yyvsp[0].integer;;}
-+    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 41:
- #line 212 "prosparser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 42:
-@@ -1426,13 +1759,13 @@
- 	  CoordSystem sys = checkWCSSystem();
- 	  SkyFrame sky = checkWCSSky();
- 	  if (sky == GALACTIC || sky == ECLIPTIC) 
--	    r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
-+	    r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
- 	  else
--	    r = FITPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
-+	    r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1445,12 +1778,12 @@
- #line 230 "prosparser.Y"
-     {
- 	  Vector r = FITPTR->mapToRef(
--	    Vector(hmsToDegree(prossign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
--	    dmsToDegree(prossign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(hmsToDegree(prossign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
-+	    dmsToDegree(prossign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1463,79 +1796,79 @@
- #line 241 "prosparser.Y"
-     {
- 	  Vector r = FITPTR->mapToRef(
--	    Vector(dmsToDegree(prossign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
--	    dmsToDegree(prossign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(dmsToDegree(prossign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
-+	    dmsToDegree(prossign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 47:
- #line 251 "prosparser.Y"
-     {
--	  Vector r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 48:
- #line 258 "prosparser.Y"
-     {
--	  Vector r = FITPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),
-+	  Vector r = FITPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 49:
- #line 267 "prosparser.Y"
--    {yyval.integer = IMAGE;;}
-+    {(yyval.integer) = IMAGE;;}
-     break;
- 
-   case 50:
- #line 268 "prosparser.Y"
--    {yyval.integer = PHYSICAL;;}
-+    {(yyval.integer) = PHYSICAL;;}
-     break;
- 
-   case 51:
- #line 271 "prosparser.Y"
--    {yyval.integer = yyvsp[0].integer;;}
-+    {(yyval.integer) = (yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 52:
- #line 272 "prosparser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 53:
- #line 273 "prosparser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 54:
- #line 274 "prosparser.Y"
--    {yyval.integer = GALACTIC;;}
-+    {(yyval.integer) = GALACTIC;;}
-     break;
- 
-   case 55:
- #line 275 "prosparser.Y"
--    {yyval.integer = ECLIPTIC;;}
-+    {(yyval.integer) = ECLIPTIC;;}
-     break;
- 
-   case 56:
- #line 278 "prosparser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 57:
- #line 279 "prosparser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 58:
-@@ -1579,15 +1912,15 @@
- 
-   case 63:
- #line 309 "prosparser.Y"
--    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
--	     yyvsp[-2].real,
-+    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
-+	     (yyvsp[(5) - (7)].real),
- 	     color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 64:
- #line 313 "prosparser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-6].vector),
--	    yyvsp[-4].real,yyvsp[-2].real,1,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    (yyvsp[(5) - (9)].real),(yyvsp[(7) - (9)].real),1,
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1599,9 +1932,9 @@
-   case 66:
- #line 318 "prosparser.Y"
-     {
--	  aAnnuli[0] = yyvsp[-7].real;
--	  aAnnuli[1] = yyvsp[-5].real;
--	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
-+	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
-+	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
-+	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
- 	    aNum,aAnnuli,
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-@@ -1609,8 +1942,8 @@
- 
-   case 67:
- #line 326 "prosparser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-8].vector),
--	    yyvsp[-6].real,yyvsp[-4].real,yyvsp[-2].integer,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (11)].vector)),
-+	    (yyvsp[(5) - (11)].real),(yyvsp[(7) - (11)].real),(yyvsp[(9) - (11)].integer),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1619,16 +1952,16 @@
-     {
- 	  // for ellipse annulus
- 	  aStatus = 1;
--	  aCenter = Vector(yyvsp[-6].vector);
--	  aAngle = yyvsp[-2].real;
--	  aVector[0] = Vector(yyvsp[-4].vector);
-+	  aCenter = Vector((yyvsp[(3) - (9)].vector));
-+	  aAngle = (yyvsp[(7) - (9)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
- 	  aNum = 1;
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createEllipseCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+	  FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-     break;
-@@ -1637,7 +1970,7 @@
- #line 348 "prosparser.Y"
-     {	
- 	  aStatus = 2;
--	  aVector[aNum++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-@@ -1646,25 +1979,25 @@
-     {
- 	  // for box annulus
- 	  aStatus = 3;
--	  aCenter = Vector(yyvsp[-6].vector);
--	  aAngle = yyvsp[-2].real;
--	  aVector[0] = Vector(yyvsp[-4].vector);
-+	  aCenter = Vector((yyvsp[(3) - (9)].vector));
-+	  aAngle = (yyvsp[(7) - (9)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
- 	  aNum = 1;
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createBoxCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+	  FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-     break;
- 
-   case 71:
- #line 370 "prosparser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1672,13 +2005,13 @@
- #line 376 "prosparser.Y"
-     {	
- 	  aStatus = 4;
--	  aVector[aNum++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-   case 73:
- #line 382 "prosparser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1695,12 +2028,12 @@
- 
-   case 78:
- #line 394 "prosparser.Y"
--    {polylist.append(new Vertex(yyvsp[0].vector));;}
-+    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
-     break;
- 
-   case 81:
- #line 401 "prosparser.Y"
--    {aAnnuli[aNum++] = yyvsp[0].real;;}
-+    {aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 82:
-@@ -1749,19 +2082,18 @@
- 
-   case 90:
- #line 441 "prosparser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);;}
-+    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);;}
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 2091 "prosparser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 1760 "prosparser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -1790,99 +2122,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -1892,15 +2190,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -1929,9 +2229,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -1939,11 +2240,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -1963,21 +2265,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/fitsdata.C
-+++ saods9-4.0b7/saotk/frame/fitsdata.C
-@@ -5,7 +5,7 @@
- #include <stdlib.h>
- #include <limits.h>
- #include <float.h>
--#include <iostream.h>
-+#include <iostream>
- #include <math.h>
- 
- #include "fitsdata.h"
---- saods9-4.0b7.orig/saotk/frame/tnglex.C
-+++ saods9-4.0b7/saotk/frame/tnglex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/tnglex.C,v 1.76 2005/08/11 21:32:52 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -570,7 +574,7 @@
- #define DISCARD 1
- 
- /* rules */
--#line 574 "tnglex.C"
-+#line 578 "tnglex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -694,13 +698,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 30 "tnglex.L"
- 
- 
--#line 704 "tnglex.C"
-+#line 708 "tnglex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -1081,7 +1085,7 @@
- #line 145 "tnglex.L"
- ECHO;
- 	YY_BREAK
--#line 1085 "tnglex.C"
-+#line 1089 "tnglex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -1597,6 +1601,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/saoparser.Y
-+++ saods9-4.0b7/saotk/frame/saoparser.Y
-@@ -12,8 +12,8 @@
- #define DISCARD_(x) {yyclearin; saoDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/parser.C
-+++ saods9-4.0b7/saotk/frame/parser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse frparse
- #define yylex   frlex
- #define yyerror frerror
-@@ -365,6 +377,7 @@
-      ZOOM_ = 558
-    };
- #endif
-+/* Tokens.  */
- #define REAL 258
- #define INT 259
- #define STRING 260
-@@ -682,8 +695,8 @@
- #define FITSPTR (FRB->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "frame.h"
-@@ -734,18 +747,25 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 54 "parser.Y"
--typedef union YYSTYPE {
-+{
-   char chr;
-   char str[2048];
-   void* ptr;
-   int integer;
-   double real;
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 749 "parser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 768 "parser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -756,56 +776,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 761 "parser.C"
-+/* Line 216 of yacc.c.  */
-+#line 781 "parser.C"
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+#endif
-+
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-+
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
-+# endif
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -815,24 +950,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -850,39 +985,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
-+    while (YYID (0))
- 
- #endif
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
--#endif
--
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  290
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   4160
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  308
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  143
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  926
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  2089
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   558
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned short yytranslate[] =
-+static const yytype_uint16 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -945,7 +1074,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned short yyprhs[] =
-+static const yytype_uint16 yyprhs[] =
- {
-        0,     0,     3,     6,     9,    13,    15,    17,    20,    23,
-       26,    29,    32,    35,    38,    41,    44,    47,    50,    52,
-@@ -1042,8 +1171,8 @@
-     3426,  3433,  3436,  3438,  3441,  3444,  3451
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const short yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int16 yyrhs[] =
- {
-      309,     0,    -1,    82,   311,    -1,    39,   330,    -1,    38,
-       60,     5,    -1,    52,    -1,    56,    -1,    58,   334,    -1,
-@@ -1394,7 +1523,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,   399,   399,   401,   402,   403,   404,   405,   406,   407,
-      409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-@@ -1492,9 +1621,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "REAL", "INT", "STRING", "POINTER",
-@@ -1577,7 +1706,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -1614,7 +1743,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned short yyr1[] =
-+static const yytype_uint16 yyr1[] =
- {
-        0,   308,   309,   309,   309,   309,   309,   309,   309,   309,
-      309,   309,   309,   309,   309,   309,   309,   309,   309,   309,
-@@ -1712,7 +1841,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     2,     2,     3,     1,     1,     2,     2,     2,
-        2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
-@@ -1812,7 +1941,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned short yydefact[] =
-+static const yytype_uint16 yydefact[] =
- {
-        0,     0,     0,     5,     6,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,    18,     0,     0,
-@@ -2025,8 +2154,8 @@
-      830,   826,   165,   547,   582,   778,   778,   683,   680
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const short yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int16 yydefgoto[] =
- {
-       -1,    42,  1059,   141,   127,   444,   955,  1724,  1725,   634,
-      635,  1537,  1536,   403,   129,   404,   354,   948,    72,  1022,
-@@ -2048,7 +2177,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -1930
--static const short yypact[] =
-+static const yytype_int16 yypact[] =
- {
-     3663,    44,    98, -1930, -1930,   534,   468,   630,   444,   151,
-       40,   103,   529,   -67,  3827,   317,   927, -1930,    40,   727,
-@@ -2262,7 +2391,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const short yypgoto[] =
-+static const yytype_int16 yypgoto[] =
- {
-    -1930, -1930,  1448, -1930,   -10,  -177, -1930, -1385,  -729,   964,
-     -348, -1930, -1930,    -7,  -238,    14,  -237,  -371,   349,  -704,
-@@ -2286,7 +2415,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -829
--static const short yytable[] =
-+static const yytype_int16 yytable[] =
- {
-      132,   142,   128,   844,  1060,   540,   638,   455,   205,   543,
-     1034,   223,   848,  1037,   819,   822,  1139,   248,   423,   242,
-@@ -2707,7 +2836,7 @@
-     1043
- };
- 
--static const short yycheck[] =
-+static const yytype_int16 yycheck[] =
- {
-       10,    11,     9,   517,   733,   242,   354,   184,    18,   247,
-      714,    21,     5,   717,   512,   513,     5,    27,     6,    26,
-@@ -3130,7 +3259,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned short yystos[] =
-+static const yytype_uint16 yystos[] =
- {
-        0,    38,    39,    52,    56,    58,    59,    61,    67,    74,
-       81,    82,    98,   107,   117,   121,   124,   127,   129,   136,
-@@ -3343,22 +3472,6 @@
-      423,   312,     5,   324,   324,   315,   315,   414,   414
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -3384,30 +3497,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -3428,42 +3574,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -3472,45 +3672,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -3525,13 +3732,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -3541,45 +3744,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -3589,70 +3794,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
- 
--
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
-+
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
-+
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -3660,13 +3987,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -3675,10 +4002,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -3691,14 +4018,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -3709,13 +4040,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -3726,18 +4063,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -3746,9 +4083,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -3772,8 +4109,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -3786,18 +4122,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -3808,21 +4144,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -3853,19 +4189,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -3880,7 +4214,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -3900,22 +4234,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -3952,7 +4285,7 @@
-     {
-         case 4:
- #line 402 "parser.Y"
--    {FRB->bgColorCmd(yyvsp[0].str);;}
-+    {FRB->bgColorCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 5:
-@@ -3967,12 +4300,12 @@
- 
-   case 9:
- #line 408 "parser.Y"
--    {FRB->colorScaleCmd((FrScale::ColorScaleType)yyvsp[0].integer);;}
-+    {FRB->colorScaleCmd((FrScale::ColorScaleType)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 12:
- #line 411 "parser.Y"
--    {FRB->DATASECCmd(yyvsp[0].integer);;}
-+    {FRB->DATASECCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 18:
-@@ -3982,17 +4315,17 @@
- 
-   case 19:
- #line 418 "parser.Y"
--    {FRB->highliteCmd(yyvsp[0].integer);;}
-+    {FRB->highliteCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 24:
- #line 423 "parser.Y"
--    {FRB->mosaicFastCmd(yyvsp[0].integer);;}
-+    {FRB->mosaicFastCmd((yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 25:
- #line 424 "parser.Y"
--    {FRB->nanColorCmd(yyvsp[0].str);;}
-+    {FRB->nanColorCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 30:
-@@ -4017,182 +4350,182 @@
- 
-   case 43:
- #line 444 "parser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 44:
- #line 445 "parser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 45:
- #line 448 "parser.Y"
--    {yydebug=yyvsp[0].integer;;}
-+    {yydebug=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 46:
- #line 449 "parser.Y"
--    {DebugAST=yyvsp[0].integer;;}
-+    {DebugAST=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 47:
- #line 450 "parser.Y"
--    {DebugMosaic=yyvsp[0].integer;;}
-+    {DebugMosaic=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 48:
- #line 451 "parser.Y"
--    {yydebug=yyvsp[0].integer;;}
-+    {yydebug=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 49:
- #line 452 "parser.Y"
--    {DebugPerf=yyvsp[0].integer;;}
-+    {DebugPerf=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 50:
- #line 453 "parser.Y"
--    {DebugWCS=yyvsp[0].integer;;}
-+    {DebugWCS=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 51:
- #line 454 "parser.Y"
--    {DebugBin=yyvsp[0].integer;;}
-+    {DebugBin=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 52:
- #line 455 "parser.Y"
--    {DebugGZ=yyvsp[0].integer;;}
-+    {DebugGZ=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 53:
- #line 456 "parser.Y"
--    {DebugRGB=yyvsp[0].integer;;}
-+    {DebugRGB=(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 54:
- #line 459 "parser.Y"
--    {yyval.integer=(yyvsp[0].integer ? 1 : 0);;}
-+    {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
-     break;
- 
-   case 55:
- #line 461 "parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 56:
- #line 462 "parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 57:
- #line 463 "parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 58:
- #line 464 "parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 59:
- #line 466 "parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 60:
- #line 467 "parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 61:
- #line 468 "parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 62:
- #line 469 "parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 63:
- #line 472 "parser.Y"
--    {yyval.integer = FrameBase::DEFAULT;;}
-+    {(yyval.integer) = FrameBase::DEFAULT;;}
-     break;
- 
-   case 64:
- #line 473 "parser.Y"
--    {yyval.integer = FrameBase::DEFAULT;;}
-+    {(yyval.integer) = FrameBase::DEFAULT;;}
-     break;
- 
-   case 65:
- #line 474 "parser.Y"
--    {yyval.integer = FrameBase::FIXED;;}
-+    {(yyval.integer) = FrameBase::FIXED;;}
-     break;
- 
-   case 66:
- #line 475 "parser.Y"
--    {yyval.integer = FrameBase::SCIENTIFIC;;}
-+    {(yyval.integer) = FrameBase::SCIENTIFIC;;}
-     break;
- 
-   case 67:
- #line 476 "parser.Y"
--    {yyval.integer = FrameBase::INTEGER;;}
-+    {(yyval.integer) = FrameBase::INTEGER;;}
-     break;
- 
-   case 68:
- #line 479 "parser.Y"
--    {yyval.integer = FrameBase::ROOTBASE;;}
-+    {(yyval.integer) = FrameBase::ROOTBASE;;}
-     break;
- 
-   case 69:
- #line 480 "parser.Y"
--    {yyval.integer = FrameBase::ROOTBASE;;}
-+    {(yyval.integer) = FrameBase::ROOTBASE;;}
-     break;
- 
-   case 70:
- #line 481 "parser.Y"
--    {yyval.integer = FrameBase::FULLBASE;;}
-+    {(yyval.integer) = FrameBase::FULLBASE;;}
-     break;
- 
-   case 71:
- #line 482 "parser.Y"
--    {yyval.integer = FrameBase::ROOT;;}
-+    {(yyval.integer) = FrameBase::ROOT;;}
-     break;
- 
-   case 72:
- #line 483 "parser.Y"
--    {yyval.integer = FrameBase::FULL;;}
-+    {(yyval.integer) = FrameBase::FULL;;}
-     break;
- 
-   case 73:
- #line 486 "parser.Y"
--    {yyval.real = 0;;}
-+    {(yyval.real) = 0;;}
-     break;
- 
-   case 74:
- #line 487 "parser.Y"
--    {yyval.real = yyvsp[0].real;;}
-+    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 75:
- #line 490 "parser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 76:
- #line 491 "parser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 77:
- #line 492 "parser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 78:
- #line 495 "parser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 79:
-@@ -4200,13 +4533,13 @@
-     {
- 	  Vector r;
- 	  if (currentSky == GALACTIC || currentSky == ECLIPTIC) 
--	    r = Vector(yyvsp[-1].real,yyvsp[0].real);
-+	    r = Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));
- 	  else
--	    r = Vector(yyvsp[-1].real*360./24.,yyvsp[0].real);
-+	    r = Vector((yyvsp[(1) - (2)].real)*360./24.,(yyvsp[(2) - (2)].real));
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -4218,12 +4551,12 @@
-   case 81:
- #line 511 "parser.Y"
-     {
--	  Vector r = Vector(hmsToDegree(frsign2,yyvsp[-6].integer,yyvsp[-5].integer,yyvsp[-4].real), 
--	    dmsToDegree(frsign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real));
-+	  Vector r = Vector(hmsToDegree(frsign2,(yyvsp[(1) - (7)].integer),(yyvsp[(2) - (7)].integer),(yyvsp[(3) - (7)].real)), 
-+	    dmsToDegree(frsign,(yyvsp[(5) - (7)].integer),(yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -4235,377 +4568,377 @@
-   case 83:
- #line 520 "parser.Y"
-     {
--	  Vector r = Vector(dmsToDegree(frsign2,yyvsp[-6].integer,yyvsp[-5].real,yyvsp[-4].real),
--	    dmsToDegree(frsign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real));
-+	  Vector r = Vector(dmsToDegree(frsign2,(yyvsp[(1) - (7)].integer),(yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real)),
-+	    dmsToDegree(frsign,(yyvsp[(5) - (7)].integer),(yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 84:
- #line 529 "parser.Y"
-     {
--	  yyval.vector[0] = yyvsp[-1].real;
--	  yyval.vector[1] = yyvsp[0].real;
--	  yyval.vector[2] = 1;
-+	  (yyval.vector)[0] = (yyvsp[(1) - (2)].real);
-+	  (yyval.vector)[1] = (yyvsp[(2) - (2)].real);
-+	  (yyval.vector)[2] = 1;
- 	;}
-     break;
- 
-   case 85:
- #line 536 "parser.Y"
--    {yyval.integer = currentCoord = IMAGE;;}
-+    {(yyval.integer) = currentCoord = IMAGE;;}
-     break;
- 
-   case 86:
- #line 537 "parser.Y"
--    {yyval.integer = currentCoord = PHYSICAL;;}
-+    {(yyval.integer) = currentCoord = PHYSICAL;;}
-     break;
- 
-   case 87:
- #line 538 "parser.Y"
--    {yyval.integer = currentCoord = DETECTOR;;}
-+    {(yyval.integer) = currentCoord = DETECTOR;;}
-     break;
- 
-   case 88:
- #line 539 "parser.Y"
--    {yyval.integer = currentCoord = AMPLIFIER;;}
-+    {(yyval.integer) = currentCoord = AMPLIFIER;;}
-     break;
- 
-   case 89:
- #line 540 "parser.Y"
--    {yyval.integer = (CoordSystem)yyvsp[0].integer;;}
-+    {(yyval.integer) = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 90:
- #line 543 "parser.Y"
--    {yyval.integer = currentCoord = WCS;;}
-+    {(yyval.integer) = currentCoord = WCS;;}
-     break;
- 
-   case 91:
- #line 544 "parser.Y"
--    {yyval.integer = currentCoord = WCSA;;}
-+    {(yyval.integer) = currentCoord = WCSA;;}
-     break;
- 
-   case 92:
- #line 545 "parser.Y"
--    {yyval.integer = currentCoord = WCSB;;}
-+    {(yyval.integer) = currentCoord = WCSB;;}
-     break;
- 
-   case 93:
- #line 546 "parser.Y"
--    {yyval.integer = currentCoord = WCSC;;}
-+    {(yyval.integer) = currentCoord = WCSC;;}
-     break;
- 
-   case 94:
- #line 547 "parser.Y"
--    {yyval.integer = currentCoord = WCSD;;}
-+    {(yyval.integer) = currentCoord = WCSD;;}
-     break;
- 
-   case 95:
- #line 548 "parser.Y"
--    {yyval.integer = currentCoord = WCSE;;}
-+    {(yyval.integer) = currentCoord = WCSE;;}
-     break;
- 
-   case 96:
- #line 549 "parser.Y"
--    {yyval.integer = currentCoord = WCSF;;}
-+    {(yyval.integer) = currentCoord = WCSF;;}
-     break;
- 
-   case 97:
- #line 550 "parser.Y"
--    {yyval.integer = currentCoord = WCSG;;}
-+    {(yyval.integer) = currentCoord = WCSG;;}
-     break;
- 
-   case 98:
- #line 551 "parser.Y"
--    {yyval.integer = currentCoord = WCSH;;}
-+    {(yyval.integer) = currentCoord = WCSH;;}
-     break;
- 
-   case 99:
- #line 552 "parser.Y"
--    {yyval.integer = currentCoord = WCSI;;}
-+    {(yyval.integer) = currentCoord = WCSI;;}
-     break;
- 
-   case 100:
- #line 553 "parser.Y"
--    {yyval.integer = currentCoord = WCSJ;;}
-+    {(yyval.integer) = currentCoord = WCSJ;;}
-     break;
- 
-   case 101:
- #line 554 "parser.Y"
--    {yyval.integer = currentCoord = WCSK;;}
-+    {(yyval.integer) = currentCoord = WCSK;;}
-     break;
- 
-   case 102:
- #line 555 "parser.Y"
--    {yyval.integer = currentCoord = WCSL;;}
-+    {(yyval.integer) = currentCoord = WCSL;;}
-     break;
- 
-   case 103:
- #line 556 "parser.Y"
--    {yyval.integer = currentCoord = WCSM;;}
-+    {(yyval.integer) = currentCoord = WCSM;;}
-     break;
- 
-   case 104:
- #line 557 "parser.Y"
--    {yyval.integer = currentCoord = WCSN;;}
-+    {(yyval.integer) = currentCoord = WCSN;;}
-     break;
- 
-   case 105:
- #line 558 "parser.Y"
--    {yyval.integer = currentCoord = WCSO;;}
-+    {(yyval.integer) = currentCoord = WCSO;;}
-     break;
- 
-   case 106:
- #line 559 "parser.Y"
--    {yyval.integer = currentCoord = WCSP;;}
-+    {(yyval.integer) = currentCoord = WCSP;;}
-     break;
- 
-   case 107:
- #line 560 "parser.Y"
--    {yyval.integer = currentCoord = WCSQ;;}
-+    {(yyval.integer) = currentCoord = WCSQ;;}
-     break;
- 
-   case 108:
- #line 561 "parser.Y"
--    {yyval.integer = currentCoord = WCSR;;}
-+    {(yyval.integer) = currentCoord = WCSR;;}
-     break;
- 
-   case 109:
- #line 562 "parser.Y"
--    {yyval.integer = currentCoord = WCSS;;}
-+    {(yyval.integer) = currentCoord = WCSS;;}
-     break;
- 
-   case 110:
- #line 563 "parser.Y"
--    {yyval.integer = currentCoord = WCST;;}
-+    {(yyval.integer) = currentCoord = WCST;;}
-     break;
- 
-   case 111:
- #line 564 "parser.Y"
--    {yyval.integer = currentCoord = WCSU;;}
-+    {(yyval.integer) = currentCoord = WCSU;;}
-     break;
- 
-   case 112:
- #line 565 "parser.Y"
--    {yyval.integer = currentCoord = WCSV;;}
-+    {(yyval.integer) = currentCoord = WCSV;;}
-     break;
- 
-   case 113:
- #line 566 "parser.Y"
--    {yyval.integer = currentCoord = WCSW;;}
-+    {(yyval.integer) = currentCoord = WCSW;;}
-     break;
- 
-   case 114:
- #line 567 "parser.Y"
--    {yyval.integer = currentCoord = WCSX;;}
-+    {(yyval.integer) = currentCoord = WCSX;;}
-     break;
- 
-   case 115:
- #line 568 "parser.Y"
--    {yyval.integer = currentCoord = WCSY;;}
-+    {(yyval.integer) = currentCoord = WCSY;;}
-     break;
- 
-   case 116:
- #line 569 "parser.Y"
--    {yyval.integer = currentCoord = WCSZ;;}
-+    {(yyval.integer) = currentCoord = WCSZ;;}
-     break;
- 
-   case 117:
- #line 572 "parser.Y"
--    {yyval.integer = CANVAS;;}
-+    {(yyval.integer) = CANVAS;;}
-     break;
- 
-   case 118:
- #line 573 "parser.Y"
--    {yyval.integer = PANNER;;}
-+    {(yyval.integer) = PANNER;;}
-     break;
- 
-   case 119:
- #line 576 "parser.Y"
--    {yyval.integer = currentSky = FK5;;}
-+    {(yyval.integer) = currentSky = FK5;;}
-     break;
- 
-   case 120:
- #line 577 "parser.Y"
--    {yyval.integer = currentSky = FK4;;}
-+    {(yyval.integer) = currentSky = FK4;;}
-     break;
- 
-   case 121:
- #line 578 "parser.Y"
--    {yyval.integer = currentSky = FK4;;}
-+    {(yyval.integer) = currentSky = FK4;;}
-     break;
- 
-   case 122:
- #line 579 "parser.Y"
--    {yyval.integer = currentSky = FK5;;}
-+    {(yyval.integer) = currentSky = FK5;;}
-     break;
- 
-   case 123:
- #line 580 "parser.Y"
--    {yyval.integer = currentSky = FK5;;}
-+    {(yyval.integer) = currentSky = FK5;;}
-     break;
- 
-   case 124:
- #line 581 "parser.Y"
--    {yyval.integer = currentSky = ICRS;;}
-+    {(yyval.integer) = currentSky = ICRS;;}
-     break;
- 
-   case 125:
- #line 582 "parser.Y"
--    {yyval.integer = currentSky = GALACTIC;;}
-+    {(yyval.integer) = currentSky = GALACTIC;;}
-     break;
- 
-   case 126:
- #line 583 "parser.Y"
--    {yyval.integer = currentSky = ECLIPTIC;;}
-+    {(yyval.integer) = currentSky = ECLIPTIC;;}
-     break;
- 
-   case 127:
- #line 586 "parser.Y"
--    {yyval.integer=DEGREES;;}
-+    {(yyval.integer)=DEGREES;;}
-     break;
- 
-   case 128:
- #line 587 "parser.Y"
--    {yyval.integer=DEGREES;;}
-+    {(yyval.integer)=DEGREES;;}
-     break;
- 
-   case 129:
- #line 588 "parser.Y"
--    {yyval.integer=SEXAGESIMAL;;}
-+    {(yyval.integer)=SEXAGESIMAL;;}
-     break;
- 
-   case 130:
- #line 589 "parser.Y"
--    {yyval.integer=HMS;;}
-+    {(yyval.integer)=HMS;;}
-     break;
- 
-   case 131:
- #line 590 "parser.Y"
--    {yyval.integer=ARCMIN;;}
-+    {(yyval.integer)=ARCMIN;;}
-     break;
- 
-   case 132:
- #line 591 "parser.Y"
--    {yyval.integer=ARCSEC;;}
-+    {(yyval.integer)=ARCSEC;;}
-     break;
- 
-   case 133:
- #line 594 "parser.Y"
--    {yyval.integer = FrScale::LINEARSCALE;;}
-+    {(yyval.integer) = FrScale::LINEARSCALE;;}
-     break;
- 
-   case 134:
- #line 595 "parser.Y"
--    {yyval.integer = FrScale::LOGSCALE;;}
-+    {(yyval.integer) = FrScale::LOGSCALE;;}
-     break;
- 
-   case 135:
- #line 596 "parser.Y"
--    {yyval.integer = FrScale::SQUAREDSCALE;;}
-+    {(yyval.integer) = FrScale::SQUAREDSCALE;;}
-     break;
- 
-   case 136:
- #line 597 "parser.Y"
--    {yyval.integer = FrScale::SQRTSCALE;;}
-+    {(yyval.integer) = FrScale::SQRTSCALE;;}
-     break;
- 
-   case 137:
- #line 598 "parser.Y"
--    {yyval.integer = FrScale::HISTEQUSCALE;;}
-+    {(yyval.integer) = FrScale::HISTEQUSCALE;;}
-     break;
- 
-   case 138:
- #line 601 "parser.Y"
--    {yyval.integer = FrameBase::SHMID;;}
-+    {(yyval.integer) = FrameBase::SHMID;;}
-     break;
- 
-   case 139:
- #line 602 "parser.Y"
--    {yyval.integer = FrameBase::SHMID;;}
-+    {(yyval.integer) = FrameBase::SHMID;;}
-     break;
- 
-   case 140:
- #line 603 "parser.Y"
--    {yyval.integer = FrameBase::KEY;;}
-+    {(yyval.integer) = FrameBase::KEY;;}
-     break;
- 
-   case 141:
- #line 606 "parser.Y"
--    {yyval.integer = FrameBase::LOADALL;;}
-+    {(yyval.integer) = FrameBase::LOADALL;;}
-     break;
- 
-   case 142:
- #line 607 "parser.Y"
--    {yyval.integer = FrameBase::LOADALL;;}
-+    {(yyval.integer) = FrameBase::LOADALL;;}
-     break;
- 
-   case 143:
- #line 608 "parser.Y"
--    {yyval.integer = FrameBase::INCR;;}
-+    {(yyval.integer) = FrameBase::INCR;;}
-     break;
- 
-   case 144:
- #line 611 "parser.Y"
--    {yyval.integer = FrameBase::NOCOMPRESS;;}
-+    {(yyval.integer) = FrameBase::NOCOMPRESS;;}
-     break;
- 
-   case 145:
- #line 612 "parser.Y"
--    {yyval.integer = FrameBase::NOCOMPRESS;;}
-+    {(yyval.integer) = FrameBase::NOCOMPRESS;;}
-     break;
- 
-   case 146:
- #line 613 "parser.Y"
--    {yyval.integer = FrameBase::GZ;;}
-+    {(yyval.integer) = FrameBase::GZ;;}
-     break;
- 
-   case 147:
- #line 616 "parser.Y"
--    {FRB->binAboutCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->binAboutCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 148:
- #line 617 "parser.Y"
--    {FRB->binColsCmd(yyvsp[-2].str,yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->binColsCmd((yyvsp[(2) - (4)].str),(yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 149:
- #line 618 "parser.Y"
--    {FRB->binDepthCmd(yyvsp[0].integer);;}
-+    {FRB->binDepthCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 152:
- #line 621 "parser.Y"
--    {FRB->binBufferSizeCmd(yyvsp[0].integer);;}
-+    {FRB->binBufferSizeCmd((yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 154:
- #line 623 "parser.Y"
--    {FRB->binFilterCmd(yyvsp[0].str);;}
-+    {FRB->binFilterCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 155:
- #line 626 "parser.Y"
--    {FRB->binFactorCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->binFactorCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 156:
- #line 628 "parser.Y"
--    {FRB->binFactorAboutCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->binFactorAboutCmd(Vector((yyvsp[(1) - (5)].real),(yyvsp[(2) - (5)].real)), Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
-     break;
- 
-   case 157:
- #line 629 "parser.Y"
--    {FRB->binFactorToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->binFactorToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 158:
- #line 631 "parser.Y"
--    {FRB->binFactorToAboutCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->binFactorToAboutCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 159:
-@@ -4625,48 +4958,48 @@
- 
-   case 162:
- #line 640 "parser.Y"
--    {FRB->binCmd(Vector(yyvsp[-6].real,yyvsp[-5].real), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
-+    {FRB->binCmd(Vector((yyvsp[(1) - (7)].real),(yyvsp[(2) - (7)].real)), (yyvsp[(5) - (7)].str), (yyvsp[(6) - (7)].str), (yyvsp[(7) - (7)].str));;}
-     break;
- 
-   case 163:
- #line 643 "parser.Y"
--    {FRB->binCmd(Vector(yyvsp[-10].real,yyvsp[-9].real), yyvsp[-8].integer, Vector(yyvsp[-7].real,yyvsp[-6].real), yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
-+    {FRB->binCmd(Vector((yyvsp[(1) - (11)].real),(yyvsp[(2) - (11)].real)), (yyvsp[(3) - (11)].integer), Vector((yyvsp[(4) - (11)].real),(yyvsp[(5) - (11)].real)), (yyvsp[(8) - (11)].str), (yyvsp[(9) - (11)].str), (yyvsp[(10) - (11)].str), (yyvsp[(11) - (11)].str));;}
-     break;
- 
-   case 164:
- #line 645 "parser.Y"
--    {FRB->binCmd(Vector(yyvsp[-7].real,yyvsp[-6].real), Vector(yyvsp[-4].real,yyvsp[-3].real), yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
-+    {FRB->binCmd(Vector((yyvsp[(1) - (8)].real),(yyvsp[(2) - (8)].real)), Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real)), (yyvsp[(6) - (8)].str), (yyvsp[(7) - (8)].str), (yyvsp[(8) - (8)].str));;}
-     break;
- 
-   case 165:
- #line 648 "parser.Y"
--    {FRB->binCmd(Vector(yyvsp[-11].real,yyvsp[-10].real), yyvsp[-9].integer, Vector(yyvsp[-8].real,yyvsp[-7].real), Vector(yyvsp[-5].real,yyvsp[-4].real), 
--	    yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].str, yyvsp[0].str);;}
-+    {FRB->binCmd(Vector((yyvsp[(1) - (12)].real),(yyvsp[(2) - (12)].real)), (yyvsp[(3) - (12)].integer), Vector((yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real)), Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), 
-+	    (yyvsp[(9) - (12)].str), (yyvsp[(10) - (12)].str), (yyvsp[(11) - (12)].str), (yyvsp[(12) - (12)].str));;}
-     break;
- 
-   case 170:
- #line 656 "parser.Y"
--    {FRB->clipZScaleParamCmd(yyvsp[-2].real,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->clipZScaleParamCmd((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 171:
- #line 657 "parser.Y"
--    {FRB->clipPreserveCmd(yyvsp[0].integer);;}
-+    {FRB->clipPreserveCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 172:
- #line 660 "parser.Y"
--    {FRB->clipUserCmd(yyvsp[-1].real,yyvsp[0].real);;}
-+    {FRB->clipUserCmd((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real));;}
-     break;
- 
-   case 173:
- #line 661 "parser.Y"
--    {FRB->clipUserLowCmd(yyvsp[0].real);;}
-+    {FRB->clipUserLowCmd((yyvsp[(2) - (2)].real));;}
-     break;
- 
-   case 174:
- #line 662 "parser.Y"
--    {FRB->clipUserHighCmd(yyvsp[0].real);;}
-+    {FRB->clipUserHighCmd((yyvsp[(2) - (2)].real));;}
-     break;
- 
-   case 175:
-@@ -4681,7 +5014,7 @@
- 
-   case 177:
- #line 669 "parser.Y"
--    {FRB->clipModeCmd(yyvsp[0].real);;}
-+    {FRB->clipModeCmd((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 178:
-@@ -4706,7 +5039,7 @@
- 
-   case 183:
- #line 677 "parser.Y"
--    {FRB->clipMinMaxParamCmd(yyvsp[0].integer);;}
-+    {FRB->clipMinMaxParamCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 184:
-@@ -4736,40 +5069,40 @@
- 
-   case 189:
- #line 688 "parser.Y"
--    {FR->colormapCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr, 
--	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
-+    {FR->colormapCmd((yyvsp[(1) - (7)].integer), (yyvsp[(2) - (7)].real), (yyvsp[(3) - (7)].real), (yyvsp[(4) - (7)].integer), (unsigned short*)(yyvsp[(5) - (7)].ptr), 
-+	    (unsigned char*)(yyvsp[(6) - (7)].ptr), (yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 190:
- #line 691 "parser.Y"
--    {FRRGB->colormapCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
-+    {FRRGB->colormapCmd((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real),(yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real),(yyvsp[(6) - (9)].real),(yyvsp[(7) - (9)].real),(unsigned char*)(yyvsp[(8) - (9)].ptr),(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 191:
- #line 693 "parser.Y"
--    {FRB->colormapAreaCmd(yyvsp[-1].integer,(FrameBase::ColormapMode)yyvsp[0].integer);;}
-+    {FRB->colormapAreaCmd((yyvsp[(2) - (3)].integer),(FrameBase::ColormapMode)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 193:
- #line 696 "parser.Y"
--    {FR->colormapMotionCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr,
--	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
-+    {FR->colormapMotionCmd((yyvsp[(2) - (8)].integer), (yyvsp[(3) - (8)].real), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].integer), (unsigned short*)(yyvsp[(6) - (8)].ptr),
-+	    (unsigned char*)(yyvsp[(7) - (8)].ptr), (yyvsp[(8) - (8)].integer));;}
-     break;
- 
-   case 194:
- #line 700 "parser.Y"
--    {FRRGB->colormapMotionCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
-+    {FRRGB->colormapMotionCmd((yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
-     break;
- 
-   case 195:
- #line 702 "parser.Y"
--    {FR->colormapEndCmd(yyvsp[-6].integer, yyvsp[-5].real, yyvsp[-4].real, yyvsp[-3].integer, (unsigned short*)yyvsp[-2].ptr,
--	    (unsigned char*)yyvsp[-1].ptr, yyvsp[0].integer);;}
-+    {FR->colormapEndCmd((yyvsp[(2) - (8)].integer), (yyvsp[(3) - (8)].real), (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].integer), (unsigned short*)(yyvsp[(6) - (8)].ptr),
-+	    (unsigned char*)(yyvsp[(7) - (8)].ptr), (yyvsp[(8) - (8)].integer));;}
-     break;
- 
-   case 196:
- #line 705 "parser.Y"
--    {FRRGB->colormapEndCmd(yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real,yyvsp[-2].real,(unsigned char*)yyvsp[-1].ptr,yyvsp[0].integer);;}
-+    {FRRGB->colormapEndCmd((yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(unsigned char*)(yyvsp[(9) - (10)].ptr),(yyvsp[(10) - (10)].integer));;}
-     break;
- 
-   case 197:
-@@ -4779,27 +5112,27 @@
- 
-   case 198:
- #line 709 "parser.Y"
--    {FRB->colormapBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->colormapBeginCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 199:
- #line 712 "parser.Y"
--    {yyval.integer = FrameBase::CENTER;;}
-+    {(yyval.integer) = FrameBase::CENTER;;}
-     break;
- 
-   case 200:
- #line 713 "parser.Y"
--    {yyval.integer = FrameBase::CLICK;;}
-+    {(yyval.integer) = FrameBase::CLICK;;}
-     break;
- 
-   case 201:
- #line 716 "parser.Y"
--    {FRB->contourSetColorCmd(yyvsp[0].str);;}
-+    {FRB->contourSetColorCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 202:
- #line 718 "parser.Y"
--    {FRB->contourCopyCmd((CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->contourCopyCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFrame)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 204:
-@@ -4814,32 +5147,32 @@
- 
-   case 206:
- #line 723 "parser.Y"
--    {FRB->contourLoadCmd(yyvsp[-4].str, yyvsp[-3].integer, yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->contourLoadCmd((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].str), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFrame)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 207:
- #line 725 "parser.Y"
--    {FRB->contourPasteCmd(yyvsp[-4].str, yyvsp[-3].integer, yyvsp[-2].ptr, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->contourPasteCmd((yyvsp[(2) - (6)].str), (yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].ptr), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFrame)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 208:
- #line 727 "parser.Y"
--    {FRB->contourSaveCmd(yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->contourSaveCmd((yyvsp[(2) - (4)].str), (CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 209:
- #line 728 "parser.Y"
--    {FRB->contourSetLineWidthCmd(yyvsp[0].integer);;}
-+    {FRB->contourSetLineWidthCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 210:
- #line 732 "parser.Y"
--    {FRB->contourCreateCmd(yyvsp[-4].str,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].integer);;}
-+    {FRB->contourCreateCmd((yyvsp[(1) - (5)].str),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 211:
- #line 734 "parser.Y"
--    {FRB->contourCreateCmd(yyvsp[-4].str,yyvsp[-3].integer,yyvsp[-2].real,yyvsp[-1].integer,yyvsp[0].str);;}
-+    {FRB->contourCreateCmd((yyvsp[(1) - (5)].str),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 212:
-@@ -4850,62 +5183,62 @@
- 
-   case 213:
- #line 740 "parser.Y"
--    {yyval.integer = FVContour::SMOOTH;;}
-+    {(yyval.integer) = FVContour::SMOOTH;;}
-     break;
- 
-   case 214:
- #line 741 "parser.Y"
--    {yyval.integer = FVContour::BLOCK;;}
-+    {(yyval.integer) = FVContour::BLOCK;;}
-     break;
- 
-   case 215:
- #line 745 "parser.Y"
--    {FRB->crosshairBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->crosshairBeginCmd(Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)), (InternalSystem)(yyvsp[(3) - (5)].integer));;}
-     break;
- 
-   case 216:
- #line 747 "parser.Y"
--    {FRB->crosshairMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->crosshairMotionCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer));;}
-     break;
- 
-   case 217:
- #line 749 "parser.Y"
--    {FRB->crosshairCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->crosshairCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 218:
- #line 751 "parser.Y"
--    {FRB->crosshairBeginCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-1].integer);;}
-+    {FRB->crosshairBeginCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(3) - (4)].integer));;}
-     break;
- 
-   case 219:
- #line 753 "parser.Y"
--    {FRB->crosshairMotionCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-1].integer);;}
-+    {FRB->crosshairMotionCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(2) - (3)].integer));;}
-     break;
- 
-   case 220:
- #line 755 "parser.Y"
--    {FRB->crosshairCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->crosshairCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
-     break;
- 
-   case 221:
- #line 756 "parser.Y"
--    {FRB->crosshairCmd(yyvsp[0].integer);;}
-+    {FRB->crosshairCmd((yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 222:
- #line 757 "parser.Y"
--    {FRB->crosshairWarpCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->crosshairWarpCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 224:
- #line 761 "parser.Y"
--    {FRB->exportJPEGCmd(yyvsp[-1].str,yyvsp[0].real);;}
-+    {FRB->exportJPEGCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].real));;}
-     break;
- 
-   case 228:
- #line 767 "parser.Y"
--    {FRB->fitsyHasExtCmd(yyvsp[0].str);;}
-+    {FRB->fitsyHasExtCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 229:
-@@ -4940,12 +5273,12 @@
- 
-   case 244:
- #line 785 "parser.Y"
--    {FRB->getHistogramCmd(yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->getHistogramCmd((yyvsp[(2) - (3)].str),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 245:
- #line 787 "parser.Y"
--    {FRB->getHorzCutCmd(yyvsp[-4].str,yyvsp[-3].str,Vector(yyvsp[-2].real,yyvsp[-1].real),(InternalSystem)yyvsp[0].integer);;}
-+    {FRB->getHorzCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 248:
-@@ -4965,7 +5298,7 @@
- 
-   case 253:
- #line 796 "parser.Y"
--    {FRB->getPixelTableCmd(Vector(yyvsp[-3].real,yyvsp[-2].real), (InternalSystem)yyvsp[-4].integer, yyvsp[-1].integer, yyvsp[0].str);;}
-+    {FRB->getPixelTableCmd(Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)), (InternalSystem)(yyvsp[(3) - (7)].integer), (yyvsp[(6) - (7)].integer), (yyvsp[(7) - (7)].str));;}
-     break;
- 
-   case 257:
-@@ -4975,12 +5308,12 @@
- 
-   case 258:
- #line 802 "parser.Y"
--    {FRB->getValueCmd(Vector(yyvsp[-1].real,yyvsp[0].real),(InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->getValueCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)),(InternalSystem)(yyvsp[(2) - (4)].integer));;}
-     break;
- 
-   case 259:
- #line 804 "parser.Y"
--    {FRB->getVertCutCmd(yyvsp[-4].str,yyvsp[-3].str,Vector(yyvsp[-2].real,yyvsp[-1].real),(InternalSystem)yyvsp[0].integer);;}
-+    {FRB->getVertCutCmd((yyvsp[(3) - (7)].str),(yyvsp[(4) - (7)].str),Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)),(InternalSystem)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 261:
-@@ -5025,7 +5358,7 @@
- 
-   case 270:
- #line 817 "parser.Y"
--    {FRB->getBinColsMinMaxCmd(yyvsp[0].str);;}
-+    {FRB->getBinColsMinMaxCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 271:
-@@ -5065,7 +5398,7 @@
- 
-   case 280:
- #line 831 "parser.Y"
--    {FRB->getClipCmd(yyvsp[0].real);;}
-+    {FRB->getClipCmd((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 281:
-@@ -5100,7 +5433,7 @@
- 
-   case 287:
- #line 843 "parser.Y"
--    {FRB->getContourCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->getContourCmd((CoordSystem)(yyvsp[(1) - (2)].integer),(SkyFrame)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 288:
-@@ -5125,24 +5458,24 @@
- 
-   case 293:
- #line 852 "parser.Y"
--    {FRB->getContourLevelCmd(yyvsp[-3].integer,yyvsp[-2].real,yyvsp[-1].real,(FrScale::ColorScaleType)yyvsp[0].integer);;}
-+    {FRB->getContourLevelCmd((yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real),(FrScale::ColorScaleType)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 294:
- #line 856 "parser.Y"
--    {FRB->getCoordCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), (InternalSystem)yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
--	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getCoordCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (InternalSystem)(yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-+	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 295:
- #line 860 "parser.Y"
--    {FRB->getCrosshairCmd((InternalSystem)yyvsp[0].integer);;}
-+    {FRB->getCrosshairCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 296:
- #line 862 "parser.Y"
--    {FRB->getCrosshairCmd((CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer,
--	    (FrameBase::Precision)yyvsp[0].integer);}
-+    {FRB->getCrosshairCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
-+	    (FrameBase::Precision)(yyvsp[(4) - (4)].integer));}
-     break;
- 
-   case 297:
-@@ -5152,13 +5485,13 @@
- 
-   case 298:
- #line 867 "parser.Y"
--    {FRB->getCursorCmd((InternalSystem)yyvsp[0].integer);;}
-+    {FRB->getCursorCmd((InternalSystem)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 299:
- #line 869 "parser.Y"
--    {FRB->getCursorCmd((CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer,
--	    (FrameBase::Precision)yyvsp[0].integer);;}
-+    {FRB->getCursorCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (SkyFrame)(yyvsp[(2) - (4)].integer), (SkyFormat)(yyvsp[(3) - (4)].integer),
-+	    (FrameBase::Precision)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 300:
-@@ -5168,36 +5501,36 @@
- 
-   case 301:
- #line 875 "parser.Y"
--    {FRB->getDataValuesCmd(1, Vector(yyvsp[-3].vector), 
--	    (CoordSystem)yyvsp[-5].integer, (SkyFrame)yyvsp[-4].integer, Vector(yyvsp[-2].real,yyvsp[-1].real), yyvsp[0].str);;}
-+    {FRB->getDataValuesCmd(1, Vector((yyvsp[(3) - (6)].vector)), 
-+	    (CoordSystem)(yyvsp[(1) - (6)].integer), (SkyFrame)(yyvsp[(2) - (6)].integer), Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)), (yyvsp[(6) - (6)].str));;}
-     break;
- 
-   case 302:
- #line 878 "parser.Y"
--    {FRB->getDataValuesCmd(yyvsp[-6].integer, Vector(yyvsp[-3].vector), 
--	    (CoordSystem)yyvsp[-5].integer, (SkyFrame)yyvsp[-4].integer, Vector(yyvsp[-2].real,yyvsp[-1].real), yyvsp[0].str);;}
-+    {FRB->getDataValuesCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].vector)), 
-+	    (CoordSystem)(yyvsp[(2) - (7)].integer), (SkyFrame)(yyvsp[(3) - (7)].integer), Vector((yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].real)), (yyvsp[(7) - (7)].str));;}
-     break;
- 
-   case 303:
- #line 881 "parser.Y"
--    {FRB->getDataValuesCmd(Vector(yyvsp[-3].real,yyvsp[-2].real),(InternalSystem)yyvsp[-4].integer,
--	    Vector(yyvsp[-1].integer,yyvsp[0].integer));;}
-+    {FRB->getDataValuesCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real)),(InternalSystem)(yyvsp[(1) - (5)].integer),
-+	    Vector((yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer)));;}
-     break;
- 
-   case 304:
- #line 885 "parser.Y"
--    {FRB->getInfoCmd(yyvsp[0].str);;}
-+    {FRB->getInfoCmd((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 305:
- #line 887 "parser.Y"
--    {FRB->getInfoCmd(Vector(yyvsp[-4].real,yyvsp[-3].real), (InternalSystem)yyvsp[-5].integer, 
--	    (SkyFrame)yyvsp[-2].integer, (SkyFormat)yyvsp[-1].integer, yyvsp[0].str);;}
-+    {FRB->getInfoCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real)), (InternalSystem)(yyvsp[(1) - (6)].integer), 
-+	    (SkyFrame)(yyvsp[(4) - (6)].integer), (SkyFormat)(yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
-     break;
- 
-   case 306:
- #line 891 "parser.Y"
--    {FR->iisGetCmd((char*)yyvsp[-4].ptr,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FR->iisGetCmd((char*)(yyvsp[(1) - (5)].ptr),(yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 307:
-@@ -5222,12 +5555,12 @@
- 
-   case 312:
- #line 899 "parser.Y"
--    {FRB->iisGetFileNameCmd(yyvsp[0].integer);;}
-+    {FRB->iisGetFileNameCmd((yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 313:
- #line 900 "parser.Y"
--    {FRB->iisGetFileNameCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->iisGetFileNameCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 314:
-@@ -5237,12 +5570,12 @@
- 
-   case 316:
- #line 905 "parser.Y"
--    {FRB->getFitsHeaderCmd(yyvsp[0].integer);;}
-+    {FRB->getFitsHeaderCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 317:
- #line 906 "parser.Y"
--    {FRB->getFitsHeaderKeywordCmd(yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->getFitsHeaderKeywordCmd((yyvsp[(2) - (4)].integer),(yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 319:
-@@ -5257,7 +5590,7 @@
- 
-   case 321:
- #line 911 "parser.Y"
--    {FRB->getFitsSizeCmd((CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getFitsSizeCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (SkyFormat)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 322:
-@@ -5272,18 +5605,18 @@
- 
-   case 324:
- #line 917 "parser.Y"
--    {FRB->getFitsFileNameCmd((FrameBase::FileNameType)yyvsp[0].integer);;}
-+    {FRB->getFitsFileNameCmd((FrameBase::FileNameType)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 325:
- #line 919 "parser.Y"
--    {FRB->getFitsFileNameCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer,
--	    (FrameBase::FileNameType)yyvsp[-3].integer);;}
-+    {FRB->getFitsFileNameCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)), (InternalSystem)(yyvsp[(2) - (4)].integer),
-+	    (FrameBase::FileNameType)(yyvsp[(1) - (4)].integer));;}
-     break;
- 
-   case 326:
- #line 922 "parser.Y"
--    {FRB->getFitsFileNameCmd(yyvsp[0].integer, (FrameBase::FileNameType)yyvsp[-2].integer);;}
-+    {FRB->getFitsFileNameCmd((yyvsp[(3) - (3)].integer), (FrameBase::FileNameType)(yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 327:
-@@ -5293,7 +5626,7 @@
- 
-   case 328:
- #line 926 "parser.Y"
--    {FRB->getFitsObjectNameCmd(yyvsp[0].integer);;}
-+    {FRB->getFitsObjectNameCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 329:
-@@ -5323,7 +5656,7 @@
- 
-   case 334:
- #line 938 "parser.Y"
--    {FRB->getRotateCmd((FrameBase::Precision)yyvsp[0].integer);;}
-+    {FRB->getRotateCmd((FrameBase::Precision)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 335:
-@@ -5343,23 +5676,23 @@
- 
-   case 338:
- #line 947 "parser.Y"
--    {FRB->getWCSZoomCmd((CoordSystem)yyvsp[-1].integer, (FrameBase::Precision)yyvsp[0].integer);;}
-+    {FRB->getWCSZoomCmd((CoordSystem)(yyvsp[(2) - (3)].integer), (FrameBase::Precision)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 339:
- #line 948 "parser.Y"
--    {FRB->getWCSNameCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->getWCSNameCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 340:
- #line 951 "parser.Y"
--    {FRB->getZoomCmd((FrameBase::Precision)yyvsp[0].integer);;}
-+    {FRB->getZoomCmd((FrameBase::Precision)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 341:
- #line 955 "parser.Y"
--    {FRB->gridCmd((CoordSystem)yyvsp[-4].integer, (SkyFrame)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer,
--	     (Grid::GridType)yyvsp[-1].integer, yyvsp[0].str);;}
-+    {FRB->gridCmd((CoordSystem)(yyvsp[(2) - (6)].integer), (SkyFrame)(yyvsp[(3) - (6)].integer), (SkyFormat)(yyvsp[(4) - (6)].integer),
-+	     (Grid::GridType)(yyvsp[(5) - (6)].integer), (yyvsp[(6) - (6)].str));;}
-     break;
- 
-   case 342:
-@@ -5369,12 +5702,12 @@
- 
-   case 343:
- #line 960 "parser.Y"
--    {yyval.integer=Grid::ANALYSIS;;}
-+    {(yyval.integer)=Grid::ANALYSIS;;}
-     break;
- 
-   case 344:
- #line 961 "parser.Y"
--    {yyval.integer=Grid::PUBLICATION;;}
-+    {(yyval.integer)=Grid::PUBLICATION;;}
-     break;
- 
-   case 345:
-@@ -5434,7 +5767,7 @@
- 
-   case 358:
- #line 977 "parser.Y"
--    {FRB->hasSystemCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->hasSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 360:
-@@ -5449,7 +5782,7 @@
- 
-   case 362:
- #line 983 "parser.Y"
--    {FRB->hasFitsExtCmd(yyvsp[0].integer);;}
-+    {FRB->hasFitsExtCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 363:
-@@ -5489,22 +5822,22 @@
- 
-   case 370:
- #line 995 "parser.Y"
--    {FRB->hasWCSCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->hasWCSCmd((CoordSystem)(yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 371:
- #line 996 "parser.Y"
--    {FRB->hasWCSEquCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->hasWCSEquCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 372:
- #line 997 "parser.Y"
--    {FRB->hasWCSLinearCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->hasWCSLinearCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 373:
- #line 1000 "parser.Y"
--    {FR->iisCmd(yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FR->iisCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 374:
-@@ -5514,12 +5847,12 @@
- 
-   case 375:
- #line 1002 "parser.Y"
--    {FR->iisMessageCmd(yyvsp[0].str);;}
-+    {FR->iisMessageCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 378:
- #line 1006 "parser.Y"
--    {FR->iisSetCmd((const char*)yyvsp[-4].ptr,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FR->iisSetCmd((const char*)(yyvsp[(2) - (6)].ptr),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 379:
-@@ -5529,656 +5862,656 @@
- 
-   case 380:
- #line 1010 "parser.Y"
--    {FR->iisWCSCmd(Matrix(yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].real,yyvsp[-3].real),Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
-+    {FR->iisWCSCmd(Matrix((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real),(yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].real),(yyvsp[(7) - (10)].real)),Vector((yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].real)),(yyvsp[(10) - (10)].integer));;}
-     break;
- 
-   case 381:
- #line 1013 "parser.Y"
--    {FRB->iisSetFileNameCmd(yyvsp[0].str);;}
-+    {FRB->iisSetFileNameCmd((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 382:
- #line 1014 "parser.Y"
--    {FRB->iisSetFileNameCmd(yyvsp[-1].str,yyvsp[0].integer);;}
-+    {FRB->iisSetFileNameCmd((yyvsp[(1) - (2)].str),(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 383:
- #line 1018 "parser.Y"
--    {FR->iisSetCursorCmd(Vector(yyvsp[-2].integer,yyvsp[-1].integer),CANVAS);;}
-+    {FR->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),CANVAS);;}
-     break;
- 
-   case 384:
- #line 1020 "parser.Y"
--    {FR->iisSetCursorCmd(Vector(yyvsp[-2].integer,yyvsp[-1].integer),(CoordSystem)yyvsp[0].integer);;}
-+    {FR->iisSetCursorCmd(Vector((yyvsp[(1) - (3)].integer),(yyvsp[(2) - (3)].integer)),(CoordSystem)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 385:
- #line 1021 "parser.Y"
--    {FR->iisCursorModeCmd(yyvsp[0].integer);;}
-+    {FR->iisCursorModeCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 389:
- #line 1029 "parser.Y"
--    {FRB->loadArrAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 390:
- #line 1030 "parser.Y"
--    {FRB->loadArrAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 391:
- #line 1031 "parser.Y"
--    {FRB->loadArrChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadArrChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 392:
- #line 1032 "parser.Y"
--    {FRB->loadArrMMapCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrMMapCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 393:
- #line 1033 "parser.Y"
--    {FRB->loadArrMMapIncrCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrMMapIncrCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 394:
- #line 1035 "parser.Y"
--    {FRB->loadArrShareCmd((FrameBase::ShmType)yyvsp[-1].integer, yyvsp[0].integer, yyvsp[-3].str);;}
-+    {FRB->loadArrShareCmd((FrameBase::ShmType)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].str));;}
-     break;
- 
-   case 395:
- #line 1036 "parser.Y"
--    {FRB->loadArrSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadArrSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 396:
- #line 1037 "parser.Y"
--    {FRB->loadArrSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadArrSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 397:
- #line 1038 "parser.Y"
--    {FRB->loadArrVarCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadArrVarCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 399:
- #line 1042 "parser.Y"
--    {FRB->loadArrRGBCubeAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrRGBCubeAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 400:
- #line 1043 "parser.Y"
--    {FRB->loadArrRGBCubeAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrRGBCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 401:
- #line 1044 "parser.Y"
--    {FRB->loadArrRGBCubeChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadArrRGBCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 402:
- #line 1045 "parser.Y"
--    {FRB->loadArrRGBCubeMMapCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrRGBCubeMMapCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 403:
- #line 1046 "parser.Y"
--    {FRB->loadArrRGBCubeMMapIncrCmd(yyvsp[-1].str);;}
-+    {FRB->loadArrRGBCubeMMapIncrCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 404:
- #line 1048 "parser.Y"
--    {FRB->loadArrRGBCubeShareCmd((FrameBase::ShmType)yyvsp[-1].integer, yyvsp[0].integer, yyvsp[-3].str);;}
-+    {FRB->loadArrRGBCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(1) - (4)].str));;}
-     break;
- 
-   case 405:
- #line 1049 "parser.Y"
--    {FRB->loadArrRGBCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadArrRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 406:
- #line 1050 "parser.Y"
--    {FRB->loadArrRGBCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadArrRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 407:
- #line 1051 "parser.Y"
--    {FRB->loadArrRGBCubeVarCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadArrRGBCubeVarCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 408:
- #line 1054 "parser.Y"
--    {FRB->loadFitsAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadFitsAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 409:
- #line 1055 "parser.Y"
--    {FRB->loadFitsAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadFitsAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 410:
- #line 1056 "parser.Y"
--    {FRB->loadFitsChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadFitsChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 411:
- #line 1058 "parser.Y"
--    {FRB->loadFitsMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 412:
- #line 1060 "parser.Y"
--    {FRB->loadFitsSMMapCmd(yyvsp[-3].str,yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsSMMapCmd((yyvsp[(1) - (4)].str),(yyvsp[(2) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 413:
- #line 1062 "parser.Y"
--    {FRB->loadFitsMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 414:
- #line 1064 "parser.Y"
--    {FRB->loadFitsShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 415:
- #line 1067 "parser.Y"
--    {FRB->loadFitsSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 416:
- #line 1069 "parser.Y"
--    {FRB->loadFitsSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadFitsSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 417:
- #line 1070 "parser.Y"
--    {FRB->loadFitsSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadFitsSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 418:
- #line 1072 "parser.Y"
--    {FRB->loadFitsVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadFitsVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 422:
- #line 1076 "parser.Y"
--    {FRB->loadFitsSlaveCmd(yyvsp[-1].str,(FitsFile*)yyvsp[0].ptr);;}
-+    {FRB->loadFitsSlaveCmd((yyvsp[(2) - (3)].str),(FitsFile*)(yyvsp[(3) - (3)].ptr));;}
-     break;
- 
-   case 423:
- #line 1079 "parser.Y"
--    {FRB->loadDataCubeAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadDataCubeAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 424:
- #line 1080 "parser.Y"
--    {FRB->loadDataCubeAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadDataCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 425:
- #line 1081 "parser.Y"
--    {FRB->loadDataCubeChannelCmd(yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadDataCubeChannelCmd((yyvsp[(3) - (3)].str), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 426:
- #line 1083 "parser.Y"
--    {FRB->loadDataCubeMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadDataCubeMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 427:
- #line 1085 "parser.Y"
--    {FRB->loadDataCubeMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadDataCubeMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 428:
- #line 1087 "parser.Y"
--    {FRB->loadDataCubeShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadDataCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 429:
- #line 1089 "parser.Y"
--    {FRB->loadDataCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadDataCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 430:
- #line 1090 "parser.Y"
--    {FRB->loadDataCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadDataCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 431:
- #line 1092 "parser.Y"
--    {FRB->loadDataCubeVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadDataCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 438:
- #line 1103 "parser.Y"
--    {FRB->loadMosaicImageIRAFAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageIRAFAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 439:
- #line 1104 "parser.Y"
--    {FRB->loadMosaicImageIRAFAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageIRAFAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 440:
- #line 1105 "parser.Y"
--    {FRB->loadMosaicImageIRAFChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageIRAFChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 441:
- #line 1107 "parser.Y"
--    {FRB->loadMosaicImageIRAFMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageIRAFMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 442:
- #line 1109 "parser.Y"
--    {FRB->loadMosaicImageIRAFMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageIRAFMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 443:
- #line 1111 "parser.Y"
--    {FRB->loadMosaicImageIRAFShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
--	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageIRAFShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
-+	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 444:
- #line 1113 "parser.Y"
--    {FRB->loadMosaicImageIRAFSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageIRAFSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 445:
- #line 1114 "parser.Y"
--    {FRB->loadMosaicImageIRAFSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageIRAFSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 446:
- #line 1116 "parser.Y"
--    {FRB->loadMosaicImageIRAFVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageIRAFVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 447:
- #line 1119 "parser.Y"
--    {FRB->loadMosaicIRAFAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicIRAFAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 448:
- #line 1120 "parser.Y"
--    {FRB->loadMosaicIRAFAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicIRAFAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 449:
- #line 1121 "parser.Y"
--    {FRB->loadMosaicIRAFChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadMosaicIRAFChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 450:
- #line 1123 "parser.Y"
--    {FRB->loadMosaicIRAFMMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFMMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 451:
- #line 1125 "parser.Y"
--    {FRB->loadMosaicIRAFSMMapCmd(yyvsp[-3].str,yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFSMMapCmd((yyvsp[(1) - (4)].str),(yyvsp[(2) - (4)].str),(FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 452:
- #line 1127 "parser.Y"
--    {FRB->loadMosaicIRAFMMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFMMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 453:
- #line 1129 "parser.Y"
--    {FRB->loadMosaicIRAFShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
--	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
-+	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 454:
- #line 1132 "parser.Y"
--    {FRB->loadMosaicIRAFSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer,
--	    yyvsp[-5].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer),
-+	    (yyvsp[(1) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 455:
- #line 1134 "parser.Y"
--    {FRB->loadMosaicIRAFSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicIRAFSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 456:
- #line 1135 "parser.Y"
--    {FRB->loadMosaicIRAFSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicIRAFSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 457:
- #line 1137 "parser.Y"
--    {FRB->loadMosaicIRAFVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicIRAFVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 458:
- #line 1141 "parser.Y"
--    {FRB->loadMosaicImageWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 459:
- #line 1143 "parser.Y"
--    {FRB->loadMosaicImageWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 460:
- #line 1145 "parser.Y"
--    {FRB->loadMosaicImageWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 461:
- #line 1147 "parser.Y"
--    {FRB->loadMosaicImageWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 462:
- #line 1150 "parser.Y"
--    {FRB->loadMosaicImageWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 463:
- #line 1153 "parser.Y"
--    {FRB->loadMosaicImageWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
--	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
-+	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 464:
- #line 1156 "parser.Y"
--    {FRB->loadMosaicImageWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 465:
- #line 1158 "parser.Y"
--    {FRB->loadMosaicImageWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 466:
- #line 1160 "parser.Y"
--    {FRB->loadMosaicImageWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 467:
- #line 1165 "parser.Y"
--    {FRB->loadMosaicImageNextWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageNextWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 468:
- #line 1167 "parser.Y"
--    {FRB->loadMosaicImageNextWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageNextWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 469:
- #line 1169 "parser.Y"
--    {FRB->loadMosaicImageNextWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageNextWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str),(yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 470:
- #line 1171 "parser.Y"
--    {FRB->loadMosaicImageNextWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageNextWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 471:
- #line 1174 "parser.Y"
--    {FRB->loadMosaicImageNextWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageNextWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 472:
- #line 1177 "parser.Y"
--    {FRB->loadMosaicImageNextWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
--	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageNextWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
-+	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 473:
- #line 1180 "parser.Y"
--    {FRB->loadMosaicImageNextWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageNextWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 474:
- #line 1182 "parser.Y"
--    {FRB->loadMosaicImageNextWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageNextWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 475:
- #line 1184 "parser.Y"
--    {FRB->loadMosaicImageNextWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageNextWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 476:
- #line 1189 "parser.Y"
--    {FRB->loadMosaicWCSAllocCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicWCSAllocCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 477:
- #line 1191 "parser.Y"
--    {FRB->loadMosaicWCSAllocGZCmd((CoordSystem)yyvsp[-2].integer, yyvsp[-1].str);;}
-+    {FRB->loadMosaicWCSAllocGZCmd((CoordSystem)(yyvsp[(1) - (3)].integer), (yyvsp[(2) - (3)].str));;}
-     break;
- 
-   case 478:
- #line 1193 "parser.Y"
--    {FRB->loadMosaicWCSChannelCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadMosaicWCSChannelCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].str),(yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 479:
- #line 1195 "parser.Y"
--    {FRB->loadMosaicWCSMMapCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSMMapCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 480:
- #line 1198 "parser.Y"
--    {FRB->loadMosaicWCSSMMapCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-3].str, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSSMMapCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 481:
- #line 1201 "parser.Y"
--    {FRB->loadMosaicWCSMMapIncrCmd((CoordSystem)yyvsp[-3].integer, yyvsp[-2].str,
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSMMapIncrCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(2) - (4)].str),
-+	    (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 482:
- #line 1204 "parser.Y"
--    {FRB->loadMosaicWCSShareCmd((CoordSystem)yyvsp[-5].integer, 
--	    (FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSShareCmd((CoordSystem)(yyvsp[(1) - (6)].integer), 
-+	    (FrameBase::ShmType)(yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(2) - (6)].str), (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 483:
- #line 1207 "parser.Y"
--    {FRB->loadMosaicWCSSShareCmd((CoordSystem)yyvsp[-6].integer, 
--	    (FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSSShareCmd((CoordSystem)(yyvsp[(1) - (7)].integer), 
-+	    (FrameBase::ShmType)(yyvsp[(4) - (7)].integer), (yyvsp[(5) - (7)].integer), (yyvsp[(6) - (7)].integer), (yyvsp[(2) - (7)].str), (FrameBase::LoadMethod)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 484:
- #line 1210 "parser.Y"
--    {FRB->loadMosaicWCSSocketCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicWCSSocketCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 485:
- #line 1212 "parser.Y"
--    {FRB->loadMosaicWCSSocketGZCmd((CoordSystem)yyvsp[-3].integer, yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicWCSSocketGZCmd((CoordSystem)(yyvsp[(1) - (4)].integer), (yyvsp[(4) - (4)].integer), (yyvsp[(2) - (4)].str));;}
-     break;
- 
-   case 486:
- #line 1214 "parser.Y"
--    {FRB->loadMosaicWCSVarCmd((CoordSystem)yyvsp[-4].integer, yyvsp[-1].str, yyvsp[-3].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicWCSVarCmd((CoordSystem)(yyvsp[(1) - (5)].integer), (yyvsp[(4) - (5)].str), (yyvsp[(2) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 487:
- #line 1219 "parser.Y"
--    {FRB->loadMosaicImageWFPC2AllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageWFPC2AllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 488:
- #line 1220 "parser.Y"
--    {FRB->loadMosaicImageWFPC2AllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadMosaicImageWFPC2AllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 489:
- #line 1221 "parser.Y"
--    {FRB->loadMosaicImageWFPC2ChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWFPC2ChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 490:
- #line 1223 "parser.Y"
--    {FRB->loadMosaicImageWFPC2MMapCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWFPC2MMapCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 491:
- #line 1225 "parser.Y"
--    {FRB->loadMosaicImageWFPC2MMapIncrCmd(yyvsp[-2].str,(FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWFPC2MMapIncrCmd((yyvsp[(1) - (3)].str),(FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 492:
- #line 1227 "parser.Y"
--    {FRB->loadMosaicImageWFPC2ShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer,
--	    yyvsp[-4].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWFPC2ShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer),
-+	    (yyvsp[(1) - (5)].str), (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 493:
- #line 1229 "parser.Y"
--    {FRB->loadMosaicImageWFPC2SocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWFPC2SocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 494:
- #line 1230 "parser.Y"
--    {FRB->loadMosaicImageWFPC2SocketGZCmd(yyvsp[0].integer,yyvsp[-2].str);;}
-+    {FRB->loadMosaicImageWFPC2SocketGZCmd((yyvsp[(3) - (3)].integer),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 495:
- #line 1232 "parser.Y"
--    {FRB->loadMosaicImageWFPC2VarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadMosaicImageWFPC2VarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 498:
- #line 1238 "parser.Y"
--    {FRB->loadRGBCubeAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadRGBCubeAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 499:
- #line 1239 "parser.Y"
--    {FRB->loadRGBCubeAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadRGBCubeAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 500:
- #line 1240 "parser.Y"
--    {FRB->loadRGBCubeChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadRGBCubeChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 501:
- #line 1242 "parser.Y"
--    {FRB->loadRGBCubeMMapCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeMMapCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 502:
- #line 1244 "parser.Y"
--    {FRB->loadRGBCubeSMMapCmd(yyvsp[-3].str, yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeSMMapCmd((yyvsp[(1) - (4)].str), (yyvsp[(2) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 503:
- #line 1246 "parser.Y"
--    {FRB->loadRGBCubeMMapIncrCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeMMapIncrCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 504:
- #line 1248 "parser.Y"
--    {FRB->loadRGBCubeShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 505:
- #line 1251 "parser.Y"
--    {FRB->loadRGBCubeSShareCmd((FrameBase::ShmType)yyvsp[-3].integer, yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-5].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeSShareCmd((FrameBase::ShmType)(yyvsp[(3) - (6)].integer), (yyvsp[(4) - (6)].integer), (yyvsp[(5) - (6)].integer), (yyvsp[(1) - (6)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 506:
- #line 1253 "parser.Y"
--    {FRB->loadRGBCubeSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadRGBCubeSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 507:
- #line 1254 "parser.Y"
--    {FRB->loadRGBCubeSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadRGBCubeSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 508:
- #line 1256 "parser.Y"
--    {FRB->loadRGBCubeVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBCubeVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 509:
- #line 1258 "parser.Y"
--    {FRB->loadRGBCubeSlaveCmd(yyvsp[-1].str,(FitsFile*)yyvsp[0].ptr);;}
-+    {FRB->loadRGBCubeSlaveCmd((yyvsp[(2) - (3)].str),(FitsFile*)(yyvsp[(3) - (3)].ptr));;}
-     break;
- 
-   case 510:
- #line 1261 "parser.Y"
--    {FRB->loadRGBImageAllocCmd(yyvsp[-1].str);;}
-+    {FRB->loadRGBImageAllocCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 511:
- #line 1262 "parser.Y"
--    {FRB->loadRGBImageAllocGZCmd(yyvsp[-1].str);;}
-+    {FRB->loadRGBImageAllocGZCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 512:
- #line 1263 "parser.Y"
--    {FRB->loadRGBImageChannelCmd(yyvsp[0].str,yyvsp[-2].str);;}
-+    {FRB->loadRGBImageChannelCmd((yyvsp[(3) - (3)].str),(yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 513:
- #line 1265 "parser.Y"
--    {FRB->loadRGBImageMMapCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBImageMMapCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 514:
- #line 1267 "parser.Y"
--    {FRB->loadRGBImageMMapIncrCmd(yyvsp[-2].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBImageMMapIncrCmd((yyvsp[(1) - (3)].str), (FrameBase::LoadMethod)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 515:
- #line 1269 "parser.Y"
--    {FRB->loadRGBImageShareCmd((FrameBase::ShmType)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[-4].str, 
--	    (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBImageShareCmd((FrameBase::ShmType)(yyvsp[(3) - (5)].integer), (yyvsp[(4) - (5)].integer), (yyvsp[(1) - (5)].str), 
-+	    (FrameBase::LoadMethod)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 516:
- #line 1271 "parser.Y"
--    {FRB->loadRGBImageSocketCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadRGBImageSocketCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 517:
- #line 1272 "parser.Y"
--    {FRB->loadRGBImageSocketGZCmd(yyvsp[0].integer, yyvsp[-2].str);;}
-+    {FRB->loadRGBImageSocketGZCmd((yyvsp[(3) - (3)].integer), (yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 518:
- #line 1274 "parser.Y"
--    {FRB->loadRGBImageVarCmd(yyvsp[-1].str, yyvsp[-3].str, (FrameBase::LoadMethod)yyvsp[0].integer);;}
-+    {FRB->loadRGBImageVarCmd((yyvsp[(3) - (4)].str), (yyvsp[(1) - (4)].str), (FrameBase::LoadMethod)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 519:
- #line 1277 "parser.Y"
--    {FRB->loadIncrDataCmd(yyvsp[-4].integer,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->loadIncrDataCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 520:
- #line 1278 "parser.Y"
--    {FRB->loadIncrMinMaxCmd(yyvsp[-4].integer,yyvsp[-3].integer,yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->loadIncrMinMaxCmd((yyvsp[(2) - (6)].integer),(yyvsp[(3) - (6)].integer),(yyvsp[(4) - (6)].integer),(yyvsp[(5) - (6)].integer),(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 521:
-@@ -6188,22 +6521,22 @@
- 
-   case 522:
- #line 1282 "parser.Y"
--    {FRB->magnifierCmd(yyvsp[0].integer);;}
-+    {FRB->magnifierCmd((yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 523:
- #line 1283 "parser.Y"
--    {FRB->magnifierGraphicsCmd(yyvsp[0].integer);;}
-+    {FRB->magnifierGraphicsCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 524:
- #line 1284 "parser.Y"
--    {FRB->magnifierCursorCmd(yyvsp[0].integer);;}
-+    {FRB->magnifierCursorCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 525:
- #line 1285 "parser.Y"
--    {FRB->magnifierCmd(yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->magnifierCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 526:
-@@ -6213,17 +6546,17 @@
- 
-   case 527:
- #line 1287 "parser.Y"
--    {FRB->updateMagnifierCmd(Vector(yyvsp[-1].real, yyvsp[0].real));;}
-+    {FRB->updateMagnifierCmd(Vector((yyvsp[(2) - (3)].real), (yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 528:
- #line 1288 "parser.Y"
--    {FRB->magnifierZoomCmd(yyvsp[0].real);;}
-+    {FRB->magnifierZoomCmd((yyvsp[(2) - (2)].real));;}
-     break;
- 
-   case 529:
- #line 1291 "parser.Y"
--    {FRB->markerColorCmd(yyvsp[0].str);;}
-+    {FRB->markerColorCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 530:
-@@ -6233,12 +6566,12 @@
- 
-   case 531:
- #line 1294 "parser.Y"
--    {FRB->markerCommandCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].str);;}
-+    {FRB->markerCommandCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 532:
- #line 1296 "parser.Y"
--    {FRB->markerCommandVarCmd((FrameBase::MarkerFormat)yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->markerCommandVarCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (4)].integer),(yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 533:
-@@ -6263,405 +6596,405 @@
- 
-   case 539:
- #line 1303 "parser.Y"
--    {FRB->markerFontCmd(yyvsp[0].str);;}
-+    {FRB->markerFontCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 540:
- #line 1305 "parser.Y"
--    {FRB->markerAngleCmd(yyvsp[-2].integer,yyvsp[0].real);;}
-+    {FRB->markerAngleCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].real));;}
-     break;
- 
-   case 541:
- #line 1307 "parser.Y"
--    {FRB->markerAngleCmd(yyvsp[-4].integer,yyvsp[-2].real,(CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerAngleCmd((yyvsp[(1) - (5)].integer),(yyvsp[(3) - (5)].real),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 542:
- #line 1311 "parser.Y"
--    {FRB->markerAnnulusRadiusCmd(yyvsp[-7].integer, 
--	    yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerAnnulusRadiusCmd((yyvsp[(1) - (8)].integer), 
-+	    (yyvsp[(4) - (8)].real), (yyvsp[(5) - (8)].real), (yyvsp[(6) - (8)].integer),
-+	    (CoordSystem)(yyvsp[(7) - (8)].integer), (SkyFormat)(yyvsp[(8) - (8)].integer));;}
-     break;
- 
-   case 543:
- #line 1316 "parser.Y"
--    {FRB->markerAnnulusRadiusCmd(yyvsp[-5].integer,
--	    yyvsp[-2].str,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
-+	    (yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 544:
- #line 1321 "parser.Y"
--    {FRB->markerBoxAnnulusRadiusCmd(yyvsp[-8].integer, 
--	    Vector(yyvsp[-5].real, yyvsp[-4].real), Vector(yyvsp[-3].real, yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), 
-+	    Vector((yyvsp[(4) - (9)].real), (yyvsp[(5) - (9)].real)), Vector((yyvsp[(6) - (9)].real), (yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer),
-+	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 545:
- #line 1326 "parser.Y"
--    {FRB->markerBoxAnnulusRadiusCmd(yyvsp[-5].integer,
--	    yyvsp[-2].str,(CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerBoxAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
-+	    (yyvsp[(4) - (6)].str),(CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 546:
- #line 1331 "parser.Y"
--    {FRB->markerBoxRadiusCmd(yyvsp[-6].integer,
--	    Vector(yyvsp[-3].real,yyvsp[-2].real), 
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerBoxRadiusCmd((yyvsp[(1) - (7)].integer),
-+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)), 
-+	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 547:
- #line 1338 "parser.Y"
--    {FRB->markerBpandaEditCmd(yyvsp[-11].integer, 
--	    yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].integer,
--	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerBpandaEditCmd((yyvsp[(1) - (12)].integer), 
-+	    (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
-+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
-+	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
-     break;
- 
-   case 548:
- #line 1346 "parser.Y"
--    {FRB->markerBpandaEditCmd(yyvsp[-8].integer, 
--	    yyvsp[-5].str, yyvsp[-4].str, 
--	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerBpandaEditCmd((yyvsp[(1) - (9)].integer), 
-+	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
-+	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
-+	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 549:
- #line 1351 "parser.Y"
--    {FRB->markerCallBackCmd(yyvsp[-4].integer,(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->markerCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 550:
- #line 1353 "parser.Y"
--    {FRB->markerCircleRadiusCmd(yyvsp[-5].integer, yyvsp[-2].real, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerCircleRadiusCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 551:
- #line 1354 "parser.Y"
--    {FRB->markerColorCmd(yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->markerColorCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 552:
- #line 1356 "parser.Y"
--    {FRB->markerCompassArrowCmd(yyvsp[-4].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerCompassArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 553:
- #line 1358 "parser.Y"
--    {FRB->markerCompassLabelCmd(yyvsp[-4].integer,yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->markerCompassLabelCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 554:
- #line 1360 "parser.Y"
--    {FRB->markerCompassRadiusCmd(yyvsp[-5].integer,yyvsp[-2].real,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerCompassRadiusCmd((yyvsp[(1) - (6)].integer),(yyvsp[(4) - (6)].real),(CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 555:
- #line 1362 "parser.Y"
--    {FRB->markerCompassSystemCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerCompassSystemCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 556:
- #line 1364 "parser.Y"
--    {FRB->markerAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 557:
- #line 1366 "parser.Y"
--    {FRB->markerBoxAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerBoxAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 558:
- #line 1368 "parser.Y"
--    {FRB->markerBpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerBpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 559:
- #line 1370 "parser.Y"
--    {FRB->markerBpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerBpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 560:
- #line 1372 "parser.Y"
--    {FRB->markerEllipseAnnulusCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerEllipseAnnulusCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 561:
- #line 1374 "parser.Y"
--    {FRB->markerEpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerEpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 562:
- #line 1376 "parser.Y"
--    {FRB->markerEpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerEpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 563:
- #line 1378 "parser.Y"
--    {FRB->markerCpandaCreateAnglesCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerCpandaCreateAnglesCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 564:
- #line 1380 "parser.Y"
--    {FRB->markerCpandaCreateRadiusCmd(yyvsp[-5].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerCpandaCreateRadiusCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)));;}
-     break;
- 
-   case 565:
- #line 1382 "parser.Y"
--    {FRB->markerPolygonCreateVertexCmd(yyvsp[-6].integer,yyvsp[-2].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerPolygonCreateVertexCmd((yyvsp[(1) - (7)].integer),(yyvsp[(5) - (7)].integer),Vector((yyvsp[(6) - (7)].real),(yyvsp[(7) - (7)].real)));;}
-     break;
- 
-   case 566:
- #line 1383 "parser.Y"
--    {FRB->markerDeleteCmd(yyvsp[-1].integer);;}
-+    {FRB->markerDeleteCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 567:
- #line 1385 "parser.Y"
--    {FRB->markerAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 568:
- #line 1387 "parser.Y"
--    {FRB->markerBoxAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerBoxAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 569:
- #line 1388 "parser.Y"
--    {FRB->markerBpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerBpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 570:
- #line 1390 "parser.Y"
--    {FRB->markerEllipseAnnulusDeleteRadiusCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerEllipseAnnulusDeleteRadiusCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 571:
- #line 1392 "parser.Y"
--    {FRB->markerDeleteCallBackCmd(yyvsp[-4].integer,(CallBack::Type)yyvsp[-1].integer,yyvsp[0].str);;}
-+    {FRB->markerDeleteCallBackCmd((yyvsp[(1) - (5)].integer),(CallBack::Type)(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 572:
- #line 1393 "parser.Y"
--    {FRB->markerEpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerEpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 573:
- #line 1394 "parser.Y"
--    {FRB->markerCpandaDeleteCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerCpandaDeleteCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 574:
- #line 1396 "parser.Y"
--    {FRB->markerPolygonDeleteVertexCmd(yyvsp[-4].integer,yyvsp[0].integer);;}
-+    {FRB->markerPolygonDeleteVertexCmd((yyvsp[(1) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 575:
- #line 1397 "parser.Y"
--    {FRB->markerDeleteTagCmd(yyvsp[-2].integer);;}
-+    {FRB->markerDeleteTagCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 576:
- #line 1398 "parser.Y"
--    {FRB->markerDeleteTagCmd(yyvsp[-3].integer,yyvsp[0].str);;}
-+    {FRB->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 577:
- #line 1399 "parser.Y"
--    {FRB->markerDeleteTagCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerDeleteTagCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 578:
- #line 1400 "parser.Y"
--    {FRB->markerEditBeginCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerEditBeginCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 579:
- #line 1404 "parser.Y"
--    {FRB->markerEllipseRadiusCmd(yyvsp[-6].integer, 
--	    Vector(yyvsp[-3].real, yyvsp[-2].real),
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerEllipseRadiusCmd((yyvsp[(1) - (7)].integer), 
-+	    Vector((yyvsp[(4) - (7)].real), (yyvsp[(5) - (7)].real)),
-+	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 580:
- #line 1410 "parser.Y"
--    {FRB->markerEllipseAnnulusRadiusCmd(yyvsp[-8].integer, 
--	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (9)].integer), 
-+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(5) - (9)].real)/(yyvsp[(4) - (9)].real)), (yyvsp[(7) - (9)].integer),
-+	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 581:
- #line 1415 "parser.Y"
--    {FRB->markerEllipseAnnulusRadiusCmd(yyvsp[-5].integer,
--	    yyvsp[-2].str, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerEllipseAnnulusRadiusCmd((yyvsp[(1) - (6)].integer),
-+	    (yyvsp[(4) - (6)].str), (CoordSystem)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 582:
- #line 1421 "parser.Y"
--    {FRB->markerEpandaEditCmd(yyvsp[-11].integer, 
--	    yyvsp[-8].real, yyvsp[-7].real, yyvsp[-6].integer,
--	    Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-4].real/yyvsp[-5].real), yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerEpandaEditCmd((yyvsp[(1) - (12)].integer), 
-+	    (yyvsp[(4) - (12)].real), (yyvsp[(5) - (12)].real), (yyvsp[(6) - (12)].integer),
-+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)), Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(8) - (12)].real)/(yyvsp[(7) - (12)].real)), (yyvsp[(10) - (12)].integer),
-+	    (CoordSystem)(yyvsp[(11) - (12)].integer), (SkyFrame)(yyvsp[(12) - (12)].integer));;}
-     break;
- 
-   case 583:
- #line 1429 "parser.Y"
--    {FRB->markerEpandaEditCmd(yyvsp[-8].integer, 
--	    yyvsp[-5].str, yyvsp[-4].str, 
--	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerEpandaEditCmd((yyvsp[(1) - (9)].integer), 
-+	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str), 
-+	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
-+	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 584:
- #line 1433 "parser.Y"
--    {FRB->markerFontCmd(yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->markerFontCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 585:
- #line 1434 "parser.Y"
--    {FRB->markerHighliteCmd(yyvsp[-1].integer);;}
-+    {FRB->markerHighliteCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 586:
- #line 1435 "parser.Y"
--    {FRB->markerHighliteOnlyCmd(yyvsp[-2].integer);;}
-+    {FRB->markerHighliteOnlyCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 587:
- #line 1436 "parser.Y"
--    {FRB->markerLineArrowCmd(yyvsp[-4].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerLineArrowCmd((yyvsp[(1) - (5)].integer),(yyvsp[(4) - (5)].integer),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 588:
- #line 1438 "parser.Y"
--    {FRB->markerLineCmd(yyvsp[-6].integer, Vector(yyvsp[-1].vector), Vector(yyvsp[0].vector), 
--	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer);;}
-+    {FRB->markerLineCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)), 
-+	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
-     break;
- 
-   case 589:
- #line 1441 "parser.Y"
--    {FRB->markerMoveCmd(yyvsp[-3].integer, Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerMoveCmd((yyvsp[(1) - (4)].integer), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 590:
- #line 1442 "parser.Y"
--    {FRB->markerFrontCmd(yyvsp[-2].integer);;}
-+    {FRB->markerFrontCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 591:
- #line 1443 "parser.Y"
--    {FRB->markerBackCmd(yyvsp[-2].integer);;}
-+    {FRB->markerBackCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 592:
- #line 1445 "parser.Y"
--    {FRB->markerMoveToCmd(yyvsp[-5].integer, Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].integer), Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)), (InternalSystem)(yyvsp[(4) - (6)].integer));;}
-     break;
- 
-   case 593:
- #line 1447 "parser.Y"
--    {FRB->markerMoveToCmd(yyvsp[-5].integer,Vector(yyvsp[0].vector),(CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].integer),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
-     break;
- 
-   case 594:
- #line 1452 "parser.Y"
--    {FRB->markerCpandaEditCmd(yyvsp[-10].integer, 
--	    yyvsp[-7].real, yyvsp[-6].real, yyvsp[-5].integer, 
--	    yyvsp[-4].real, yyvsp[-3].real, yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerCpandaEditCmd((yyvsp[(1) - (11)].integer), 
-+	    (yyvsp[(4) - (11)].real), (yyvsp[(5) - (11)].real), (yyvsp[(6) - (11)].integer), 
-+	    (yyvsp[(7) - (11)].real), (yyvsp[(8) - (11)].real), (yyvsp[(9) - (11)].integer),
-+	    (CoordSystem)(yyvsp[(10) - (11)].integer), (SkyFrame)(yyvsp[(11) - (11)].integer));;}
-     break;
- 
-   case 595:
- #line 1460 "parser.Y"
--    {FRB->markerCpandaEditCmd(yyvsp[-8].integer, 
--	    yyvsp[-5].str, yyvsp[-4].str,
--	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerCpandaEditCmd((yyvsp[(1) - (9)].integer), 
-+	    (yyvsp[(4) - (9)].str), (yyvsp[(5) - (9)].str),
-+	    (CoordSystem)(yyvsp[(6) - (9)].integer), (SkyFrame)(yyvsp[(7) - (9)].integer),
-+	    (CoordSystem)(yyvsp[(8) - (9)].integer), (SkyFormat)(yyvsp[(9) - (9)].integer));;}
-     break;
- 
-   case 596:
- #line 1465 "parser.Y"
--    {FRB->markerPolygonResetCmd(yyvsp[-6].integer, Vector(yyvsp[-3].real,yyvsp[-2].real),
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerPolygonResetCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-+	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 597:
- #line 1469 "parser.Y"
--    {FRB->markerProjectionCmd(yyvsp[-9].integer, Vector(yyvsp[-5].vector), Vector(yyvsp[-4].vector),
--	    (CoordSystem)yyvsp[-7].integer, (SkyFrame)yyvsp[-6].integer, yyvsp[-3].real, yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerProjectionCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(5) - (10)].vector)), Vector((yyvsp[(6) - (10)].vector)),
-+	    (CoordSystem)(yyvsp[(3) - (10)].integer), (SkyFrame)(yyvsp[(4) - (10)].integer), (yyvsp[(7) - (10)].real), (yyvsp[(8) - (10)].integer),
-+	    (CoordSystem)(yyvsp[(9) - (10)].integer), (SkyFormat)(yyvsp[(10) - (10)].integer));;}
-     break;
- 
-   case 598:
- #line 1473 "parser.Y"
--    {FRB->markerProjectionSystemCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerProjectionSystemCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 599:
- #line 1475 "parser.Y"
--    {FRB->markerPropertyCmd(yyvsp[-3].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerPropertyCmd((yyvsp[(1) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 600:
- #line 1476 "parser.Y"
--    {FRB->markerRotateBeginCmd(yyvsp[-2].integer);;}
-+    {FRB->markerRotateBeginCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 601:
- #line 1478 "parser.Y"
--    {FRB->markerRulerPointCmd(yyvsp[-6].integer, Vector(yyvsp[-1].vector), Vector(yyvsp[0].vector),
--	    (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer);;}
-+    {FRB->markerRulerPointCmd((yyvsp[(1) - (7)].integer), Vector((yyvsp[(6) - (7)].vector)), Vector((yyvsp[(7) - (7)].vector)),
-+	    (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer));;}
-     break;
- 
-   case 602:
- #line 1481 "parser.Y"
--    {FRB->markerRulerSystemCmd(yyvsp[-6].integer, (CoordSystem)yyvsp[-3].integer, (SkyFrame)yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->markerRulerSystemCmd((yyvsp[(1) - (7)].integer), (CoordSystem)(yyvsp[(4) - (7)].integer), (SkyFrame)(yyvsp[(5) - (7)].integer),
-+	    (CoordSystem)(yyvsp[(6) - (7)].integer), (SkyFormat)(yyvsp[(7) - (7)].integer));;}
-     break;
- 
-   case 603:
- #line 1483 "parser.Y"
--    {FRB->markerSelectCmd(yyvsp[-1].integer);;}
-+    {FRB->markerSelectCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 604:
- #line 1484 "parser.Y"
--    {FRB->markerSelectOnlyCmd(yyvsp[-2].integer);;}
-+    {FRB->markerSelectOnlyCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 605:
- #line 1485 "parser.Y"
--    {FRB->markerTagCmd(yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->markerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 606:
- #line 1486 "parser.Y"
--    {FRB->markerTextCmd(yyvsp[-2].integer,yyvsp[0].str);;}
-+    {FRB->markerTextCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 607:
- #line 1487 "parser.Y"
--    {FRB->markerUnhighliteCmd(yyvsp[-1].integer);;}
-+    {FRB->markerUnhighliteCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 608:
- #line 1488 "parser.Y"
--    {FRB->markerUnselectCmd(yyvsp[-1].integer);;}
-+    {FRB->markerUnselectCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 609:
- #line 1489 "parser.Y"
--    {FRB->markerVectorArrowCmd(yyvsp[-3].integer,yyvsp[0].integer);;}
-+    {FRB->markerVectorArrowCmd((yyvsp[(1) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 610:
- #line 1492 "parser.Y"
--    {FRB->markerVectorCmd(yyvsp[-9].integer, Vector(yyvsp[-4].vector), (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer,
--	    yyvsp[-1].real, (CoordSystem)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer, yyvsp[0].real);;}
-+    {FRB->markerVectorCmd((yyvsp[(1) - (10)].integer), Vector((yyvsp[(6) - (10)].vector)), (CoordSystem)(yyvsp[(4) - (10)].integer), (SkyFrame)(yyvsp[(5) - (10)].integer),
-+	    (yyvsp[(9) - (10)].real), (CoordSystem)(yyvsp[(7) - (10)].integer), (SkyFormat)(yyvsp[(8) - (10)].integer), (yyvsp[(10) - (10)].real));;}
-     break;
- 
-   case 611:
- #line 1494 "parser.Y"
--    {FRB->markerLineWidthCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {FRB->markerLineWidthCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 612:
-@@ -6671,37 +7004,37 @@
- 
-   case 613:
- #line 1498 "parser.Y"
--    {FRB->markerHighliteOnlyCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerHighliteOnlyCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 614:
- #line 1500 "parser.Y"
--    {FRB->markerHighliteToggleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerHighliteToggleCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 618:
- #line 1505 "parser.Y"
--    {FRB->markerPreserveCmd(yyvsp[0].integer);;}
-+    {FRB->markerPreserveCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 619:
- #line 1506 "parser.Y"
--    {FRB->markerPropertyCmd(yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerPropertyCmd((yyvsp[(2) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 620:
- #line 1508 "parser.Y"
--    {FRB->markerPropertyCmd(yyvsp[-3].integer,yyvsp[-2].integer,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerPropertyCmd((yyvsp[(2) - (5)].integer),(yyvsp[(3) - (5)].integer),Vector((yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)));;}
-     break;
- 
-   case 621:
- #line 1510 "parser.Y"
--    {FRB->markerRotateBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerRotateBeginCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 622:
- #line 1512 "parser.Y"
--    {FRB->markerRotateMotionCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
-+    {FRB->markerRotateMotionCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real)),(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 623:
-@@ -6711,108 +7044,108 @@
- 
-   case 624:
- #line 1515 "parser.Y"
--    {FRB->markerSaveCmd(yyvsp[-6].str, (FrameBase::MarkerFormat)yyvsp[-5].integer,
--	    (CoordSystem)yyvsp[-4].integer, (SkyFrame)yyvsp[-3].integer, (SkyFormat)yyvsp[-2].integer, yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->markerSaveCmd((yyvsp[(2) - (8)].str), (FrameBase::MarkerFormat)(yyvsp[(3) - (8)].integer),
-+	    (CoordSystem)(yyvsp[(4) - (8)].integer), (SkyFrame)(yyvsp[(5) - (8)].integer), (SkyFormat)(yyvsp[(6) - (8)].integer), (yyvsp[(7) - (8)].integer), (yyvsp[(8) - (8)].integer));;}
-     break;
- 
-   case 625:
- #line 1517 "parser.Y"
--    {FRB->markerSaveTemplateCmd(yyvsp[0].str);;}
-+    {FRB->markerSaveTemplateCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 627:
- #line 1520 "parser.Y"
--    {FRB->markerShowCmd(yyvsp[0].integer);;}
-+    {FRB->markerShowCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 628:
- #line 1522 "parser.Y"
--    {FRB->markerColorCmd(yyvsp[-2].str,yyvsp[0].str);;}
-+    {FRB->markerColorCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 629:
- #line 1523 "parser.Y"
--    {FRB->markerCopyCmd(yyvsp[-1].str);;}
-+    {FRB->markerCopyCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 630:
- #line 1524 "parser.Y"
--    {FRB->markerDeleteCmd(yyvsp[-1].str);;}
-+    {FRB->markerDeleteCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 631:
- #line 1525 "parser.Y"
--    {FRB->markerCutCmd(yyvsp[-1].str);;}
-+    {FRB->markerCutCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 632:
- #line 1526 "parser.Y"
--    {FRB->markerFontCmd(yyvsp[-2].str,yyvsp[0].str);;}
-+    {FRB->markerFontCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 633:
- #line 1527 "parser.Y"
--    {FRB->markerHighliteCmd(yyvsp[-1].str);;}
-+    {FRB->markerHighliteCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 634:
- #line 1528 "parser.Y"
--    {FRB->markerHighliteOnlyCmd(yyvsp[-2].str);;}
-+    {FRB->markerHighliteOnlyCmd((yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 635:
- #line 1529 "parser.Y"
--    {FRB->markerMoveCmd(yyvsp[-3].str,Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerMoveCmd((yyvsp[(1) - (4)].str),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 636:
- #line 1530 "parser.Y"
--    {FRB->markerFrontCmd(yyvsp[-2].str);;}
-+    {FRB->markerFrontCmd((yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 637:
- #line 1531 "parser.Y"
--    {FRB->markerBackCmd(yyvsp[-2].str);;}
-+    {FRB->markerBackCmd((yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 638:
- #line 1533 "parser.Y"
--    {FRB->markerMoveToCmd(yyvsp[-5].str,Vector(yyvsp[0].vector),(CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->markerMoveToCmd((yyvsp[(1) - (6)].str),Vector((yyvsp[(6) - (6)].vector)),(CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
-     break;
- 
-   case 639:
- #line 1535 "parser.Y"
--    {FRB->markerPropertyCmd(yyvsp[-3].str,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerPropertyCmd((yyvsp[(1) - (4)].str),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 640:
- #line 1536 "parser.Y"
--    {FRB->markerSelectCmd(yyvsp[-1].str);;}
-+    {FRB->markerSelectCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 641:
- #line 1537 "parser.Y"
--    {FRB->markerSelectOnlyCmd(yyvsp[-2].str);;}
-+    {FRB->markerSelectOnlyCmd((yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 642:
- #line 1538 "parser.Y"
--    {FRB->markerUnhighliteCmd(yyvsp[-1].str);;}
-+    {FRB->markerUnhighliteCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 643:
- #line 1539 "parser.Y"
--    {FRB->markerUnselectCmd(yyvsp[-1].str);;}
-+    {FRB->markerUnselectCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 644:
- #line 1541 "parser.Y"
--    {FRB->markerTagEditCmd(yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->markerTagEditCmd((yyvsp[(3) - (4)].str),(yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 645:
- #line 1542 "parser.Y"
--    {FRB->markerTagDeleteCmd(yyvsp[0].str);;}
-+    {FRB->markerTagDeleteCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 646:
-@@ -6822,12 +7155,12 @@
- 
-   case 647:
- #line 1544 "parser.Y"
--    {FRB->markerTagCmd(yyvsp[0].str);;}
-+    {FRB->markerTagCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 648:
- #line 1545 "parser.Y"
--    {FRB->markerTagUpdateCmd(yyvsp[0].str);;}
-+    {FRB->markerTagUpdateCmd((yyvsp[(3) - (3)].str));;}
-     break;
- 
-   case 649:
-@@ -6837,7 +7170,7 @@
- 
-   case 650:
- #line 1549 "parser.Y"
--    {FRB->markerPasteCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerPasteCmd((CoordSystem)(yyvsp[(2) - (3)].integer),(SkyFrame)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 651:
-@@ -6857,197 +7190,197 @@
- 
-   case 654:
- #line 1553 "parser.Y"
--    {FRB->markerLineWidthCmd(yyvsp[0].integer);;}
-+    {FRB->markerLineWidthCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 655:
- #line 1556 "parser.Y"
--    {yyval.integer = CallBack::SELECTCB;;}
-+    {(yyval.integer) = CallBack::SELECTCB;;}
-     break;
- 
-   case 656:
- #line 1557 "parser.Y"
--    {yyval.integer = CallBack::UNSELECTCB;;}
-+    {(yyval.integer) = CallBack::UNSELECTCB;;}
-     break;
- 
-   case 657:
- #line 1558 "parser.Y"
--    {yyval.integer = CallBack::HIGHLITECB;;}
-+    {(yyval.integer) = CallBack::HIGHLITECB;;}
-     break;
- 
-   case 658:
- #line 1559 "parser.Y"
--    {yyval.integer = CallBack::UNHIGHLITECB;;}
-+    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
-     break;
- 
-   case 659:
- #line 1560 "parser.Y"
--    {yyval.integer = CallBack::MOVEBEGINCB;;}
-+    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
-     break;
- 
-   case 660:
- #line 1561 "parser.Y"
--    {yyval.integer = CallBack::MOVECB;;}
-+    {(yyval.integer) = CallBack::MOVECB;;}
-     break;
- 
-   case 661:
- #line 1562 "parser.Y"
--    {yyval.integer = CallBack::MOVEENDCB;;}
-+    {(yyval.integer) = CallBack::MOVEENDCB;;}
-     break;
- 
-   case 662:
- #line 1563 "parser.Y"
--    {yyval.integer = CallBack::EDITBEGINCB;;}
-+    {(yyval.integer) = CallBack::EDITBEGINCB;;}
-     break;
- 
-   case 663:
- #line 1564 "parser.Y"
--    {yyval.integer = CallBack::EDITCB;;}
-+    {(yyval.integer) = CallBack::EDITCB;;}
-     break;
- 
-   case 664:
- #line 1565 "parser.Y"
--    {yyval.integer = CallBack::EDITENDCB;;}
-+    {(yyval.integer) = CallBack::EDITENDCB;;}
-     break;
- 
-   case 665:
- #line 1566 "parser.Y"
--    {yyval.integer = CallBack::ROTATEBEGINCB;;}
-+    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
-     break;
- 
-   case 666:
- #line 1567 "parser.Y"
--    {yyval.integer = CallBack::ROTATECB;;}
-+    {(yyval.integer) = CallBack::ROTATECB;;}
-     break;
- 
-   case 667:
- #line 1568 "parser.Y"
--    {yyval.integer = CallBack::ROTATEENDCB;;}
-+    {(yyval.integer) = CallBack::ROTATEENDCB;;}
-     break;
- 
-   case 668:
- #line 1569 "parser.Y"
--    {yyval.integer = CallBack::DELETECB;;}
-+    {(yyval.integer) = CallBack::DELETECB;;}
-     break;
- 
-   case 669:
- #line 1570 "parser.Y"
--    {yyval.integer = CallBack::TEXTCB;;}
-+    {(yyval.integer) = CallBack::TEXTCB;;}
-     break;
- 
-   case 670:
- #line 1571 "parser.Y"
--    {yyval.integer = CallBack::COLORCB;;}
-+    {(yyval.integer) = CallBack::COLORCB;;}
-     break;
- 
-   case 671:
- #line 1572 "parser.Y"
--    {yyval.integer = CallBack::LINEWIDTHCB;;}
-+    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
-     break;
- 
-   case 672:
- #line 1573 "parser.Y"
--    {yyval.integer = CallBack::PROPERTYCB;;}
-+    {(yyval.integer) = CallBack::PROPERTYCB;;}
-     break;
- 
-   case 673:
- #line 1574 "parser.Y"
--    {yyval.integer = CallBack::FONTCB;;}
-+    {(yyval.integer) = CallBack::FONTCB;;}
-     break;
- 
-   case 674:
- #line 1575 "parser.Y"
--    {yyval.integer = CallBack::UPDATECB;;}
-+    {(yyval.integer) = CallBack::UPDATECB;;}
-     break;
- 
-   case 675:
- #line 1582 "parser.Y"
--    {FRB->createCircleCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
--	    yyvsp[-1].real,
-+    {FRB->createCircleCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (5)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 676:
- #line 1589 "parser.Y"
--    {FRB->createAnnulusCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
--	    yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].integer,
-+    {FRB->createAnnulusCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real),(yyvsp[(6) - (7)].integer),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 677:
- #line 1597 "parser.Y"
--    {FRB->createCpandaCmd(Vector(yyvsp[-8].real,yyvsp[-7].real)*FRB->getCanvasToRef(),
--	    yyvsp[-6].real,yyvsp[-5].real,yyvsp[-4].integer,
--	    yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].integer,
-+    {FRB->createCpandaCmd(Vector((yyvsp[(2) - (10)].real),(yyvsp[(3) - (10)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (10)].real),(yyvsp[(5) - (10)].real),(yyvsp[(6) - (10)].integer),
-+	    (yyvsp[(7) - (10)].real),(yyvsp[(8) - (10)].real),(yyvsp[(9) - (10)].integer),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 678:
- #line 1607 "parser.Y"
--    {FRB->createEllipseCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-3].real,yyvsp[-2].real),
--	    yyvsp[-1].real,
-+    {FRB->createEllipseCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-+	    (yyvsp[(6) - (7)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 679:
- #line 1616 "parser.Y"
--    {FRB->createEllipseAnnulusCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-5].real,yyvsp[-4].real), 
--	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
--	    yyvsp[-1].real,
-+    {FRB->createEllipseAnnulusCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)), 
-+	    Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
-+	    (yyvsp[(8) - (9)].real),
- 	    currentColor,currentWidth,currentFont, 
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 680:
- #line 1627 "parser.Y"
--    {FRB->createEpandaCmd(Vector(yyvsp[-10].real,yyvsp[-9].real)*FRB->getCanvasToRef(),
--	    yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].integer,
--	    Vector(yyvsp[-5].real,yyvsp[-4].real),
--	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
--	    yyvsp[-1].real,
-+    {FRB->createEpandaCmd(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
-+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
-+	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
-+	    (yyvsp[(11) - (12)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 681:
- #line 1639 "parser.Y"
--    {FRB->createBoxCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-3].real,yyvsp[-2].real),
--	    yyvsp[-1].real,
-+    {FRB->createBoxCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real)),
-+	    (yyvsp[(6) - (7)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 682:
- #line 1648 "parser.Y"
--    {FRB->createBoxAnnulusCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
--	    yyvsp[-1].real,
-+    {FRB->createBoxAnnulusCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real)),Vector((yyvsp[(6) - (9)].real),(yyvsp[(6) - (9)].real)*(yyvsp[(4) - (9)].real)/(yyvsp[(5) - (9)].real)),(yyvsp[(7) - (9)].integer),
-+	    (yyvsp[(8) - (9)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 683:
- #line 1658 "parser.Y"
--    {FRB->createBpandaCmd(Vector(yyvsp[-10].real,yyvsp[-9].real)*FRB->getCanvasToRef(),
--	    yyvsp[-8].real,yyvsp[-7].real,yyvsp[-6].integer,
--	    Vector(yyvsp[-5].real,yyvsp[-4].real),
--	    Vector(yyvsp[-3].real,yyvsp[-3].real*yyvsp[-5].real/yyvsp[-4].real),yyvsp[-2].integer,
--	    yyvsp[-1].real,
-+    {FRB->createBpandaCmd(Vector((yyvsp[(2) - (12)].real),(yyvsp[(3) - (12)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (12)].real),(yyvsp[(5) - (12)].real),(yyvsp[(6) - (12)].integer),
-+	    Vector((yyvsp[(7) - (12)].real),(yyvsp[(8) - (12)].real)),
-+	    Vector((yyvsp[(9) - (12)].real),(yyvsp[(9) - (12)].real)*(yyvsp[(7) - (12)].real)/(yyvsp[(8) - (12)].real)),(yyvsp[(10) - (12)].integer),
-+	    (yyvsp[(11) - (12)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 684:
- #line 1669 "parser.Y"
--    {FRB->createLineCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createLineCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real))*FRB->getCanvasToRef(),
- 	    0, 0,
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-@@ -7055,8 +7388,8 @@
- 
-   case 685:
- #line 1677 "parser.Y"
--    {FRB->createVectCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createVectCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real))*FRB->getCanvasToRef(),
- 	    1,
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-@@ -7064,9 +7397,9 @@
- 
-   case 686:
- #line 1686 "parser.Y"
--    {FRB->createProjectionCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
--	    yyvsp[-1].real,
-+    {FRB->createProjectionCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (7)].real),(yyvsp[(5) - (7)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(6) - (7)].real),
- 	    NULL,NULL,
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-@@ -7074,94 +7407,94 @@
- 
-   case 687:
- #line 1697 "parser.Y"
--    {FRB->createProjectionCmd(Vector(yyvsp[-7].real,yyvsp[-6].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(),
--	    yyvsp[-3].real,
--	    yyvsp[-2].str,yyvsp[-1].str,
-+    {FRB->createProjectionCmd(Vector((yyvsp[(2) - (9)].real),(yyvsp[(3) - (9)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (9)].real),(yyvsp[(5) - (9)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(6) - (9)].real),
-+	    (yyvsp[(7) - (9)].str),(yyvsp[(8) - (9)].str),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 688:
- #line 1707 "parser.Y"
--    {FRB->createRulerCmd(Vector(yyvsp[-6].real,yyvsp[-5].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
--	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer, PHYSICAL, DEGREES,
-+    {FRB->createRulerCmd(Vector((yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (8)].real),(yyvsp[(5) - (8)].real))*FRB->getCanvasToRef(),
-+	    (CoordSystem)(yyvsp[(6) - (8)].integer), (SkyFrame)(yyvsp[(7) - (8)].integer), PHYSICAL, DEGREES,
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 689:
- #line 1715 "parser.Y"
--    {FRB->createCirclePointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createCirclePointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 690:
- #line 1720 "parser.Y"
--    {FRB->createBoxPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createBoxPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 691:
- #line 1725 "parser.Y"
--    {FRB->createDiamondPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createDiamondPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 692:
- #line 1730 "parser.Y"
--    {FRB->createCrossPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createCrossPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 693:
- #line 1735 "parser.Y"
--    {FRB->createExPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createExPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 694:
- #line 1740 "parser.Y"
--    {FRB->createArrowPointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createArrowPointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 695:
- #line 1745 "parser.Y"
--    {FRB->createBoxCirclePointCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(),
-+    {FRB->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real))*FRB->getCanvasToRef(),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 696:
- #line 1752 "parser.Y"
--    {FRB->createTextCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(),
--	    yyvsp[-1].real,
-+    {FRB->createTextCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(),
-+	    (yyvsp[(4) - (5)].real),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 697:
- #line 1760 "parser.Y"
--    {FRB->createPolygonCmd(Vector(yyvsp[-4].real,yyvsp[-3].real)*FRB->getCanvasToRef(),
--	    Vector(yyvsp[-2].real,yyvsp[-1].real),
-+    {FRB->createPolygonCmd(Vector((yyvsp[(2) - (6)].real),(yyvsp[(3) - (6)].real))*FRB->getCanvasToRef(),
-+	    Vector((yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real)),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
- 
-   case 698:
- #line 1769 "parser.Y"
--    {FRB->createCompassCmd(Vector(yyvsp[-5].real,yyvsp[-4].real)*FRB->getCanvasToRef(), 
--	    yyvsp[-3].real,
-+    {FRB->createCompassCmd(Vector((yyvsp[(2) - (7)].real),(yyvsp[(3) - (7)].real))*FRB->getCanvasToRef(), 
-+	    (yyvsp[(4) - (7)].real),
- 	    "N", "E", 1, 1,
--	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer,
-+	    (CoordSystem)(yyvsp[(5) - (7)].integer), (SkyFrame)(yyvsp[(6) - (7)].integer),
- 	    currentColor,currentWidth,currentFont,
- 	    currentText,currentProps,NULL,taglist,cblist);;}
-     break;
-@@ -7175,22 +7508,22 @@
- 
-   case 700:
- #line 1782 "parser.Y"
--    {FRB->createTemplateCmd(Vector(yyvsp[-2].real,yyvsp[-1].real)*FRB->getCanvasToRef(), yyvsp[0].str);;}
-+    {FRB->createTemplateCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real))*FRB->getCanvasToRef(), (yyvsp[(4) - (4)].str));;}
-     break;
- 
-   case 701:
- #line 1785 "parser.Y"
--    {FRB->createTemplateVarCmd(Vector(yyvsp[-3].real,yyvsp[-2].real)*FRB->getCanvasToRef(), yyvsp[0].str);;}
-+    {FRB->createTemplateVarCmd(Vector((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real))*FRB->getCanvasToRef(), (yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 702:
- #line 1789 "parser.Y"
--    {FRB->markerEditBeginCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
-+    {FRB->markerEditBeginCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 703:
- #line 1791 "parser.Y"
--    {FRB->markerEditMotionCmd(Vector(yyvsp[-2].real,yyvsp[-1].real),yyvsp[0].integer);;}
-+    {FRB->markerEditMotionCmd(Vector((yyvsp[(2) - (4)].real),(yyvsp[(3) - (4)].real)),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 704:
-@@ -7200,32 +7533,32 @@
- 
-   case 705:
- #line 1795 "parser.Y"
--    {yyval.integer = FrameBase::DS9;;}
-+    {(yyval.integer) = FrameBase::DS9;;}
-     break;
- 
-   case 706:
- #line 1796 "parser.Y"
--    {yyval.integer = FrameBase::CIAO;;}
-+    {(yyval.integer) = FrameBase::CIAO;;}
-     break;
- 
-   case 707:
- #line 1797 "parser.Y"
--    {yyval.integer = FrameBase::SAOTNG;;}
-+    {(yyval.integer) = FrameBase::SAOTNG;;}
-     break;
- 
-   case 708:
- #line 1798 "parser.Y"
--    {yyval.integer = FrameBase::SAOIMAGE;;}
-+    {(yyval.integer) = FrameBase::SAOIMAGE;;}
-     break;
- 
-   case 709:
- #line 1799 "parser.Y"
--    {yyval.integer = FrameBase::PROS;;}
-+    {(yyval.integer) = FrameBase::PROS;;}
-     break;
- 
-   case 710:
- #line 1800 "parser.Y"
--    {yyval.integer = FrameBase::RAWXY;;}
-+    {(yyval.integer) = FrameBase::RAWXY;;}
-     break;
- 
-   case 711:
-@@ -7240,12 +7573,12 @@
- 
-   case 713:
- #line 1805 "parser.Y"
--    {FRB->getMarkerHandleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->getMarkerHandleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 714:
- #line 1806 "parser.Y"
--    {FRB->getMarkerIdCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->getMarkerIdCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 715:
-@@ -7255,220 +7588,220 @@
- 
-   case 716:
- #line 1809 "parser.Y"
--    {FRB->getMarkerAngleCmd(yyvsp[-3].integer,(CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->getMarkerAngleCmd((yyvsp[(1) - (4)].integer),(CoordSystem)(yyvsp[(3) - (4)].integer), (SkyFrame)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 717:
- #line 1811 "parser.Y"
--    {FRB->getMarkerAnnulusRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 718:
- #line 1813 "parser.Y"
--    {FRB->getMarkerBoxAnnulusRadiusCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerBoxAnnulusRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 719:
- #line 1815 "parser.Y"
--    {FRB->getMarkerBoxRadiusCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerBoxRadiusCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 720:
- #line 1817 "parser.Y"
--    {FRB->getMarkerBpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->getMarkerBpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 721:
- #line 1819 "parser.Y"
--    {FRB->getMarkerBpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerBpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 722:
- #line 1821 "parser.Y"
--    {FRB->getMarkerCenterCmd(yyvsp[-4].integer, 
--	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerCenterCmd((yyvsp[(1) - (5)].integer), 
-+	    (CoordSystem)(yyvsp[(3) - (5)].integer), (SkyFrame)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 723:
- #line 1824 "parser.Y"
--    {FRB->getMarkerCircleRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerCircleRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 724:
- #line 1825 "parser.Y"
--    {FRB->getMarkerColorCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerColorCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 725:
- #line 1826 "parser.Y"
--    {FRB->getMarkerCompassArrowCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerCompassArrowCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 726:
- #line 1827 "parser.Y"
--    {FRB->getMarkerCompassLabelCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerCompassLabelCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 727:
- #line 1828 "parser.Y"
--    {FRB->getMarkerCompassSystemCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerCompassSystemCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 728:
- #line 1830 "parser.Y"
--    {FRB->getMarkerEllipseRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerEllipseRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 729:
- #line 1832 "parser.Y"
--    {FRB->getMarkerEllipseAnnulusRadiusCmd(yyvsp[-4].integer, 
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerEllipseAnnulusRadiusCmd((yyvsp[(1) - (5)].integer), 
-+	    (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 730:
- #line 1835 "parser.Y"
--    {FRB->getMarkerEpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->getMarkerEpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 731:
- #line 1837 "parser.Y"
--    {FRB->getMarkerEpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerEpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 732:
- #line 1838 "parser.Y"
--    {FRB->getMarkerFontCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerFontCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 733:
- #line 1839 "parser.Y"
--    {FRB->getMarkerLineArrowCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerLineArrowCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 734:
- #line 1841 "parser.Y"
--    {FRB->getMarkerLineLengthCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerLineLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 735:
- #line 1843 "parser.Y"
--    {FRB->getMarkerLineCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
--	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerLineCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-+	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 736:
- #line 1846 "parser.Y"
--    {FRB->getMarkerMapLenFromRefCmd(yyvsp[-5].integer, yyvsp[-2].real,
--	    (CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerMapLenFromRefCmd((yyvsp[(1) - (6)].integer), (yyvsp[(4) - (6)].real),
-+	    (CoordSystem)(yyvsp[(5) - (6)].integer),(SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 737:
- #line 1849 "parser.Y"
--    {FRB->getMarkerCpandaAnglesCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFrame)yyvsp[0].integer);;}
-+    {FRB->getMarkerCpandaAnglesCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFrame)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 738:
- #line 1851 "parser.Y"
--    {FRB->getMarkerCpandaRadiusCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerCpandaRadiusCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 739:
- #line 1853 "parser.Y"
--    {FRB->getMarkerProjectionCmd(yyvsp[-5].integer,yyvsp[-3].str,yyvsp[-2].str,yyvsp[-1].str,yyvsp[0].str);;}
-+    {FRB->getMarkerProjectionCmd((yyvsp[(1) - (6)].integer),(yyvsp[(3) - (6)].str),(yyvsp[(4) - (6)].str),(yyvsp[(5) - (6)].str),(yyvsp[(6) - (6)].str));;}
-     break;
- 
-   case 740:
- #line 1855 "parser.Y"
--    {FRB->getMarkerProjectionPointsCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
--	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerProjectionPointsCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-+	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 741:
- #line 1858 "parser.Y"
--    {FRB->getMarkerProjectionLengthCmd(yyvsp[-4].integer, 
--	    (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerProjectionLengthCmd((yyvsp[(1) - (5)].integer), 
-+	    (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 742:
- #line 1860 "parser.Y"
--    {FRB->getMarkerProjectionMethodCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerProjectionMethodCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 743:
- #line 1862 "parser.Y"
--    {FRB->getMarkerProjectionWidthCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerProjectionWidthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 744:
- #line 1863 "parser.Y"
--    {FRB->getMarkerProjectionSystemCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerProjectionSystemCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 745:
- #line 1864 "parser.Y"
--    {FRB->getMarkerPropertyCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 746:
- #line 1865 "parser.Y"
--    {FRB->getMarkerPropertyCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 747:
- #line 1867 "parser.Y"
--    {FRB->getMarkerRulerLengthCmd(yyvsp[-4].integer,(CoordSystem)yyvsp[-1].integer,(SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerRulerLengthCmd((yyvsp[(1) - (5)].integer),(CoordSystem)(yyvsp[(4) - (5)].integer),(SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 748:
- #line 1869 "parser.Y"
--    {FRB->getMarkerRulerPointCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
--	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerRulerPointCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-+	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 749:
- #line 1871 "parser.Y"
--    {FRB->getMarkerRulerSystemCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerRulerSystemCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 750:
- #line 1872 "parser.Y"
--    {FRB->getMarkerTagCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerTagCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 751:
- #line 1873 "parser.Y"
--    {FRB->getMarkerTagCmd(yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {FRB->getMarkerTagCmd((yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 752:
- #line 1874 "parser.Y"
--    {FRB->getMarkerTextCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerTextCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 753:
- #line 1875 "parser.Y"
--    {FRB->getMarkerTypeCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerTypeCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 754:
- #line 1876 "parser.Y"
--    {FRB->getMarkerVectorArrowCmd(yyvsp[-2].integer);;}
-+    {FRB->getMarkerVectorArrowCmd((yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 755:
- #line 1878 "parser.Y"
--    {FRB->getMarkerVectorLengthCmd(yyvsp[-4].integer, (CoordSystem)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerVectorLengthCmd((yyvsp[(1) - (5)].integer), (CoordSystem)(yyvsp[(4) - (5)].integer), (SkyFormat)(yyvsp[(5) - (5)].integer));;}
-     break;
- 
-   case 756:
- #line 1880 "parser.Y"
--    {FRB->getMarkerVectorCmd(yyvsp[-5].integer, (CoordSystem)yyvsp[-2].integer,
--	    (SkyFrame)yyvsp[-1].integer, (SkyFormat)yyvsp[0].integer);;}
-+    {FRB->getMarkerVectorCmd((yyvsp[(1) - (6)].integer), (CoordSystem)(yyvsp[(4) - (6)].integer),
-+	    (SkyFrame)(yyvsp[(5) - (6)].integer), (SkyFormat)(yyvsp[(6) - (6)].integer));;}
-     break;
- 
-   case 757:
- #line 1882 "parser.Y"
--    {FRB->getMarkerLineWidthCmd(yyvsp[-1].integer);;}
-+    {FRB->getMarkerLineWidthCmd((yyvsp[(1) - (2)].integer));;}
-     break;
- 
-   case 759:
-@@ -7478,7 +7811,7 @@
- 
-   case 760:
- #line 1886 "parser.Y"
--    {FRB->getMarkerPolygonSegmentCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->getMarkerPolygonSegmentCmd(Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 761:
-@@ -7488,7 +7821,7 @@
- 
-   case 762:
- #line 1888 "parser.Y"
--    {FRB->getMarkerPropertyCmd(yyvsp[0].integer);;}
-+    {FRB->getMarkerPropertyCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 764:
-@@ -7503,27 +7836,27 @@
- 
-   case 766:
- #line 1894 "parser.Y"
--    {FRB->getMarkerColorCmd(yyvsp[-1].str);;}
-+    {FRB->getMarkerColorCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 767:
- #line 1895 "parser.Y"
--    {FRB->getMarkerFontCmd(yyvsp[-1].str);;}
-+    {FRB->getMarkerFontCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 768:
- #line 1896 "parser.Y"
--    {FRB->getMarkerPropertyCmd(yyvsp[-2].str,yyvsp[0].integer);;}
-+    {FRB->getMarkerPropertyCmd((yyvsp[(1) - (3)].str),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 769:
- #line 1897 "parser.Y"
--    {FRB->getMarkerTagCmd(yyvsp[-1].str);;}
-+    {FRB->getMarkerTagCmd((yyvsp[(1) - (2)].str));;}
-     break;
- 
-   case 770:
- #line 1898 "parser.Y"
--    {FRB->getMarkerTagNumberCmd(yyvsp[-2].str);;}
-+    {FRB->getMarkerTagNumberCmd((yyvsp[(1) - (3)].str));;}
-     break;
- 
-   case 771:
-@@ -7548,7 +7881,7 @@
- 
-   case 775:
- #line 1907 "parser.Y"
--    {FRB->getMarkerSelectedCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->getMarkerSelectedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 776:
-@@ -7558,7 +7891,7 @@
- 
-   case 777:
- #line 1911 "parser.Y"
--    {FRB->getMarkerHighlitedCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->getMarkerHighlitedCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 778:
-@@ -7591,48 +7924,48 @@
- 
-   case 782:
- #line 1932 "parser.Y"
--    {FRB->markerListCmd((FrameBase::MarkerFormat)yyvsp[-7].integer,
--	    (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer, (SkyFormat)yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer,
-+    {FRB->markerListCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (8)].integer),
-+	    (CoordSystem)(yyvsp[(2) - (8)].integer), (SkyFrame)(yyvsp[(3) - (8)].integer), (SkyFormat)(yyvsp[(4) - (8)].integer), (yyvsp[(5) - (8)].integer), (yyvsp[(6) - (8)].integer),
- 	    0, propQMask, propQValue, taglist);;}
-     break;
- 
-   case 783:
- #line 1937 "parser.Y"
--    {FRB->markerListCmd((FrameBase::MarkerFormat)yyvsp[-7].integer, 
--	    (CoordSystem)yyvsp[-6].integer, (SkyFrame)yyvsp[-5].integer, (SkyFormat)yyvsp[-4].integer, yyvsp[-3].integer, yyvsp[-2].integer,
-+    {FRB->markerListCmd((FrameBase::MarkerFormat)(yyvsp[(2) - (9)].integer), 
-+	    (CoordSystem)(yyvsp[(3) - (9)].integer), (SkyFrame)(yyvsp[(4) - (9)].integer), (SkyFormat)(yyvsp[(5) - (9)].integer), (yyvsp[(6) - (9)].integer), (yyvsp[(7) - (9)].integer),
- 	    1, propQMask, propQValue, taglist);;}
-     break;
- 
-   case 784:
- #line 1943 "parser.Y"
--    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].str);;}
-+    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 785:
- #line 1945 "parser.Y"
--    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-3].integer,yyvsp[-2].str,
--	    (CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].str),
-+	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 786:
- #line 1948 "parser.Y"
--    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 787:
- #line 1950 "parser.Y"
--    {FRB->markerLoadCmd((FrameBase::MarkerFormat)yyvsp[-3].integer,yyvsp[-2].integer,
--	    (CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->markerLoadCmd((FrameBase::MarkerFormat)(yyvsp[(1) - (4)].integer),(yyvsp[(2) - (4)].integer),
-+	    (CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 788:
- #line 1953 "parser.Y"
--    {FRB->markerLoadFitsCmd(yyvsp[-3].str, yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].str);;}
-+    {FRB->markerLoadFitsCmd((yyvsp[(2) - (5)].str), (yyvsp[(3) - (5)].str), (yyvsp[(4) - (5)].integer), (yyvsp[(5) - (5)].str));;}
-     break;
- 
-   case 789:
- #line 1956 "parser.Y"
--    {FRB->markerMoveCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerMoveCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 790:
-@@ -7647,12 +7980,12 @@
- 
-   case 792:
- #line 1959 "parser.Y"
--    {FRB->markerMoveBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerMoveBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 793:
- #line 1960 "parser.Y"
--    {FRB->markerMoveMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerMoveMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 794:
-@@ -7662,82 +7995,82 @@
- 
-   case 795:
- #line 1963 "parser.Y"
--    {FRB->markerMoveToCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->markerMoveToCmd(Vector((yyvsp[(4) - (4)].vector)), (CoordSystem)(yyvsp[(2) - (4)].integer), (SkyFrame)(yyvsp[(3) - (4)].integer));;}
-     break;
- 
-   case 798:
- #line 1970 "parser.Y"
--    {setProps(&currentProps,yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {setProps(&currentProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 799:
- #line 1971 "parser.Y"
--    {strncpy(currentColor,yyvsp[0].str,16);;}
-+    {strncpy(currentColor,(yyvsp[(3) - (3)].str),16);;}
-     break;
- 
-   case 800:
- #line 1972 "parser.Y"
--    {currentWidth = yyvsp[0].integer;;}
-+    {currentWidth = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 801:
- #line 1973 "parser.Y"
--    {strncpy(currentFont,yyvsp[0].str,32);;}
-+    {strncpy(currentFont,(yyvsp[(3) - (3)].str),32);;}
-     break;
- 
-   case 802:
- #line 1974 "parser.Y"
--    {strncpy(currentText,yyvsp[0].str,80);;}
-+    {strncpy(currentText,(yyvsp[(3) - (3)].str),80);;}
-     break;
- 
-   case 805:
- #line 1979 "parser.Y"
--    {yyval.integer = Marker::NONE;;}
-+    {(yyval.integer) = Marker::NONE;;}
-     break;
- 
-   case 806:
- #line 1980 "parser.Y"
--    {yyval.integer = Marker::SELECT;;}
-+    {(yyval.integer) = Marker::SELECT;;}
-     break;
- 
-   case 807:
- #line 1981 "parser.Y"
--    {yyval.integer = Marker::HIGHLITE;;}
-+    {(yyval.integer) = Marker::HIGHLITE;;}
-     break;
- 
-   case 808:
- #line 1982 "parser.Y"
--    {yyval.integer = Marker::EDIT;;}
-+    {(yyval.integer) = Marker::EDIT;;}
-     break;
- 
-   case 809:
- #line 1983 "parser.Y"
--    {yyval.integer = Marker::MOVE;;}
-+    {(yyval.integer) = Marker::MOVE;;}
-     break;
- 
-   case 810:
- #line 1984 "parser.Y"
--    {yyval.integer = Marker::ROTATE;;}
-+    {(yyval.integer) = Marker::ROTATE;;}
-     break;
- 
-   case 811:
- #line 1985 "parser.Y"
--    {yyval.integer = Marker::DELETE;;}
-+    {(yyval.integer) = Marker::DELETE;;}
-     break;
- 
-   case 812:
- #line 1986 "parser.Y"
--    {yyval.integer = Marker::INCLUDE;;}
-+    {(yyval.integer) = Marker::INCLUDE;;}
-     break;
- 
-   case 813:
- #line 1987 "parser.Y"
--    {yyval.integer = Marker::SOURCE;;}
-+    {(yyval.integer) = Marker::SOURCE;;}
-     break;
- 
-   case 814:
- #line 1988 "parser.Y"
--    {yyval.integer = Marker::FIXED;;}
-+    {(yyval.integer) = Marker::FIXED;;}
-     break;
- 
-   case 817:
-@@ -7757,7 +8090,7 @@
- 
-   case 821:
- #line 2000 "parser.Y"
--    {FRB->markerSelectOnlyCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerSelectOnlyCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 822:
-@@ -7767,12 +8100,12 @@
- 
-   case 823:
- #line 2002 "parser.Y"
--    {FRB->markerSelectToggleCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->markerSelectToggleCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 826:
- #line 2010 "parser.Y"
--    {propQMask |= yyvsp[-2].integer; setProps(&propQValue,yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {propQMask |= (yyvsp[(1) - (3)].integer); setProps(&propQValue,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 827:
-@@ -7787,13 +8120,13 @@
- 
-   case 832:
- #line 2021 "parser.Y"
--    {taglist.append(new Tag(yyvsp[0].str));;}
-+    {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
-     break;
- 
-   case 833:
- #line 2024 "parser.Y"
-     {cblist.append(
--	new CallBack(FRB->getInterp(),(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str));;}
-+	new CallBack(FRB->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
-     break;
- 
-   case 834:
-@@ -7818,67 +8151,67 @@
- 
-   case 838:
- #line 2035 "parser.Y"
--    {FRB->panCmd(Vector(yyvsp[-3].real,yyvsp[-2].real),Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->panCmd(Vector((yyvsp[(1) - (4)].real),(yyvsp[(2) - (4)].real)),Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 839:
- #line 2037 "parser.Y"
--    {FRB->panCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->panCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 840:
- #line 2039 "parser.Y"
--    {FRB->panCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->panCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
-     break;
- 
-   case 842:
- #line 2041 "parser.Y"
--    {FRB->panBBoxCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->panBBoxCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 844:
- #line 2043 "parser.Y"
--    {FRB->panPreserveCmd(yyvsp[0].integer);;}
-+    {FRB->panPreserveCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 845:
- #line 2047 "parser.Y"
--    {FRB->panToCmd(Vector(yyvsp[-1].real,yyvsp[0].real), (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->panToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)), (InternalSystem)(yyvsp[(1) - (3)].integer));;}
-     break;
- 
-   case 846:
- #line 2049 "parser.Y"
--    {FRB->panToCmd(Vector(yyvsp[0].vector), (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->panToCmd(Vector((yyvsp[(3) - (3)].vector)), (CoordSystem)(yyvsp[(1) - (3)].integer), (SkyFrame)(yyvsp[(2) - (3)].integer));;}
-     break;
- 
-   case 847:
- #line 2052 "parser.Y"
--    {FRB->panMotionBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->panMotionBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 848:
- #line 2053 "parser.Y"
--    {FRB->panMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->panMotionCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 849:
- #line 2054 "parser.Y"
--    {FRB->panMotionEndCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->panMotionEndCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 850:
- #line 2057 "parser.Y"
--    {FRB->pannerCmd(yyvsp[0].integer);;}
-+    {FRB->pannerCmd((yyvsp[(1) - (1)].integer));;}
-     break;
- 
-   case 851:
- #line 2059 "parser.Y"
--    {FRB->pannerCmd((CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->pannerCmd((CoordSystem)(yyvsp[(2) - (3)].integer),(SkyFrame)(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 852:
- #line 2060 "parser.Y"
--    {FRB->pannerCmd(yyvsp[-2].str, yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->pannerCmd((yyvsp[(1) - (3)].str), (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 853:
-@@ -7888,47 +8221,47 @@
- 
-   case 854:
- #line 2065 "parser.Y"
--    {FRB->psColorSpaceCmd((Widget::PSColorSpace)yyvsp[0].integer);;}
-+    {FRB->psColorSpaceCmd((Widget::PSColorSpace)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 855:
- #line 2066 "parser.Y"
--    {FRB->psLevelCmd(yyvsp[0].integer);;}
-+    {FRB->psLevelCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 856:
- #line 2067 "parser.Y"
--    {FRB->psResolutionCmd(yyvsp[0].integer);;}
-+    {FRB->psResolutionCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 857:
- #line 2070 "parser.Y"
--    {yyval.integer = Widget::BW;;}
-+    {(yyval.integer) = Widget::BW;;}
-     break;
- 
-   case 858:
- #line 2071 "parser.Y"
--    {yyval.integer = Widget::GRAY;;}
-+    {(yyval.integer) = Widget::GRAY;;}
-     break;
- 
-   case 859:
- #line 2072 "parser.Y"
--    {yyval.integer = Widget::RGB;;}
-+    {(yyval.integer) = Widget::RGB;;}
-     break;
- 
-   case 860:
- #line 2073 "parser.Y"
--    {yyval.integer = Widget::CMYK;;}
-+    {(yyval.integer) = Widget::CMYK;;}
-     break;
- 
-   case 863:
- #line 2081 "parser.Y"
--    {FRB->regionHighliteBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->regionHighliteBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 864:
- #line 2083 "parser.Y"
--    {FRB->regionHighliteMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->regionHighliteMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 865:
-@@ -7943,12 +8276,12 @@
- 
-   case 867:
- #line 2089 "parser.Y"
--    {FRB->regionSelectBeginCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->regionSelectBeginCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 868:
- #line 2090 "parser.Y"
--    {FRB->regionSelectMotionCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->regionSelectMotionCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 869:
-@@ -7963,37 +8296,37 @@
- 
-   case 871:
- #line 2095 "parser.Y"
--    {FRB->setRGBChannelCmd(yyvsp[0].str);;}
-+    {FRB->setRGBChannelCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 872:
- #line 2096 "parser.Y"
--    {FRB->setRGBSystemCmd((CoordSystem)yyvsp[0].integer);;}
-+    {FRB->setRGBSystemCmd((CoordSystem)(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 873:
- #line 2097 "parser.Y"
--    {FRB->setRGBViewCmd(yyvsp[-2].integer,yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->setRGBViewCmd((yyvsp[(2) - (4)].integer),(yyvsp[(3) - (4)].integer),(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 874:
- #line 2100 "parser.Y"
--    {FRB->rotateCmd(degToRad(yyvsp[0].real));;}
-+    {FRB->rotateCmd(degToRad((yyvsp[(1) - (1)].real)));;}
-     break;
- 
-   case 875:
- #line 2101 "parser.Y"
--    {FRB->rotateCmd(degToRad(yyvsp[-1].real));;}
-+    {FRB->rotateCmd(degToRad((yyvsp[(1) - (2)].real)));;}
-     break;
- 
-   case 877:
- #line 2103 "parser.Y"
--    {FRB->rotateToCmd(degToRad(yyvsp[0].real));;}
-+    {FRB->rotateToCmd(degToRad((yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 878:
- #line 2104 "parser.Y"
--    {FRB->rotateToCmd(degToRad(yyvsp[-1].real));;}
-+    {FRB->rotateToCmd(degToRad((yyvsp[(2) - (3)].real)));;}
-     break;
- 
-   case 879:
-@@ -8003,7 +8336,7 @@
- 
-   case 880:
- #line 2108 "parser.Y"
--    {FRB->rotateMotionCmd(degToRad(yyvsp[0].real));;}
-+    {FRB->rotateMotionCmd(degToRad((yyvsp[(1) - (1)].real)));;}
-     break;
- 
-   case 881:
-@@ -8013,67 +8346,67 @@
- 
-   case 884:
- #line 2116 "parser.Y"
--    {FRB->saveArrayFileCmd(yyvsp[0].str);;}
-+    {FRB->saveArrayFileCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 885:
- #line 2117 "parser.Y"
--    {FRB->saveArrayChannelCmd(yyvsp[0].str);;}
-+    {FRB->saveArrayChannelCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 886:
- #line 2118 "parser.Y"
--    {FRB->saveArraySocketCmd(yyvsp[0].integer);;}
-+    {FRB->saveArraySocketCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 890:
- #line 2126 "parser.Y"
--    {FRB->saveFitsImageFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsImageFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 891:
- #line 2127 "parser.Y"
--    {FRB->saveFitsImageChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsImageChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 892:
- #line 2128 "parser.Y"
--    {FRB->saveFitsImageSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->saveFitsImageSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 893:
- #line 2131 "parser.Y"
--    {FRB->saveFitsTableFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsTableFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 894:
- #line 2132 "parser.Y"
--    {FRB->saveFitsTableChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsTableChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 895:
- #line 2133 "parser.Y"
--    {FRB->saveFitsTableSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->saveFitsTableSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 896:
- #line 2137 "parser.Y"
--    {FRB->saveFitsResampleFileCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsResampleFileCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 897:
- #line 2139 "parser.Y"
--    {FRB->saveFitsResampleChannelCmd(yyvsp[-1].str, yyvsp[0].integer);;}
-+    {FRB->saveFitsResampleChannelCmd((yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 898:
- #line 2141 "parser.Y"
--    {FRB->saveFitsResampleSocketCmd(yyvsp[-1].integer, yyvsp[0].integer);;}
-+    {FRB->saveFitsResampleSocketCmd((yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 899:
- #line 2145 "parser.Y"
--    {FRB->smoothCmd((FrameBase::SmoothFunction)yyvsp[-1].integer,yyvsp[0].integer);;}
-+    {FRB->smoothCmd((FrameBase::SmoothFunction)(yyvsp[(1) - (2)].integer),(yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 900:
-@@ -8083,17 +8416,17 @@
- 
-   case 901:
- #line 2149 "parser.Y"
--    {yyval.integer = FrameBase::BOXCAR;;}
-+    {(yyval.integer) = FrameBase::BOXCAR;;}
-     break;
- 
-   case 902:
- #line 2150 "parser.Y"
--    {yyval.integer = FrameBase::GAUSSIAN;;}
-+    {(yyval.integer) = FrameBase::GAUSSIAN;;}
-     break;
- 
-   case 903:
- #line 2151 "parser.Y"
--    {yyval.integer = FrameBase::TOPHAT;;}
-+    {(yyval.integer) = FrameBase::TOPHAT;;}
-     break;
- 
-   case 904:
-@@ -8103,7 +8436,7 @@
- 
-   case 905:
- #line 2156 "parser.Y"
--    {FRB->updateFitsCmd(yyvsp[-4].integer,BBox(yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].real,yyvsp[0].real),0);;}
-+    {FRB->updateFitsCmd((yyvsp[(1) - (5)].integer),BBox((yyvsp[(2) - (5)].real),(yyvsp[(3) - (5)].real),(yyvsp[(4) - (5)].real),(yyvsp[(5) - (5)].real)),0);;}
-     break;
- 
-   case 906:
-@@ -8113,32 +8446,32 @@
- 
-   case 907:
- #line 2159 "parser.Y"
--    {FRB->updateFitsCmd(yyvsp[-4].integer,BBox(yyvsp[-3].real,yyvsp[-2].real,yyvsp[-1].real,yyvsp[0].real),1);;}
-+    {FRB->updateFitsCmd((yyvsp[(2) - (6)].integer),BBox((yyvsp[(3) - (6)].real),(yyvsp[(4) - (6)].real),(yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),1);;}
-     break;
- 
-   case 908:
- #line 2160 "parser.Y"
--    {FRB->sliceCmd(yyvsp[0].integer);;}
-+    {FRB->sliceCmd((yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 909:
- #line 2163 "parser.Y"
--    {FRB->warpCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->warpCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 910:
- #line 2164 "parser.Y"
--    {FRB->warpToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->warpToCmd(Vector((yyvsp[(2) - (3)].real),(yyvsp[(3) - (3)].real)));;}
-     break;
- 
-   case 911:
- #line 2168 "parser.Y"
--    {FRB->wcsAlignCmd(yyvsp[-2].integer,(CoordSystem)yyvsp[-1].integer,(SkyFrame)yyvsp[0].integer);;}
-+    {FRB->wcsAlignCmd((yyvsp[(2) - (4)].integer),(CoordSystem)(yyvsp[(3) - (4)].integer),(SkyFrame)(yyvsp[(4) - (4)].integer));;}
-     break;
- 
-   case 912:
- #line 2170 "parser.Y"
--    {FRB->wcsZoomCmd((CoordSystem)yyvsp[-2].integer, Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->wcsZoomCmd((CoordSystem)(yyvsp[(2) - (4)].integer), Vector((yyvsp[(3) - (4)].real),(yyvsp[(4) - (4)].real)));;}
-     break;
- 
-   case 913:
-@@ -8148,38 +8481,38 @@
- 
-   case 914:
- #line 2172 "parser.Y"
--    {FRB->wcsReplaceCmd(yyvsp[0].integer);;}
-+    {FRB->wcsReplaceCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 915:
- #line 2173 "parser.Y"
--    {FRB->wcsReplaceCmd(yyvsp[0].str);;}
-+    {FRB->wcsReplaceCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 916:
- #line 2174 "parser.Y"
--    {FRB->wcsAppendCmd(yyvsp[0].integer);;}
-+    {FRB->wcsAppendCmd((yyvsp[(2) - (2)].integer));;}
-     break;
- 
-   case 917:
- #line 2175 "parser.Y"
--    {FRB->wcsAppendCmd(yyvsp[0].str);;}
-+    {FRB->wcsAppendCmd((yyvsp[(2) - (2)].str));;}
-     break;
- 
-   case 918:
- #line 2178 "parser.Y"
--    {FRB->zoomCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->zoomCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 919:
- #line 2180 "parser.Y"
--    {FRB->zoomAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-1].real,yyvsp[0].real),(InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),(InternalSystem)(yyvsp[(4) - (6)].integer));;}
-     break;
- 
-   case 920:
- #line 2182 "parser.Y"
--    {FRB->zoomAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[0].vector),
--	    (CoordSystem)yyvsp[-2].integer,(SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->zoomAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(6) - (6)].vector)),
-+	    (CoordSystem)(yyvsp[(4) - (6)].integer),(SkyFrame)(yyvsp[(5) - (6)].integer));;}
-     break;
- 
-   case 922:
-@@ -8189,36 +8522,35 @@
- 
-   case 923:
- #line 2188 "parser.Y"
--    {FRB->zoomToFitCmd(yyvsp[0].real);;}
-+    {FRB->zoomToFitCmd((yyvsp[(2) - (2)].real));;}
-     break;
- 
-   case 924:
- #line 2189 "parser.Y"
--    {FRB->zoomToCmd(Vector(yyvsp[-1].real,yyvsp[0].real));;}
-+    {FRB->zoomToCmd(Vector((yyvsp[(1) - (2)].real),(yyvsp[(2) - (2)].real)));;}
-     break;
- 
-   case 925:
- #line 2191 "parser.Y"
--    {FRB->zoomToAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real),Vector(yyvsp[-1].real,yyvsp[0].real),
--	    (InternalSystem)yyvsp[-2].integer);;}
-+    {FRB->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)),Vector((yyvsp[(5) - (6)].real),(yyvsp[(6) - (6)].real)),
-+	    (InternalSystem)(yyvsp[(4) - (6)].integer));;}
-     break;
- 
-   case 926:
- #line 2194 "parser.Y"
--    {FRB->zoomToAboutCmd(Vector(yyvsp[-5].real,yyvsp[-4].real), Vector(yyvsp[0].vector),
--	    (CoordSystem)yyvsp[-2].integer, (SkyFrame)yyvsp[-1].integer);;}
-+    {FRB->zoomToAboutCmd(Vector((yyvsp[(1) - (6)].real),(yyvsp[(2) - (6)].real)), Vector((yyvsp[(6) - (6)].vector)),
-+	    (CoordSystem)(yyvsp[(4) - (6)].integer), (SkyFrame)(yyvsp[(5) - (6)].integer));;}
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 8548 "parser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 8217 "parser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -8247,99 +8579,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -8349,15 +8647,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -8386,9 +8686,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -8396,11 +8697,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -8420,21 +8722,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/ds9parser.H
-+++ saods9-4.0b7/saotk/frame/ds9parser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -152,6 +162,7 @@
-      SYM_XOR = 378
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -277,16 +288,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 127 "ds9parser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 290 "ds9parser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 302 "ds9parser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -294,5 +307,3 @@
- 
- extern YYSTYPE mklval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/xyparser.H
-+++ saods9-4.0b7/saotk/frame/xyparser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -85,6 +95,7 @@
-      WCSZ_ = 311
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define HOUR 260
-@@ -143,16 +154,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 40 "xyparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 156 "xyparser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 168 "xyparser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -160,5 +173,3 @@
- 
- extern YYSTYPE xylval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/saoparser.C
-+++ saods9-4.0b7/saotk/frame/saoparser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse saoparse
- #define yylex   saolex
- #define yyerror saoerror
-@@ -80,6 +92,7 @@
-      VERSION_ = 273
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -112,8 +125,8 @@
- #define DISCARD_(x) {yyclearin; saoDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -166,16 +179,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 56 "saoparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 179 "saoparser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 198 "saoparser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -186,56 +206,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 191 "saoparser.C"
-+/* Line 216 of yacc.c.  */
-+#line 211 "saoparser.C"
-+
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
-+
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
-+# endif
-+#endif
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -245,24 +380,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -280,39 +415,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
--
--#endif
-+    while (YYID (0))
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
- #endif
- 
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  3
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   160
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  30
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  31
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  59
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  139
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   273
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       19,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -347,7 +476,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned char yyprhs[] =
-+static const yytype_uint8 yyprhs[] =
- {
-        0,     0,     3,     7,    11,    14,    15,    18,    20,    24,
-       26,    28,    30,    32,    34,    36,    38,    40,    41,    43,
-@@ -357,8 +486,8 @@
-      207,   209,   213,   215,   217,   218,   219,   223,   225,   226
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const yysigned_char yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int8 yyrhs[] =
- {
-       31,     0,    -1,    46,    32,    56,    -1,    32,    33,    34,
-       -1,    33,    34,    -1,    -1,    10,    36,    -1,    18,    -1,
-@@ -387,7 +516,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,    93,    93,    96,    97,   100,   101,   102,   103,   104,
-      107,   108,   109,   112,   113,   116,   117,   120,   121,   124,
-@@ -398,9 +527,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "STRING", "EOF_",
-@@ -418,7 +547,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,    10,
-@@ -427,7 +556,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,    30,    31,    32,    32,    33,    33,    33,    33,    33,
-       34,    34,    34,    35,    35,    36,    36,    37,    37,    38,
-@@ -438,7 +567,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     3,     3,     2,     0,     2,     1,     3,     1,
-        1,     1,     1,     1,     1,     1,     1,     0,     1,     0,
-@@ -451,7 +580,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned char yydefact[] =
-+static const yytype_uint8 yydefact[] =
- {
-       30,     0,    31,     1,     0,     7,    55,    31,     0,    32,
-        9,    16,    15,     6,     0,     0,     2,    12,    10,    11,
-@@ -469,8 +598,8 @@
-        0,    17,    17,    23,    23,    21,    21,    44,    41
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const yysigned_char yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int8 yydefgoto[] =
- {
-       -1,     1,     7,     8,    20,    44,    13,    53,    35,    59,
-       89,    90,   112,    68,   102,    60,     2,     9,    23,    33,
-@@ -481,7 +610,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -71
--static const short yypact[] =
-+static const yytype_int16 yypact[] =
- {
-      -71,    21,   119,   -71,    11,   -71,   -71,   116,    16,    31,
-      -71,   -71,   -71,   -71,    22,    16,   -71,   -71,   -71,   -71,
-@@ -500,7 +629,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const yysigned_char yypgoto[] =
-+static const yytype_int8 yypgoto[] =
- {
-      -71,   -71,   -71,    80,    71,   -10,   -71,   -28,   -27,    19,
-      -70,   -71,   -40,    -2,   -71,   -29,   -71,   -71,   -71,   -71,
-@@ -513,7 +642,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -55
--static const short yytable[] =
-+static const yytype_int16 yytable[] =
- {
-       36,    37,    38,    39,    16,    41,    45,    46,    47,    48,
-       49,    92,    51,    50,    66,    94,    69,    54,    55,    56,
-@@ -534,7 +663,7 @@
-       58
- };
- 
--static const short yycheck[] =
-+static const yytype_int16 yycheck[] =
- {
-       27,    28,    29,    30,     7,    32,    35,    36,    37,    38,
-       39,    81,    41,    40,    54,    85,    56,    45,    46,    47,
-@@ -557,7 +686,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,    31,    46,     0,    10,    18,    29,    32,    33,    47,
-       57,    13,    14,    36,    58,    33,    56,     6,    19,    20,
-@@ -575,22 +704,6 @@
-       37,    43,    43,    37,    37,    40,    40,    39,    39
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -616,30 +729,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -660,42 +806,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -704,45 +904,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -757,13 +964,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -773,45 +976,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -821,70 +1026,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
- 
--
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  if (! yyres)
-+    return yystrlen (yystr);
-+
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
-+
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -892,13 +1219,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -907,10 +1234,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -923,14 +1250,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -941,13 +1272,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -958,18 +1295,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -978,9 +1315,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -1004,8 +1341,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -1018,18 +1354,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -1040,21 +1376,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -1085,19 +1421,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -1112,7 +1446,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -1132,22 +1466,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -1194,12 +1527,12 @@
- 
-   case 13:
- #line 112 "saoparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 14:
- #line 113 "saoparser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 15:
-@@ -1214,46 +1547,46 @@
- 
-   case 23:
- #line 132 "saoparser.Y"
--    {yyval.real = 0;;}
-+    {(yyval.real) = 0;;}
-     break;
- 
-   case 24:
- #line 133 "saoparser.Y"
--    {yyval.real = yyvsp[0].real;;}
-+    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 25:
- #line 136 "saoparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 26:
- #line 139 "saoparser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
-     break;
- 
-   case 27:
- #line 143 "saoparser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 28:
- #line 151 "saoparser.Y"
--    {yyval.integer = yyvsp[0].integer;;}
-+    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 29:
- #line 155 "saoparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1289,15 +1622,15 @@
- 
-   case 35:
- #line 180 "saoparser.Y"
--    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
-+	    (yyvsp[(5) - (7)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 36:
- #line 184 "saoparser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-6].vector),
--	    yyvsp[-4].real,yyvsp[-2].real,1,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    (yyvsp[(5) - (9)].real),(yyvsp[(7) - (9)].real),1,
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1309,9 +1642,9 @@
-   case 38:
- #line 189 "saoparser.Y"
-     {
--	  aAnnuli[0] = yyvsp[-7].real;
--	  aAnnuli[1] = yyvsp[-5].real;
--	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
-+	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
-+	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
-+	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
- 	    aNum,aAnnuli,
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-@@ -1319,8 +1652,8 @@
- 
-   case 39:
- #line 197 "saoparser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-8].vector),
--	    yyvsp[-6].real,yyvsp[-4].real,yyvsp[-2].integer,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (11)].vector)),
-+	    (yyvsp[(5) - (11)].real),(yyvsp[(7) - (11)].real),(yyvsp[(9) - (11)].integer),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1329,16 +1662,16 @@
-     {
- 	  // for ellipse annulus
- 	  aStatus = 1;
--	  aCenter = Vector(yyvsp[-6].vector);
--	  aAngle = yyvsp[-2].real;
--	  aVector[0] = Vector(yyvsp[-4].vector);
-+	  aCenter = Vector((yyvsp[(3) - (9)].vector));
-+	  aAngle = (yyvsp[(7) - (9)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
- 	  aNum = 1;
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createEllipseCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+	  FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-     break;
-@@ -1347,7 +1680,7 @@
- #line 220 "saoparser.Y"
-     {	
- 	  aStatus = 2;
--	  aVector[aNum++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-@@ -1356,25 +1689,25 @@
-     {
- 	  // for box annulus
- 	  aStatus = 3;
--	  aCenter = Vector(yyvsp[-6].vector);
--	  aAngle = yyvsp[-2].real;
--	  aVector[0] = Vector(yyvsp[-4].vector);
-+	  aCenter = Vector((yyvsp[(3) - (9)].vector));
-+	  aAngle = (yyvsp[(7) - (9)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (9)].vector));
- 	  aNum = 1;
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createBoxCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+	  FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);
- 	;}
-     break;
- 
-   case 43:
- #line 242 "saoparser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1382,13 +1715,13 @@
- #line 248 "saoparser.Y"
-     {	
- 	  aStatus = 4;
--	  aVector[aNum++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNum++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-   case 45:
- #line 254 "saoparser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
- 	    color,1,font,text,localProps,localComment,taglist,cblist);;}
-     break;
- 
-@@ -1405,12 +1738,12 @@
- 
-   case 50:
- #line 266 "saoparser.Y"
--    {polylist.append(new Vertex(yyvsp[0].vector));;}
-+    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
-     break;
- 
-   case 53:
- #line 273 "saoparser.Y"
--    {aAnnuli[aNum++] = yyvsp[0].real;;}
-+    {aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 54:
-@@ -1454,19 +1787,18 @@
- 
-   case 59:
- #line 309 "saoparser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);;}
-+    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);;}
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 1796 "saoparser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 1465 "saoparser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -1495,99 +1827,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -1597,15 +1895,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -1634,9 +1934,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -1644,11 +1945,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -1668,21 +1970,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/ds9parser.Y
-+++ saods9-4.0b7/saotk/frame/ds9parser.Y
-@@ -12,8 +12,8 @@
- #define DISCARD_(x) {yyclearin; mkDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/prosparser.H
-+++ saods9-4.0b7/saotk/frame/prosparser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -62,6 +72,7 @@
-      VERSION_ = 288
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -97,16 +108,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 65 "prosparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 110 "prosparser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 122 "prosparser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -114,5 +127,3 @@
- 
- extern YYSTYPE proslval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/ciaolex.C
-+++ saods9-4.0b7/saotk/frame/ciaolex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/ciaolex.C,v 1.79 2005/08/24 20:37:45 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -412,7 +416,7 @@
-   extern ciaoFlexLexer* ciaolexx;
-   extern int ciaosign;
- /* rules */
--#line 416 "ciaolex.C"
-+#line 420 "ciaolex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -536,13 +540,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 28 "ciaolex.L"
- 
- 
--#line 546 "ciaolex.C"
-+#line 550 "ciaolex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -817,7 +821,7 @@
- #line 121 "ciaolex.L"
- ECHO;
- 	YY_BREAK
--#line 821 "ciaolex.C"
-+#line 825 "ciaolex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -1333,6 +1337,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/xyparser.Y
-+++ saods9-4.0b7/saotk/frame/xyparser.Y
-@@ -10,8 +10,8 @@
- #define FITSPTR (FR->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/callback.C
-+++ saods9-4.0b7/saotk/frame/callback.C
-@@ -2,8 +2,9 @@
- // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
- // For conditions of distribution and use, see copyright notice in "copyright"
- 
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <cstring>
-+#include <iostream>
- 
- #include "callback.h"
- 
---- saods9-4.0b7.orig/saotk/frame/parser.Y
-+++ saods9-4.0b7/saotk/frame/parser.Y
-@@ -12,8 +12,8 @@
- #define FITSPTR (FRB->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "frame.h"
---- saods9-4.0b7.orig/saotk/frame/saolex.C
-+++ saods9-4.0b7/saotk/frame/saolex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/saolex.C,v 1.76 2005/08/11 21:32:52 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -424,7 +428,7 @@
- #define DISCARD 1
- 
- /* rules */
--#line 428 "saolex.C"
-+#line 432 "saolex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -548,13 +552,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 29 "saolex.L"
- 
- 
--#line 558 "saolex.C"
-+#line 562 "saolex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -808,7 +812,7 @@
- #line 109 "saolex.L"
- ECHO;
- 	YY_BREAK
--#line 812 "saolex.C"
-+#line 816 "saolex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -1324,6 +1328,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/saoparser.H
-+++ saods9-4.0b7/saotk/frame/saoparser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -47,6 +57,7 @@
-      VERSION_ = 273
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -67,16 +78,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 56 "saoparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 80 "saoparser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 92 "saoparser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -84,5 +97,3 @@
- 
- extern YYSTYPE saolval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/ciaoparser.H
-+++ saods9-4.0b7/saotk/frame/ciaoparser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -52,6 +62,7 @@
-      VERSION_ = 278
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define HOUR 260
-@@ -77,16 +88,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 43 "ciaoparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 90 "ciaoparser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 102 "ciaoparser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -94,5 +107,3 @@
- 
- extern YYSTYPE ciaolval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/tngparser.H
-+++ saods9-4.0b7/saotk/frame/tngparser.H
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton interface for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,13 +17,21 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
- /* Tokens.  */
- #ifndef YYTOKENTYPE
-@@ -70,6 +80,7 @@
-      YELLOW_ = 296
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -113,16 +124,18 @@
- 
- 
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 60 "tngparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 1275 of yacc.c.  */
--#line 126 "tngparser.H"
-+}
-+/* Line 1529 of yacc.c.  */
-+#line 138 "tngparser.H"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -130,5 +143,3 @@
- 
- extern YYSTYPE tnglval;
- 
--
--
---- saods9-4.0b7.orig/saotk/frame/grid.C
-+++ saods9-4.0b7/saotk/frame/grid.C
-@@ -2,7 +2,7 @@
- // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
- // For conditions of distribution and use, see copyright notice in "copyright"
- 
--#include <iomanip.h>
-+#include <iomanip>
- 
- #include "grid.h"
- #include "util.h"
---- saods9-4.0b7.orig/saotk/frame/xylex.C
-+++ saods9-4.0b7/saotk/frame/xylex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/xylex.C,v 1.76 2005/08/11 21:32:53 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -446,7 +450,7 @@
-   extern xyFlexLexer* xylexx;
-   extern int xysign;
- /* rules */
--#line 450 "xylex.C"
-+#line 454 "xylex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -570,13 +574,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 28 "xylex.L"
- 
- 
--#line 580 "xylex.C"
-+#line 584 "xylex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -997,7 +1001,7 @@
- #line 145 "xylex.L"
- ECHO;
- 	YY_BREAK
--#line 1001 "xylex.C"
-+#line 1005 "xylex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -1513,6 +1517,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/ds9lex.C
-+++ saods9-4.0b7/saotk/frame/ds9lex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/ds9lex.C,v 1.98 2005/08/11 21:32:11 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -628,7 +632,7 @@
- #define DISCARD 1
- 
- /* rules */
--#line 632 "ds9lex.C"
-+#line 636 "ds9lex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -752,13 +756,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 30 "ds9lex.L"
- 
- 
--#line 762 "ds9lex.C"
-+#line 766 "ds9lex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -1579,7 +1583,7 @@
- #line 272 "ds9lex.L"
- ECHO;
- 	YY_BREAK
--#line 1583 "ds9lex.C"
-+#line 1587 "ds9lex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -2095,6 +2099,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/ciaoparser.Y
-+++ saods9-4.0b7/saotk/frame/ciaoparser.Y
-@@ -10,8 +10,8 @@
- #define FITSPTR (FR->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/prosparser.Y
-+++ saods9-4.0b7/saotk/frame/prosparser.Y
-@@ -12,8 +12,8 @@
- #define DISCARD_(x) {yyclearin; prosDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/proslex.C
-+++ saods9-4.0b7/saotk/frame/proslex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/proslex.C,v 1.76 2005/08/11 21:32:51 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -482,7 +486,7 @@
- #define DISCARD 1
- 
- /* rules */
--#line 486 "proslex.C"
-+#line 490 "proslex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -606,13 +610,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 30 "proslex.L"
- 
- 
--#line 616 "proslex.C"
-+#line 620 "proslex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -986,7 +990,7 @@
- #line 172 "proslex.L"
- ECHO;
- 	YY_BREAK
--#line 990 "proslex.C"
-+#line 994 "proslex.C"
- 
- 	case YY_END_OF_BUFFER:
- 		{
-@@ -1502,6 +1506,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/ds9parser.C
-+++ saods9-4.0b7/saotk/frame/ds9parser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse mkparse
- #define yylex   mklex
- #define yyerror mkerror
-@@ -185,6 +197,7 @@
-      SYM_XOR = 378
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -322,8 +335,8 @@
- #define DISCARD_(x) {yyclearin; mkDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -447,16 +460,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 127 "ds9parser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 460 "ds9parser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 479 "ds9parser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -467,56 +487,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 472 "ds9parser.C"
-+/* Line 216 of yacc.c.  */
-+#line 492 "ds9parser.C"
-+
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
-+
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
-+# endif
-+#endif
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -526,24 +661,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -561,39 +696,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
--
--#endif
-+    while (YYID (0))
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
- #endif
- 
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  3
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   2269
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  136
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  71
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  306
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  792
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   378
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      125,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -638,7 +767,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned short yyprhs[] =
-+static const yytype_uint16 yyprhs[] =
- {
-        0,     0,     3,     7,    11,    14,    15,    18,    20,    24,
-       27,    31,    32,    36,    37,    41,    42,    46,    50,    55,
-@@ -673,8 +802,8 @@
-     1202,  1206,  1208,  1210,  1214,  1216,  1220
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const short yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int16 yyrhs[] =
- {
-      137,     0,    -1,   180,   138,   206,    -1,   138,   139,   153,
-       -1,   139,   153,    -1,    -1,    35,   155,    -1,    84,    -1,
-@@ -802,7 +931,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,   281,   281,   284,   285,   288,   289,   290,   292,   293,
-      294,   296,   296,   297,   297,   298,   298,   300,   301,   303,
-@@ -838,9 +967,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "STRING", "HOUR",
-@@ -880,7 +1009,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -900,7 +1029,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,   136,   137,   138,   138,   139,   139,   139,   139,   139,
-      139,   140,   139,   141,   139,   142,   139,   139,   139,   139,
-@@ -936,7 +1065,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     3,     3,     2,     0,     2,     1,     3,     2,
-        3,     0,     3,     0,     3,     0,     3,     3,     4,     1,
-@@ -974,7 +1103,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned short yydefact[] =
-+static const yytype_uint16 yydefact[] =
- {
-      193,     0,   236,     1,    95,   126,     0,    94,   131,   125,
-      127,   130,     0,   129,    92,   128,    15,    93,     0,     7,
-@@ -1058,8 +1187,8 @@
-      270,   263
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const short yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int16 yydefgoto[] =
- {
-       -1,     1,    49,    50,    94,    95,    83,    51,    86,   113,
-      191,   371,   432,   501,   452,   453,   518,    93,   250,    58,
-@@ -1074,7 +1203,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -623
--static const short yypact[] =
-+static const yytype_int16 yypact[] =
- {
-     -623,    44,  1482,  -623,  -623,  -623,    -4,  -623,  -623,  -623,
-     -623,  -623,   865,  -623,  -623,  -623,  -623,  -623,    33,  -623,
-@@ -1159,7 +1288,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const short yypgoto[] =
-+static const yytype_int16 yypgoto[] =
- {
-     -623,  -623,  -623,   457,  -623,  -623,  -623,  -623,  -623,   103,
-     -623,   623,  -623,  -623,  -512,  -623,  -623,   420,   -80,  -623,
-@@ -1176,7 +1305,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -307
--static const short yytable[] =
-+static const yytype_int16 yytable[] =
- {
-      114,   592,   593,   204,   595,   206,   208,   209,   210,   211,
-       89,   -53,   214,   215,   216,   217,   218,   219,   -29,   221,
-@@ -1407,7 +1536,7 @@
-       38,    39,    40,    41,    42,    43,    44,    45,    46,    47
- };
- 
--static const short yycheck[] =
-+static const yytype_int16 yycheck[] =
- {
-       81,   513,   514,   124,   516,   126,   127,   128,   129,   130,
-       49,     5,   133,   134,   135,   136,   137,   138,     5,   140,
-@@ -1640,7 +1769,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,   137,   180,     0,    17,    22,    35,    38,    40,    48,
-       49,    51,    52,    54,    56,    58,    60,    66,    81,    84,
-@@ -1724,22 +1853,6 @@
-      147,   147
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -1765,30 +1878,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -1809,42 +1955,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -1853,45 +2053,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -1906,13 +2113,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -1922,45 +2125,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -1970,70 +2175,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
-+
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
- 
--
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
-+
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -2041,13 +2368,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -2056,10 +2383,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -2072,14 +2399,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -2090,13 +2421,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -2107,18 +2444,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -2127,9 +2464,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -2153,8 +2490,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -2167,18 +2503,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -2189,21 +2525,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -2234,19 +2570,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -2261,7 +2595,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -2281,22 +2615,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -2338,22 +2671,22 @@
- 
-   case 9:
- #line 293 "ds9parser.Y"
--    {globalTile = yyvsp[0].integer;;}
-+    {globalTile = (yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 10:
- #line 294 "ds9parser.Y"
--    {globalTile = yyvsp[0].integer;;}
-+    {globalTile = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 11:
- #line 296 "ds9parser.Y"
--    {globalSystem=(CoordSystem)yyvsp[0].integer;;}
-+    {globalSystem=(CoordSystem)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 13:
- #line 297 "ds9parser.Y"
--    {globalSystem=globalWCS; globalSky=(SkyFrame)yyvsp[0].integer;;}
-+    {globalSystem=globalWCS; globalSky=(SkyFrame)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 15:
-@@ -2378,7 +2711,7 @@
- 
-   case 27:
- #line 314 "ds9parser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);}
-+    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
-     break;
- 
-   case 29:
-@@ -2388,7 +2721,7 @@
- 
-   case 30:
- #line 317 "ds9parser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);}
-+    {strncpy(localComment,(yyvsp[(4) - (5)].str),80);}
-     break;
- 
-   case 32:
-@@ -2398,7 +2731,7 @@
- 
-   case 33:
- #line 321 "ds9parser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);}
-+    {strncpy(localComment,(yyvsp[(2) - (3)].str),80);}
-     break;
- 
-   case 35:
-@@ -2408,7 +2741,7 @@
- 
-   case 36:
- #line 323 "ds9parser.Y"
--    {strncpy(localComment,yyvsp[-1].str,80);}
-+    {strncpy(localComment,(yyvsp[(3) - (4)].str),80);}
-     break;
- 
-   case 39:
-@@ -2418,12 +2751,12 @@
- 
-   case 40:
- #line 331 "ds9parser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 41:
- #line 332 "ds9parser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 42:
-@@ -2438,47 +2771,47 @@
- 
-   case 44:
- #line 339 "ds9parser.Y"
--    {yyval.integer=(yyvsp[0].integer ? 1 : 0);;}
-+    {(yyval.integer)=((yyvsp[(1) - (1)].integer) ? 1 : 0);;}
-     break;
- 
-   case 45:
- #line 341 "ds9parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 46:
- #line 342 "ds9parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 47:
- #line 343 "ds9parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 48:
- #line 344 "ds9parser.Y"
--    {yyval.integer=1;;}
-+    {(yyval.integer)=1;;}
-     break;
- 
-   case 49:
- #line 346 "ds9parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 50:
- #line 347 "ds9parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 51:
- #line 348 "ds9parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 52:
- #line 349 "ds9parser.Y"
--    {yyval.integer=0;;}
-+    {(yyval.integer)=0;;}
-     break;
- 
-   case 59:
-@@ -2498,127 +2831,127 @@
- 
-   case 62:
- #line 369 "ds9parser.Y"
--    {yyval.real = FR->mapAngleToRef(0,localSystem,localSky);;}
-+    {(yyval.real) = FR->mapAngleToRef(0,localSystem,localSky);;}
-     break;
- 
-   case 63:
- #line 370 "ds9parser.Y"
--    {yyval.real = yyvsp[0].real;;}
-+    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 64:
- #line 373 "ds9parser.Y"
--    {yyval.real = FR->mapAngleToRef(degToRad(yyvsp[0].real),localSystem,localSky);;}
-+    {(yyval.real) = FR->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
-     break;
- 
-   case 65:
- #line 374 "ds9parser.Y"
--    {yyval.real = FR->mapAngleToRef(degToRad(yyvsp[0].real),localSystem,localSky);;}
-+    {(yyval.real) = FR->mapAngleToRef(degToRad((yyvsp[(1) - (1)].real)),localSystem,localSky);;}
-     break;
- 
-   case 66:
- #line 375 "ds9parser.Y"
--    {yyval.real = FR->mapAngleToRef(yyvsp[0].real,localSystem,localSky);;}
-+    {(yyval.real) = FR->mapAngleToRef((yyvsp[(1) - (1)].real),localSystem,localSky);;}
-     break;
- 
-   case 67:
- #line 378 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, localSystem, DEGREES);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), localSystem, DEGREES);;}
-     break;
- 
-   case 68:
- #line 379 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, PHYSICAL);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
-     break;
- 
-   case 69:
- #line 380 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, IMAGE);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), IMAGE);;}
-     break;
- 
-   case 70:
- #line 381 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), DEGREES);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), DEGREES);;}
-     break;
- 
-   case 71:
- #line 382 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCMIN);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCMIN);;}
-     break;
- 
-   case 72:
- #line 383 "ds9parser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, checkWCSSystem(), ARCSEC);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), checkWCSSystem(), ARCSEC);;}
-     break;
- 
-   case 73:
- #line 387 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, DEGREES);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, DEGREES);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 74:
- #line 394 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 75:
- #line 401 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 76:
- #line 408 "ds9parser.Y"
-     {
--	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),DEGREES);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),DEGREES);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 77:
- #line 415 "ds9parser.Y"
-     {
--	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCMIN);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCMIN);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 78:
- #line 422 "ds9parser.Y"
-     {
--	  Vector r=FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real),checkWCSSystem(),ARCSEC);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r=FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),checkWCSSystem(),ARCSEC);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 79:
- #line 430 "ds9parser.Y"
--    {yyval.integer = yyvsp[0].integer;;}
-+    {(yyval.integer) = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 80:
- #line 433 "ds9parser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 81:
-@@ -2628,13 +2961,13 @@
- 	  CoordSystem sys = checkWCSSystem();
- 	  SkyFrame sky = checkWCSSky();
- 	  if (sky == GALACTIC || sky == ECLIPTIC) 
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
- 	  else
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -2647,11 +2980,11 @@
- #line 451 "ds9parser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(hmsToDegree(mksign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real),dmsToDegree(mksign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(hmsToDegree(mksign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)),dmsToDegree(mksign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -2664,470 +2997,470 @@
- #line 461 "ds9parser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(dmsToDegree(mksign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),dmsToDegree(mksign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(dmsToDegree(mksign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),dmsToDegree(mksign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 86:
- #line 470 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 87:
- #line 477 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), 
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), 
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 88:
- #line 485 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 89:
- #line 492 "ds9parser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
- 	;}
-     break;
- 
-   case 90:
- #line 498 "ds9parser.Y"
-     {
--	  Vector rx = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[-2].real), IMAGE);
--	  Vector ry = FITSPTR->mapToRef(Vector(yyvsp[0].real,yyvsp[0].real), PHYSICAL);
--	  yyval.vector[0] = rx[0];
--	  yyval.vector[1] = ry[0];
--	  yyval.vector[2] = 1;
-+	  Vector rx = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(1) - (3)].real)), IMAGE);
-+	  Vector ry = FITSPTR->mapToRef(Vector((yyvsp[(3) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
-+	  (yyval.vector)[0] = rx[0];
-+	  (yyval.vector)[1] = ry[0];
-+	  (yyval.vector)[2] = 1;
- 	;}
-     break;
- 
-   case 91:
- #line 506 "ds9parser.Y"
-     {
--	  Vector rx = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[-2].real), PHYSICAL);
--	  Vector ry = FITSPTR->mapToRef(Vector(yyvsp[0].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = rx[0];
--	  yyval.vector[1] = ry[0];
--	  yyval.vector[2] = 1;
-+	  Vector rx = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(1) - (3)].real)), PHYSICAL);
-+	  Vector ry = FITSPTR->mapToRef(Vector((yyvsp[(3) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = rx[0];
-+	  (yyval.vector)[1] = ry[0];
-+	  (yyval.vector)[2] = 1;
- 	;}
-     break;
- 
-   case 92:
- #line 515 "ds9parser.Y"
--    {yyval.integer = IMAGE;;}
-+    {(yyval.integer) = IMAGE;;}
-     break;
- 
-   case 93:
- #line 516 "ds9parser.Y"
--    {yyval.integer = PHYSICAL;;}
-+    {(yyval.integer) = PHYSICAL;;}
-     break;
- 
-   case 94:
- #line 517 "ds9parser.Y"
--    {yyval.integer = DETECTOR;;}
-+    {(yyval.integer) = DETECTOR;;}
-     break;
- 
-   case 95:
- #line 518 "ds9parser.Y"
--    {yyval.integer = AMPLIFIER;;}
-+    {(yyval.integer) = AMPLIFIER;;}
-     break;
- 
-   case 96:
- #line 519 "ds9parser.Y"
--    {yyval.integer = yyvsp[0].integer; globalWCS = (CoordSystem)yyvsp[0].integer;;}
-+    {(yyval.integer) = (yyvsp[(1) - (1)].integer); globalWCS = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 97:
- #line 522 "ds9parser.Y"
--    {yyval.integer = WCS;;}
-+    {(yyval.integer) = WCS;;}
-     break;
- 
-   case 98:
- #line 523 "ds9parser.Y"
--    {yyval.integer = WCSA;;}
-+    {(yyval.integer) = WCSA;;}
-     break;
- 
-   case 99:
- #line 524 "ds9parser.Y"
--    {yyval.integer = WCSB;;}
-+    {(yyval.integer) = WCSB;;}
-     break;
- 
-   case 100:
- #line 525 "ds9parser.Y"
--    {yyval.integer = WCSC;;}
-+    {(yyval.integer) = WCSC;;}
-     break;
- 
-   case 101:
- #line 526 "ds9parser.Y"
--    {yyval.integer = WCSD;;}
-+    {(yyval.integer) = WCSD;;}
-     break;
- 
-   case 102:
- #line 527 "ds9parser.Y"
--    {yyval.integer = WCSE;;}
-+    {(yyval.integer) = WCSE;;}
-     break;
- 
-   case 103:
- #line 528 "ds9parser.Y"
--    {yyval.integer = WCSF;;}
-+    {(yyval.integer) = WCSF;;}
-     break;
- 
-   case 104:
- #line 529 "ds9parser.Y"
--    {yyval.integer = WCSG;;}
-+    {(yyval.integer) = WCSG;;}
-     break;
- 
-   case 105:
- #line 530 "ds9parser.Y"
--    {yyval.integer = WCSH;;}
-+    {(yyval.integer) = WCSH;;}
-     break;
- 
-   case 106:
- #line 531 "ds9parser.Y"
--    {yyval.integer = WCSI;;}
-+    {(yyval.integer) = WCSI;;}
-     break;
- 
-   case 107:
- #line 532 "ds9parser.Y"
--    {yyval.integer = WCSJ;;}
-+    {(yyval.integer) = WCSJ;;}
-     break;
- 
-   case 108:
- #line 533 "ds9parser.Y"
--    {yyval.integer = WCSK;;}
-+    {(yyval.integer) = WCSK;;}
-     break;
- 
-   case 109:
- #line 534 "ds9parser.Y"
--    {yyval.integer = WCSL;;}
-+    {(yyval.integer) = WCSL;;}
-     break;
- 
-   case 110:
- #line 535 "ds9parser.Y"
--    {yyval.integer = WCSM;;}
-+    {(yyval.integer) = WCSM;;}
-     break;
- 
-   case 111:
- #line 536 "ds9parser.Y"
--    {yyval.integer = WCSN;;}
-+    {(yyval.integer) = WCSN;;}
-     break;
- 
-   case 112:
- #line 537 "ds9parser.Y"
--    {yyval.integer = WCSO;;}
-+    {(yyval.integer) = WCSO;;}
-     break;
- 
-   case 113:
- #line 538 "ds9parser.Y"
--    {yyval.integer = WCSP;;}
-+    {(yyval.integer) = WCSP;;}
-     break;
- 
-   case 114:
- #line 539 "ds9parser.Y"
--    {yyval.integer = WCSQ;;}
-+    {(yyval.integer) = WCSQ;;}
-     break;
- 
-   case 115:
- #line 540 "ds9parser.Y"
--    {yyval.integer = WCSR;;}
-+    {(yyval.integer) = WCSR;;}
-     break;
- 
-   case 116:
- #line 541 "ds9parser.Y"
--    {yyval.integer = WCSS;;}
-+    {(yyval.integer) = WCSS;;}
-     break;
- 
-   case 117:
- #line 542 "ds9parser.Y"
--    {yyval.integer = WCST;;}
-+    {(yyval.integer) = WCST;;}
-     break;
- 
-   case 118:
- #line 543 "ds9parser.Y"
--    {yyval.integer = WCSU;;}
-+    {(yyval.integer) = WCSU;;}
-     break;
- 
-   case 119:
- #line 544 "ds9parser.Y"
--    {yyval.integer = WCSV;;}
-+    {(yyval.integer) = WCSV;;}
-     break;
- 
-   case 120:
- #line 545 "ds9parser.Y"
--    {yyval.integer = WCSW;;}
-+    {(yyval.integer) = WCSW;;}
-     break;
- 
-   case 121:
- #line 546 "ds9parser.Y"
--    {yyval.integer = WCSX;;}
-+    {(yyval.integer) = WCSX;;}
-     break;
- 
-   case 122:
- #line 547 "ds9parser.Y"
--    {yyval.integer = WCSY;;}
-+    {(yyval.integer) = WCSY;;}
-     break;
- 
-   case 123:
- #line 548 "ds9parser.Y"
--    {yyval.integer = WCSZ;;}
-+    {(yyval.integer) = WCSZ;;}
-     break;
- 
-   case 124:
- #line 549 "ds9parser.Y"
--    {yyval.integer = WCS0;;}
-+    {(yyval.integer) = WCS0;;}
-     break;
- 
-   case 125:
- #line 552 "ds9parser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 126:
- #line 553 "ds9parser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 127:
- #line 554 "ds9parser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 128:
- #line 555 "ds9parser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 129:
- #line 556 "ds9parser.Y"
--    {yyval.integer = ICRS;;}
-+    {(yyval.integer) = ICRS;;}
-     break;
- 
-   case 130:
- #line 557 "ds9parser.Y"
--    {yyval.integer = GALACTIC;;}
-+    {(yyval.integer) = GALACTIC;;}
-     break;
- 
-   case 131:
- #line 558 "ds9parser.Y"
--    {yyval.integer = ECLIPTIC;;}
-+    {(yyval.integer) = ECLIPTIC;;}
-     break;
- 
-   case 132:
- #line 561 "ds9parser.Y"
--    {yyval.integer=DEGREES;;}
-+    {(yyval.integer)=DEGREES;;}
-     break;
- 
-   case 133:
- #line 562 "ds9parser.Y"
--    {yyval.integer=ARCMIN;;}
-+    {(yyval.integer)=ARCMIN;;}
-     break;
- 
-   case 134:
- #line 563 "ds9parser.Y"
--    {yyval.integer=ARCSEC;;}
-+    {(yyval.integer)=ARCSEC;;}
-     break;
- 
-   case 135:
- #line 566 "ds9parser.Y"
--    {yyval.integer = Marker::SELECT;;}
-+    {(yyval.integer) = Marker::SELECT;;}
-     break;
- 
-   case 136:
- #line 567 "ds9parser.Y"
--    {yyval.integer = Marker::EDIT;;}
-+    {(yyval.integer) = Marker::EDIT;;}
-     break;
- 
-   case 137:
- #line 568 "ds9parser.Y"
--    {yyval.integer = Marker::MOVE;;}
-+    {(yyval.integer) = Marker::MOVE;;}
-     break;
- 
-   case 138:
- #line 569 "ds9parser.Y"
--    {yyval.integer = Marker::ROTATE;;}
-+    {(yyval.integer) = Marker::ROTATE;;}
-     break;
- 
-   case 139:
- #line 570 "ds9parser.Y"
--    {yyval.integer = Marker::DELETE;;}
-+    {(yyval.integer) = Marker::DELETE;;}
-     break;
- 
-   case 140:
- #line 571 "ds9parser.Y"
--    {yyval.integer = Marker::HIGHLITE;;}
-+    {(yyval.integer) = Marker::HIGHLITE;;}
-     break;
- 
-   case 141:
- #line 572 "ds9parser.Y"
--    {yyval.integer = Marker::INCLUDE;;}
-+    {(yyval.integer) = Marker::INCLUDE;;}
-     break;
- 
-   case 142:
- #line 573 "ds9parser.Y"
--    {yyval.integer = Marker::SOURCE;;}
-+    {(yyval.integer) = Marker::SOURCE;;}
-     break;
- 
-   case 143:
- #line 574 "ds9parser.Y"
--    {yyval.integer = Marker::FIXED;;}
-+    {(yyval.integer) = Marker::FIXED;;}
-     break;
- 
-   case 144:
- #line 577 "ds9parser.Y"
--    {yyval.integer = CallBack::SELECTCB;;}
-+    {(yyval.integer) = CallBack::SELECTCB;;}
-     break;
- 
-   case 145:
- #line 578 "ds9parser.Y"
--    {yyval.integer = CallBack::UNSELECTCB;;}
-+    {(yyval.integer) = CallBack::UNSELECTCB;;}
-     break;
- 
-   case 146:
- #line 579 "ds9parser.Y"
--    {yyval.integer = CallBack::HIGHLITECB;;}
-+    {(yyval.integer) = CallBack::HIGHLITECB;;}
-     break;
- 
-   case 147:
- #line 580 "ds9parser.Y"
--    {yyval.integer = CallBack::UNHIGHLITECB;;}
-+    {(yyval.integer) = CallBack::UNHIGHLITECB;;}
-     break;
- 
-   case 148:
- #line 581 "ds9parser.Y"
--    {yyval.integer = CallBack::MOVEBEGINCB;;}
-+    {(yyval.integer) = CallBack::MOVEBEGINCB;;}
-     break;
- 
-   case 149:
- #line 582 "ds9parser.Y"
--    {yyval.integer = CallBack::MOVECB;;}
-+    {(yyval.integer) = CallBack::MOVECB;;}
-     break;
- 
-   case 150:
- #line 583 "ds9parser.Y"
--    {yyval.integer = CallBack::MOVEENDCB;;}
-+    {(yyval.integer) = CallBack::MOVEENDCB;;}
-     break;
- 
-   case 151:
- #line 584 "ds9parser.Y"
--    {yyval.integer = CallBack::EDITBEGINCB;;}
-+    {(yyval.integer) = CallBack::EDITBEGINCB;;}
-     break;
- 
-   case 152:
- #line 585 "ds9parser.Y"
--    {yyval.integer = CallBack::EDITCB;;}
-+    {(yyval.integer) = CallBack::EDITCB;;}
-     break;
- 
-   case 153:
- #line 586 "ds9parser.Y"
--    {yyval.integer = CallBack::EDITENDCB;;}
-+    {(yyval.integer) = CallBack::EDITENDCB;;}
-     break;
- 
-   case 154:
- #line 587 "ds9parser.Y"
--    {yyval.integer = CallBack::ROTATEBEGINCB;;}
-+    {(yyval.integer) = CallBack::ROTATEBEGINCB;;}
-     break;
- 
-   case 155:
- #line 588 "ds9parser.Y"
--    {yyval.integer = CallBack::ROTATECB;;}
-+    {(yyval.integer) = CallBack::ROTATECB;;}
-     break;
- 
-   case 156:
- #line 589 "ds9parser.Y"
--    {yyval.integer = CallBack::ROTATEENDCB;;}
-+    {(yyval.integer) = CallBack::ROTATEENDCB;;}
-     break;
- 
-   case 157:
- #line 590 "ds9parser.Y"
--    {yyval.integer = CallBack::DELETECB;;}
-+    {(yyval.integer) = CallBack::DELETECB;;}
-     break;
- 
-   case 158:
- #line 591 "ds9parser.Y"
--    {yyval.integer = CallBack::TEXTCB;;}
-+    {(yyval.integer) = CallBack::TEXTCB;;}
-     break;
- 
-   case 159:
- #line 592 "ds9parser.Y"
--    {yyval.integer = CallBack::COLORCB;;}
-+    {(yyval.integer) = CallBack::COLORCB;;}
-     break;
- 
-   case 160:
- #line 593 "ds9parser.Y"
--    {yyval.integer = CallBack::LINEWIDTHCB;;}
-+    {(yyval.integer) = CallBack::LINEWIDTHCB;;}
-     break;
- 
-   case 161:
- #line 594 "ds9parser.Y"
--    {yyval.integer = CallBack::PROPERTYCB;;}
-+    {(yyval.integer) = CallBack::PROPERTYCB;;}
-     break;
- 
-   case 162:
- #line 595 "ds9parser.Y"
--    {yyval.integer = CallBack::FONTCB;;}
-+    {(yyval.integer) = CallBack::FONTCB;;}
-     break;
- 
-   case 163:
- #line 596 "ds9parser.Y"
--    {yyval.integer = CallBack::UPDATECB;;}
-+    {(yyval.integer) = CallBack::UPDATECB;;}
-     break;
- 
-   case 166:
- #line 604 "ds9parser.Y"
-     {
--	  setProps(&globalProps,yyvsp[-2].integer,yyvsp[0].integer);
--	  setProps(&localProps,yyvsp[-2].integer,yyvsp[0].integer);
-+	  setProps(&globalProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
-+	  setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));
- 	;}
-     break;
- 
-   case 167:
- #line 609 "ds9parser.Y"
-     {
--	  strncpy(globalColor,yyvsp[0].str,16);
--	  strncpy(localColor,yyvsp[0].str,16);
-+	  strncpy(globalColor,(yyvsp[(3) - (3)].str),16);
-+	  strncpy(localColor,(yyvsp[(3) - (3)].str),16);
- 	;}
-     break;
- 
-   case 168:
- #line 613 "ds9parser.Y"
--    {globalWidth = localWidth = yyvsp[0].integer;;}
-+    {globalWidth = localWidth = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 169:
- #line 615 "ds9parser.Y"
-     {
--	  strncpy(globalFont,yyvsp[0].str,32);
--	  strncpy(localFont,yyvsp[0].str,32);
-+	  strncpy(globalFont,(yyvsp[(3) - (3)].str),32);
-+	  strncpy(localFont,(yyvsp[(3) - (3)].str),32);
- 	;}
-     break;
- 
-   case 170:
- #line 620 "ds9parser.Y"
-     {
--	  strncpy(globalText,yyvsp[0].str,80);
--	  strncpy(localText,yyvsp[0].str,80);
-+	  strncpy(globalText,(yyvsp[(3) - (3)].str),80);
-+	  strncpy(localText,(yyvsp[(3) - (3)].str),80);
- 	;}
-     break;
- 
-@@ -3150,22 +3483,22 @@
-   case 173:
- #line 635 "ds9parser.Y"
-     {
--	  globalPoint = localPoint = yyvsp[0].integer;
-+	  globalPoint = localPoint = (yyvsp[(3) - (3)].integer);
- 	;}
-     break;
- 
-   case 174:
- #line 639 "ds9parser.Y"
-     {
--	  globalLine1 = localLine1 = yyvsp[-1].integer;
--	  globalLine2 = localLine2 = yyvsp[0].integer;
-+	  globalLine1 = localLine1 = (yyvsp[(3) - (4)].integer);
-+	  globalLine2 = localLine2 = (yyvsp[(4) - (4)].integer);
- 	;}
-     break;
- 
-   case 175:
- #line 644 "ds9parser.Y"
-     {
--	  globalVector = localVector = yyvsp[0].integer;
-+	  globalVector = localVector = (yyvsp[(3) - (3)].integer);
- 	;}
-     break;
- 
-@@ -3178,43 +3511,43 @@
-   case 177:
- #line 651 "ds9parser.Y"
-     {
--	  strncpy(globalCompassNorth,yyvsp[-3].str,80);
--	  strncpy(globalCompassEast,yyvsp[-2].str,80);
--	  strncpy(localCompassNorth,yyvsp[-3].str,80);
--	  strncpy(localCompassEast,yyvsp[-2].str,80);
--	  globalCompassNArrow = localCompassNArrow = yyvsp[-1].integer;
--	  globalCompassEArrow = localCompassEArrow = yyvsp[0].integer;
-+	  strncpy(globalCompassNorth,(yyvsp[(4) - (7)].str),80);
-+	  strncpy(globalCompassEast,(yyvsp[(5) - (7)].str),80);
-+	  strncpy(localCompassNorth,(yyvsp[(4) - (7)].str),80);
-+	  strncpy(localCompassEast,(yyvsp[(5) - (7)].str),80);
-+	  globalCompassNArrow = localCompassNArrow = (yyvsp[(6) - (7)].integer);
-+	  globalCompassEArrow = localCompassEArrow = (yyvsp[(7) - (7)].integer);
- 	;}
-     break;
- 
-   case 178:
- #line 660 "ds9parser.Y"
-     {
--	  globalTextAngle = localTextAngle = yyvsp[0].real;
-+	  globalTextAngle = localTextAngle = (yyvsp[(3) - (3)].real);
- 	;}
-     break;
- 
-   case 179:
- #line 663 "ds9parser.Y"
--    {globalWCS = (CoordSystem)yyvsp[0].integer;;}
-+    {globalWCS = (CoordSystem)(yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 180:
- #line 667 "ds9parser.Y"
-     {
--	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-3].integer;
--	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-2].integer;
--	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[-1].integer;
--	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
-+	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
-+	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
-+	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(4) - (4)].integer);
- 	;}
-     break;
- 
-   case 181:
- #line 674 "ds9parser.Y"
-     {
--	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
-+	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
- 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
--	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3222,10 +3555,10 @@
-   case 182:
- #line 681 "ds9parser.Y"
-     {
--	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
-+	  globalRulerCoordSystem = localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
- 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
- 	  globalRulerDistSystem = localRulerDistSystem = WCS;
--	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3233,8 +3566,8 @@
- #line 688 "ds9parser.Y"
-     {
- 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
--	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
--	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-+	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3243,9 +3576,9 @@
- #line 695 "ds9parser.Y"
-     {
- 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
--	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
-+	  globalRulerSkyFrame = localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
- 	  globalRulerDistSystem = localRulerDistSystem = WCS;
--	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3254,7 +3587,7 @@
-     {
- 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
- 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
--	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  globalRulerDistSystem = localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  globalRulerDistFormat = localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3265,7 +3598,7 @@
- 	  globalRulerCoordSystem = localRulerCoordSystem = WCS;
- 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
- 	  globalRulerDistSystem = localRulerDistSystem = WCS;
--	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3275,7 +3608,7 @@
- 	  globalRulerCoordSystem = localRulerCoordSystem = IMAGE;
- 	  globalRulerSkyFrame = localRulerSkyFrame = FK5;
- 	  globalRulerDistSystem = localRulerDistSystem = WCS;
--	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  globalRulerDistFormat = localRulerDistFormat = (SkyFormat)(yyvsp[(1) - (1)].integer);
- 	;}
-     break;
- 
-@@ -3292,15 +3625,15 @@
-   case 189:
- #line 732 "ds9parser.Y"
-     {
--	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)yyvsp[-1].integer;
--	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
-+	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-+	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-   case 190:
- #line 737 "ds9parser.Y"
-     {
--	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)yyvsp[0].integer;
-+	  globalCompassCoordSystem = localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
- 	  globalCompassSkyFrame = localCompassSkyFrame = FK5;
- 	;}
-     break;
-@@ -3309,7 +3642,7 @@
- #line 742 "ds9parser.Y"
-     {
- 	  globalCompassCoordSystem = localCompassCoordSystem = WCS;
--	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
-+	  globalCompassSkyFrame = localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
- 	;}
-     break;
- 
-@@ -3362,38 +3695,38 @@
- 
-   case 196:
- #line 794 "ds9parser.Y"
--    {setProps(&localProps,yyvsp[-2].integer,yyvsp[0].integer);;}
-+    {setProps(&localProps,(yyvsp[(1) - (3)].integer),(yyvsp[(3) - (3)].integer));;}
-     break;
- 
-   case 197:
- #line 795 "ds9parser.Y"
--    {strncpy(localColor,yyvsp[0].str,16);;}
-+    {strncpy(localColor,(yyvsp[(3) - (3)].str),16);;}
-     break;
- 
-   case 198:
- #line 796 "ds9parser.Y"
--    {localWidth = yyvsp[0].integer;;}
-+    {localWidth = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 199:
- #line 797 "ds9parser.Y"
--    {strncpy(localFont,yyvsp[0].str,32);;}
-+    {strncpy(localFont,(yyvsp[(3) - (3)].str),32);;}
-     break;
- 
-   case 200:
- #line 798 "ds9parser.Y"
--    {strncpy(localText,yyvsp[0].str,80);;}
-+    {strncpy(localText,(yyvsp[(3) - (3)].str),80);;}
-     break;
- 
-   case 201:
- #line 799 "ds9parser.Y"
--    {taglist.append(new Tag(yyvsp[0].str));;}
-+    {taglist.append(new Tag((yyvsp[(3) - (3)].str)));;}
-     break;
- 
-   case 202:
- #line 800 "ds9parser.Y"
-     {cblist.append(
--	    new CallBack(FR->getInterp(),(CallBack::Type)yyvsp[-2].integer,yyvsp[-1].str,yyvsp[0].str));;}
-+	    new CallBack(FR->getInterp(),(CallBack::Type)(yyvsp[(3) - (5)].integer),(yyvsp[(4) - (5)].str),(yyvsp[(5) - (5)].str)));;}
-     break;
- 
-   case 203:
-@@ -3408,50 +3741,50 @@
- 
-   case 205:
- #line 805 "ds9parser.Y"
--    {localPoint = yyvsp[0].integer;;}
-+    {localPoint = (yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 206:
- #line 806 "ds9parser.Y"
--    {localLine1=yyvsp[-1].integer; localLine2=yyvsp[0].integer;;}
-+    {localLine1=(yyvsp[(3) - (4)].integer); localLine2=(yyvsp[(4) - (4)].integer);;}
-     break;
- 
-   case 207:
- #line 807 "ds9parser.Y"
--    {localVector=yyvsp[0].integer;;}
-+    {localVector=(yyvsp[(3) - (3)].integer);;}
-     break;
- 
-   case 209:
- #line 810 "ds9parser.Y"
-     {
--	  strncpy(localCompassNorth,yyvsp[-3].str,80);
--	  strncpy(localCompassEast,yyvsp[-2].str,80);
--	  localCompassNArrow = yyvsp[-1].integer;
--	  localCompassEArrow = yyvsp[0].integer;
-+	  strncpy(localCompassNorth,(yyvsp[(4) - (7)].str),80);
-+	  strncpy(localCompassEast,(yyvsp[(5) - (7)].str),80);
-+	  localCompassNArrow = (yyvsp[(6) - (7)].integer);
-+	  localCompassEArrow = (yyvsp[(7) - (7)].integer);
- 	;}
-     break;
- 
-   case 210:
- #line 816 "ds9parser.Y"
--    {localTextAngle=yyvsp[0].real;;}
-+    {localTextAngle=(yyvsp[(3) - (3)].real);;}
-     break;
- 
-   case 214:
- #line 823 "ds9parser.Y"
-     {
--	  localRulerCoordSystem = (CoordSystem)yyvsp[-3].integer;
--	  localRulerSkyFrame = (SkyFrame)yyvsp[-2].integer;
--	  localRulerDistSystem = (CoordSystem)yyvsp[-1].integer;
--	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (4)].integer);
-+	  localRulerSkyFrame = (SkyFrame)(yyvsp[(2) - (4)].integer);
-+	  localRulerDistSystem = (CoordSystem)(yyvsp[(3) - (4)].integer);
-+	  localRulerDistFormat = (SkyFormat)(yyvsp[(4) - (4)].integer);
- 	;}
-     break;
- 
-   case 215:
- #line 830 "ds9parser.Y"
-     {
--	  localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
-+	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
- 	  localRulerSkyFrame = FK5;
--	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3459,10 +3792,10 @@
-   case 216:
- #line 837 "ds9parser.Y"
-     {
--	  localRulerCoordSystem = (CoordSystem)yyvsp[-1].integer;
-+	  localRulerCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
- 	  localRulerSkyFrame = FK5;
- 	  localRulerDistSystem = WCS;
--	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3470,8 +3803,8 @@
- #line 844 "ds9parser.Y"
-     {
- 	  localRulerCoordSystem = WCS;
--	  localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
--	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
-+	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3480,9 +3813,9 @@
- #line 851 "ds9parser.Y"
-     {
- 	  localRulerCoordSystem = WCS;
--	  localRulerSkyFrame = (SkyFrame)yyvsp[-1].integer;
-+	  localRulerSkyFrame = (SkyFrame)(yyvsp[(1) - (2)].integer);
- 	  localRulerDistSystem = WCS;
--	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3491,7 +3824,7 @@
-     {
- 	  localRulerCoordSystem = WCS;
- 	  localRulerSkyFrame = FK5;
--	  localRulerDistSystem = (CoordSystem)yyvsp[0].integer;
-+	  localRulerDistSystem = (CoordSystem)(yyvsp[(2) - (2)].integer);
- 	  localRulerDistFormat = DEGREES;
- 	;}
-     break;
-@@ -3502,7 +3835,7 @@
- 	  localRulerCoordSystem = WCS;
- 	  localRulerSkyFrame = FK5;
- 	  localRulerDistSystem = WCS;
--	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  localRulerDistFormat = (SkyFormat)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-@@ -3512,7 +3845,7 @@
- 	  localRulerCoordSystem = IMAGE;
- 	  localRulerSkyFrame = FK5;
- 	  localRulerDistSystem = WCS;
--	  localRulerDistFormat = (SkyFormat)yyvsp[0].integer;
-+	  localRulerDistFormat = (SkyFormat)(yyvsp[(1) - (1)].integer);
- 	;}
-     break;
- 
-@@ -3529,15 +3862,15 @@
-   case 223:
- #line 888 "ds9parser.Y"
-     {
--	  localCompassCoordSystem = (CoordSystem)yyvsp[-1].integer;
--	  localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
-+	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (2)].integer);
-+	  localCompassSkyFrame = (SkyFrame)(yyvsp[(2) - (2)].integer);
- 	;}
-     break;
- 
-   case 224:
- #line 893 "ds9parser.Y"
-     {
--	  localCompassCoordSystem = (CoordSystem)yyvsp[0].integer;
-+	  localCompassCoordSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);
- 	  localCompassSkyFrame = FK5;
- 	;}
-     break;
-@@ -3546,7 +3879,7 @@
- #line 898 "ds9parser.Y"
-     {
- 	  localCompassCoordSystem = WCS;
--	  localCompassSkyFrame = (SkyFrame)yyvsp[0].integer;
-+	  localCompassSkyFrame = (SkyFrame)(yyvsp[(1) - (1)].integer);
- 	;}
-     break;
- 
-@@ -3580,7 +3913,7 @@
- 
-   case 231:
- #line 914 "ds9parser.Y"
--    {aAngle=yyvsp[-1].real;localEpanda=2;;}
-+    {aAngle=(yyvsp[(9) - (10)].real);localEpanda=2;;}
-     break;
- 
-   case 232:
-@@ -3595,7 +3928,7 @@
- 
-   case 234:
- #line 919 "ds9parser.Y"
--    {aAngle=yyvsp[-1].real;localBpanda=2;;}
-+    {aAngle=(yyvsp[(9) - (10)].real);localBpanda=2;;}
-     break;
- 
-   case 235:
-@@ -3648,37 +3981,37 @@
- 
-   case 237:
- #line 964 "ds9parser.Y"
--    {yyval.integer = CIRCLE;;}
-+    {(yyval.integer) = CIRCLE;;}
-     break;
- 
-   case 238:
- #line 965 "ds9parser.Y"
--    {yyval.integer = BOX;;}
-+    {(yyval.integer) = BOX;;}
-     break;
- 
-   case 239:
- #line 966 "ds9parser.Y"
--    {yyval.integer = DIAMOND;;}
-+    {(yyval.integer) = DIAMOND;;}
-     break;
- 
-   case 240:
- #line 967 "ds9parser.Y"
--    {yyval.integer = CROSS;;}
-+    {(yyval.integer) = CROSS;;}
-     break;
- 
-   case 241:
- #line 968 "ds9parser.Y"
--    {yyval.integer = XPT;;}
-+    {(yyval.integer) = XPT;;}
-     break;
- 
-   case 242:
- #line 969 "ds9parser.Y"
--    {yyval.integer = ARROW;;}
-+    {(yyval.integer) = ARROW;;}
-     break;
- 
-   case 243:
- #line 970 "ds9parser.Y"
--    {yyval.integer = BOXCIRCLE;;}
-+    {(yyval.integer) = BOXCIRCLE;;}
-     break;
- 
-   case 244:
-@@ -3698,7 +4031,7 @@
- 
-   case 247:
- #line 979 "ds9parser.Y"
--    {FR->createTextCmd(Vector(yyvsp[-3].vector),
-+    {FR->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	    localTextAngle,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -3706,16 +4039,16 @@
- 
-   case 248:
- #line 984 "ds9parser.Y"
--    {FR->createCompositeCmd(Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+    {FR->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    (yyvsp[(5) - (8)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 249:
- #line 989 "ds9parser.Y"
--    {FR->createVectCmd(Vector(yyvsp[-7].vector),
--	    yyvsp[-5].real,yyvsp[-3].real,
-+    {FR->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
- 	    localVector,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -3725,9 +4058,9 @@
- #line 995 "ds9parser.Y"
-     {
- 	  // hard coded into projection.tcl
--	  FR->createProjectionCmd(Vector(yyvsp[-7].vector),
--	    Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+	  FR->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    Vector((yyvsp[(5) - (10)].vector)),
-+	    (yyvsp[(7) - (10)].real),
- 	    "ProjectionPlot", "ProjectionPlotDelete",
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
-@@ -3736,8 +4069,8 @@
- 
-   case 251:
- #line 1005 "ds9parser.Y"
--    {FR->createRulerCmd(Vector(yyvsp[-5].vector),
--	    Vector(yyvsp[-3].vector),
-+    {FR->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    Vector((yyvsp[(5) - (8)].vector)),
-    	    localRulerCoordSystem, localRulerSkyFrame,
- 	    localRulerDistSystem, localRulerDistFormat,
- 	    localColor,localWidth,localFont,
-@@ -3746,8 +4079,8 @@
- 
-   case 252:
- #line 1012 "ds9parser.Y"
--    {FR->createCompassCmd(Vector(yyvsp[-5].vector), 
--	   yyvsp[-3].real,
-+    {FR->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
-+	   (yyvsp[(5) - (8)].real),
- 	   localCompassNorth, localCompassEast, 
- 	   localCompassNArrow, localCompassEArrow,
-    	   localCompassCoordSystem, localCompassSkyFrame,
-@@ -3757,16 +4090,16 @@
- 
-   case 253:
- #line 1022 "ds9parser.Y"
--    {FR->createCircleCmd(Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+    {FR->createCircleCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    (yyvsp[(5) - (8)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 254:
- #line 1027 "ds9parser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-7].vector),
--	    yyvsp[-5].real,yyvsp[-3].real,1,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),1,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
-@@ -3774,9 +4107,9 @@
-   case 255:
- #line 1033 "ds9parser.Y"
-     {
--	  aAnnuli[0] = yyvsp[-7].real;
--	  aAnnuli[1] = yyvsp[-5].real;
--	  FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
-+	  aAnnuli[0] = (yyvsp[(5) - (12)].real);
-+	  aAnnuli[1] = (yyvsp[(7) - (12)].real);
-+	  FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
- 	    aNum,aAnnuli,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
-@@ -3785,8 +4118,8 @@
- 
-   case 256:
- #line 1043 "ds9parser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-9].vector),
--	    yyvsp[-7].real,yyvsp[-5].real,yyvsp[-3].integer,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
-+	    (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),(yyvsp[(9) - (12)].integer),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
-@@ -3798,14 +4131,14 @@
- 	  case 0: /* ignore it */
- 	    break;
- 	  case 1: /* normal cpanda */
--	    FR->createCpandaCmd(Vector(yyvsp[-15].vector),
--	      yyvsp[-13].real,yyvsp[-11].real,yyvsp[-9].integer,
--	      yyvsp[-7].real,yyvsp[-5].real,yyvsp[-3].integer,
-+	    FR->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
-+	      (yyvsp[(5) - (18)].real),(yyvsp[(7) - (18)].real),(yyvsp[(9) - (18)].integer),
-+	      (yyvsp[(11) - (18)].real),(yyvsp[(13) - (18)].real),(yyvsp[(15) - (18)].integer),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case 2: /* one of our special pandas */
--	    FR->createCpandaCmd(Vector(yyvsp[-15].vector),
-+	    FR->createCpandaCmd(Vector((yyvsp[(3) - (18)].vector)),
- 	      aAngNum,aAngles,
- 	      aNum,aAnnuli,
- 	      localColor,localWidth,localFont,
-@@ -3820,9 +4153,9 @@
-     {
- 	  // for ellipse annulus
- 	  aStatus = 1;
--	  aCenter = Vector(yyvsp[-7].vector);
--	  aAngles[0] = yyvsp[-3].real;
--	  aVector[0] = Vector(yyvsp[-5].vector);
-+	  aCenter = Vector((yyvsp[(3) - (10)].vector));
-+	  aAngles[0] = (yyvsp[(7) - (10)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
- 	  aNumsao = 1;
- 	  strncpy(aColor,localColor,16);
- 	  aWidth = localWidth;
-@@ -3831,9 +4164,9 @@
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createEllipseCmd(Vector(yyvsp[-7].vector),
--	    Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+	  FR->createEllipseCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    Vector((yyvsp[(5) - (10)].vector)),
-+	    (yyvsp[(7) - (10)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3843,9 +4176,9 @@
- #line 1093 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-9].vector),
--	    Vector(yyvsp[-7].vector),Vector(yyvsp[-5].vector),1,
--	    yyvsp[-3].real,
-+	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
-+	    Vector((yyvsp[(5) - (12)].vector)),Vector((yyvsp[(7) - (12)].vector)),1,
-+	    (yyvsp[(9) - (12)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3855,9 +4188,9 @@
- #line 1103 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-11].vector),
--	    Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
--	    yyvsp[-3].real,
-+	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
-+	    Vector((yyvsp[(5) - (14)].vector)),Vector((yyvsp[(7) - (14)].vector)),(yyvsp[(9) - (14)].integer),
-+	    (yyvsp[(11) - (14)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3867,11 +4200,11 @@
- #line 1113 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  aVector[0] = Vector(yyvsp[-9].vector);
--	  aVector[1] = Vector(yyvsp[-7].vector);
--	  FR->createEllipseAnnulusCmd(Vector(yyvsp[-11].vector),
-+	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
-+	  aVector[1] = Vector((yyvsp[(7) - (14)].vector));
-+	  FR->createEllipseAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
- 	    aNum,aVector,
--	    yyvsp[-3].real,
-+	    (yyvsp[(11) - (14)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3882,7 +4215,7 @@
-     {	
- 	  // old saoimage syntax
- 	  aStatus = 2;
--	  aVector[aNumsao++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-@@ -3893,15 +4226,15 @@
- 	  case 0: /* ignore it */
- 	    break;
- 	  case 1: /* normal epanda */
--	    FR->createEpandaCmd(Vector(yyvsp[-17].vector),
--	      yyvsp[-15].real,yyvsp[-13].real,yyvsp[-11].integer,
--	      Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
--	      yyvsp[-3].real,
-+	    FR->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
-+	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
-+	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
-+	      (yyvsp[(17) - (20)].real),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case 2: /* one of our special pandas */
--	    FR->createEpandaCmd(Vector(yyvsp[-17].vector),
-+	    FR->createEpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
- 	      aAngNum,aAngles,
- 	      aNum,aVector,
- 	      aAngle,
-@@ -3917,9 +4250,9 @@
-     {
- 	  // for box annulus
- 	  aStatus = 3;
--	  aCenter = Vector(yyvsp[-7].vector);
--	  aAngles[0] = yyvsp[-3].real;
--	  aVector[0] = Vector(yyvsp[-5].vector);
-+	  aCenter = Vector((yyvsp[(3) - (10)].vector));
-+	  aAngles[0] = (yyvsp[(7) - (10)].real);
-+	  aVector[0] = Vector((yyvsp[(5) - (10)].vector));
- 	  aNumsao = 1;
- 	  strncpy(aColor,localColor,16);
- 	  aWidth = localWidth;
-@@ -3928,9 +4261,9 @@
- 	  strncpy(aComment,localComment,80);
- 	  aProps = localProps;
- 
--	  FR->createBoxCmd(Vector(yyvsp[-7].vector),
--	    Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+	  FR->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    Vector((yyvsp[(5) - (10)].vector)),
-+	    (yyvsp[(7) - (10)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3938,9 +4271,9 @@
- 
-   case 265:
- #line 1178 "ds9parser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-7].vector),
--	    Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    Vector((yyvsp[(5) - (10)].vector)),
-+	    (yyvsp[(7) - (10)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
-@@ -3949,9 +4282,9 @@
- #line 1185 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  FR->createBoxAnnulusCmd(Vector(yyvsp[-9].vector),
--	    Vector(yyvsp[-7].vector),Vector(yyvsp[-5].vector),1,
--	    yyvsp[-3].real,
-+	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (12)].vector)),
-+	    Vector((yyvsp[(5) - (12)].vector)),Vector((yyvsp[(7) - (12)].vector)),1,
-+	    (yyvsp[(9) - (12)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3961,11 +4294,11 @@
- #line 1195 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  aVector[0] = Vector(yyvsp[-9].vector);
--	  aVector[1] = Vector(yyvsp[-7].vector);
--	  FR->createBoxAnnulusCmd(Vector(yyvsp[-11].vector),
-+	  aVector[0] = Vector((yyvsp[(5) - (14)].vector));
-+	  aVector[1] = Vector((yyvsp[(7) - (14)].vector));
-+	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
- 	    aNum,aVector,
--	    yyvsp[-3].real,
-+	    (yyvsp[(11) - (14)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3975,9 +4308,9 @@
- #line 1207 "ds9parser.Y"
-     {
- 	  // prefered syntax
--	  FR->createBoxAnnulusCmd(Vector(yyvsp[-11].vector),
--	    Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
--	    yyvsp[-3].real,
-+	  FR->createBoxAnnulusCmd(Vector((yyvsp[(3) - (14)].vector)),
-+	    Vector((yyvsp[(5) - (14)].vector)),Vector((yyvsp[(7) - (14)].vector)),(yyvsp[(9) - (14)].integer),
-+	    (yyvsp[(11) - (14)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
- 	;}
-@@ -3988,7 +4321,7 @@
-     {	
- 	  // old saoimage syntax
- 	  aStatus = 4;
--	  aVector[aNumsao++] = Vector(yyvsp[-13].vector);
-+	  aVector[aNumsao++] = Vector((yyvsp[(5) - (18)].vector));
- 	;}
-     break;
- 
-@@ -3999,15 +4332,15 @@
- 	  case 0: /* ignore it */
- 	    break;
- 	  case 1: /* normal bpanda */
--	    FR->createBpandaCmd(Vector(yyvsp[-17].vector),
--	      yyvsp[-15].real,yyvsp[-13].real,yyvsp[-11].integer,
--	      Vector(yyvsp[-9].vector),Vector(yyvsp[-7].vector),yyvsp[-5].integer,
--	      yyvsp[-3].real,
-+	    FR->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
-+	      (yyvsp[(5) - (20)].real),(yyvsp[(7) - (20)].real),(yyvsp[(9) - (20)].integer),
-+	      Vector((yyvsp[(11) - (20)].vector)),Vector((yyvsp[(13) - (20)].vector)),(yyvsp[(15) - (20)].integer),
-+	      (yyvsp[(17) - (20)].real),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case 2: /* one of our special pandas */
--	    FR->createBpandaCmd(Vector(yyvsp[-17].vector),
-+	    FR->createBpandaCmd(Vector((yyvsp[(3) - (20)].vector)),
- 	      aAngNum,aAngles,
- 	      aNum,aVector,
- 	      aAngle,
-@@ -4020,8 +4353,8 @@
- 
-   case 271:
- #line 1249 "ds9parser.Y"
--    {FR->createLineCmd(Vector(yyvsp[-5].vector),
--	    Vector(yyvsp[-3].vector),
-+    {FR->createLineCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    Vector((yyvsp[(5) - (8)].vector)),
- 	    localLine1,localLine2,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -4032,37 +4365,37 @@
-     {
- 	  switch (localPoint) {
- 	  case CIRCLE:
--	    FR->createCirclePointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case BOX:
--	    FR->createBoxPointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createBoxPointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case DIAMOND:
--	    FR->createDiamondPointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createDiamondPointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case CROSS:
--	    FR->createCrossPointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createCrossPointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case XPT:
--	    FR->createExPointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createExPointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case ARROW:
--	    FR->createArrowPointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createArrowPointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
- 	  case BOXCIRCLE:
--	    FR->createBoxCirclePointCmd(Vector(yyvsp[-3].vector),
-+	    FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	      localColor,localWidth,localFont,
- 	      localText,localProps,localComment,taglist,cblist);
- 	    break;
-@@ -4072,49 +4405,49 @@
- 
-   case 273:
- #line 1296 "ds9parser.Y"
--    {FR->createCirclePointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 274:
- #line 1300 "ds9parser.Y"
--    {FR->createBoxPointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createBoxPointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 275:
- #line 1304 "ds9parser.Y"
--    {FR->createDiamondPointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createDiamondPointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 276:
- #line 1308 "ds9parser.Y"
--    {FR->createCrossPointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createCrossPointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 277:
- #line 1312 "ds9parser.Y"
--    {FR->createExPointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createExPointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 278:
- #line 1316 "ds9parser.Y"
--    {FR->createArrowPointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createArrowPointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 279:
- #line 1320 "ds9parser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[-3].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(4) - (7)].vector)),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
-@@ -4133,7 +4466,7 @@
- 
-   case 286:
- #line 1337 "ds9parser.Y"
--    {FR->createTextCmd(Vector(yyvsp[-3].vector),
-+    {FR->createTextCmd(Vector((yyvsp[(3) - (6)].vector)),
- 	    localTextAngle,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -4141,12 +4474,12 @@
- 
-   case 287:
- #line 1341 "ds9parser.Y"
--    {strncpy(localText,yyvsp[-1].str,80);;}
-+    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
-     break;
- 
-   case 288:
- #line 1343 "ds9parser.Y"
--    {FR->createTextCmd(Vector(yyvsp[-6].vector),
-+    {FR->createTextCmd(Vector((yyvsp[(3) - (9)].vector)),
- 	    localTextAngle,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -4154,16 +4487,16 @@
- 
-   case 289:
- #line 1348 "ds9parser.Y"
--    {FR->createCompositeCmd(Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+    {FR->createCompositeCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    (yyvsp[(5) - (8)].real),
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 290:
- #line 1353 "ds9parser.Y"
--    {FR->createVectCmd(Vector(yyvsp[-7].vector),
--	    yyvsp[-5].real,yyvsp[-3].real,
-+    {FR->createVectCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    (yyvsp[(5) - (10)].real),(yyvsp[(7) - (10)].real),
- 	    localVector,
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);;}
-@@ -4173,9 +4506,9 @@
- #line 1359 "ds9parser.Y"
-     {
- 	  // hard coded into projection.tcl
--	  FR->createProjectionCmd(Vector(yyvsp[-7].vector),
--	    Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,
-+	  FR->createProjectionCmd(Vector((yyvsp[(3) - (10)].vector)),
-+	    Vector((yyvsp[(5) - (10)].vector)),
-+	    (yyvsp[(7) - (10)].real),
- 	    "ProjectionPlot", "ProjectionPlotDelete",
- 	    localColor,localWidth,localFont,
- 	    localText,localProps,localComment,taglist,cblist);
-@@ -4184,8 +4517,8 @@
- 
-   case 292:
- #line 1369 "ds9parser.Y"
--    {FR->createRulerCmd(Vector(yyvsp[-5].vector),
--	    Vector(yyvsp[-3].vector),
-+    {FR->createRulerCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    Vector((yyvsp[(5) - (8)].vector)),
-    	    localRulerCoordSystem, localRulerSkyFrame,
- 	    localRulerDistSystem, localRulerDistFormat,
- 	    localColor,localWidth,localFont,
-@@ -4194,8 +4527,8 @@
- 
-   case 293:
- #line 1376 "ds9parser.Y"
--    {FR->createCompassCmd(Vector(yyvsp[-5].vector), 
--	   yyvsp[-3].real,
-+    {FR->createCompassCmd(Vector((yyvsp[(3) - (8)].vector)), 
-+	   (yyvsp[(5) - (8)].real),
- 	   localCompassNorth, localCompassEast, 
- 	   localCompassNArrow, localCompassEArrow,
-    	   localCompassCoordSystem, localCompassSkyFrame,
-@@ -4205,14 +4538,14 @@
- 
-   case 296:
- #line 1389 "ds9parser.Y"
--    {polylist.append(new Vertex(yyvsp[0].vector));;}
-+    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
-     break;
- 
-   case 299:
- #line 1397 "ds9parser.Y"
-     {
- 	  if (aNum < MAXANNULI)
--	    aAnnuli[aNum++] = yyvsp[0].real;
-+	    aAnnuli[aNum++] = (yyvsp[(1) - (1)].real);
- 	;}
-     break;
- 
-@@ -4220,13 +4553,13 @@
- #line 1408 "ds9parser.Y"
-     {
- 	  if (aAngNum < MAXANGLES)
--	    aAngles[aAngNum++] = yyvsp[0].real;
-+	    aAngles[aAngNum++] = (yyvsp[(1) - (1)].real);
- 	;}
-     break;
- 
-   case 305:
- #line 1418 "ds9parser.Y"
--    {aVector[aNum++] = Vector(yyvsp[-2].real,yyvsp[0].real);;}
-+    {aVector[aNum++] = Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real));;}
-     break;
- 
-   case 306:
-@@ -4260,15 +4593,14 @@
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 4598 "ds9parser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 4267 "ds9parser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -4297,99 +4629,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -4399,15 +4697,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -4436,9 +4736,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -4446,11 +4747,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -4470,21 +4772,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/tngparser.C
-+++ saods9-4.0b7/saotk/frame/tngparser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse tngparse
- #define yylex   tnglex
- #define yyerror tngerror
-@@ -103,6 +115,7 @@
-      YELLOW_ = 296
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define STRING 260
-@@ -158,8 +171,8 @@
- #define DISCARD_(x) {yyclearin; tngDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -216,16 +229,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 60 "tngparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 229 "tngparser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 248 "tngparser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -236,56 +256,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 241 "tngparser.C"
-+/* Line 216 of yacc.c.  */
-+#line 261 "tngparser.C"
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+#endif
-+
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-+
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
-+# endif
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -295,24 +430,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -330,39 +465,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
-+    while (YYID (0))
- 
- #endif
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
--#endif
--
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  3
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   136
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  51
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  33
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  80
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  143
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   296
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       42,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -399,7 +528,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned char yyprhs[] =
-+static const yytype_uint8 yyprhs[] =
- {
-        0,     0,     3,     6,    10,    13,    14,    17,    19,    23,
-       25,    27,    29,    31,    33,    35,    37,    39,    40,    42,
-@@ -412,8 +541,8 @@
-      234
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const yysigned_char yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int8 yyrhs[] =
- {
-       52,     0,    -1,    68,    53,    -1,    53,    54,    55,    -1,
-       54,    55,    -1,    -1,    16,    57,    -1,    39,    -1,    69,
-@@ -442,7 +571,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,   123,   123,   126,   127,   130,   131,   132,   133,   134,
-      137,   138,   139,   142,   143,   146,   147,   150,   151,   154,
-@@ -456,9 +585,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "STRING", "DEGREE",
-@@ -480,7 +609,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -492,7 +621,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,    51,    52,    53,    53,    54,    54,    54,    54,    54,
-       55,    55,    55,    56,    56,    57,    57,    58,    58,    59,
-@@ -506,7 +635,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     2,     3,     2,     0,     2,     1,     3,     1,
-        1,     1,     1,     1,     1,     1,     1,     0,     1,     0,
-@@ -522,7 +651,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned char yydefact[] =
-+static const yytype_uint8 yydefact[] =
- {
-       38,     0,    39,     1,     0,     7,    60,    39,     0,    40,
-        9,    16,    15,     6,     0,     0,     0,     0,     0,    12,
-@@ -541,8 +670,8 @@
-       49,    45,    44
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const short yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int16 yydefgoto[] =
- {
-       -1,     1,     7,     8,    22,    63,    13,    80,    46,    88,
-      131,   132,   101,    99,    64,    89,    77,     2,     9,    25,
-@@ -553,7 +682,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -87
--static const short yypact[] =
-+static const yytype_int16 yypact[] =
- {
-      -87,     6,    -5,   -87,   -18,   -87,   -13,     0,    -7,   -28,
-      -87,   -87,   -87,   -87,   -41,   -22,    -4,    42,    -7,   -87,
-@@ -573,7 +702,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const yysigned_char yypgoto[] =
-+static const yytype_int8 yypgoto[] =
- {
-      -87,   -87,   -87,    89,    79,     9,   -87,     1,    76,   -86,
-      -17,   -87,   -87,    17,    30,   -23,   -87,   -87,   -87,   -87,
-@@ -586,7 +715,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -22
--static const short yytable[] =
-+static const yytype_int16 yytable[] =
- {
-       -2,    19,    14,    -5,   107,    41,     3,    15,    -5,    26,
-       16,     4,    11,    12,    42,   111,     4,   113,   -21,    23,
-@@ -604,7 +733,7 @@
-        0,    75,    59,    60,    76,    61,    62
- };
- 
--static const short yycheck[] =
-+static const yytype_int16 yycheck[] =
- {
-        0,     8,    15,     8,    90,    17,     0,    20,     8,    50,
-       23,    16,    30,    31,    26,   101,    16,   103,     8,    47,
-@@ -624,7 +753,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,    52,    68,     0,    16,    39,    49,    53,    54,    69,
-       76,    30,    31,    57,    15,    20,    23,    79,    54,     8,
-@@ -643,22 +772,6 @@
-       80,    80,    80
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -684,30 +797,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -728,42 +874,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -772,45 +972,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -825,13 +1032,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -841,45 +1044,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -889,70 +1094,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
- 
--
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
-+
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
-+
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -960,13 +1287,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -975,10 +1302,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -991,14 +1318,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -1009,13 +1340,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -1026,18 +1363,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -1046,9 +1383,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -1072,8 +1409,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -1086,18 +1422,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -1108,21 +1444,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -1153,19 +1489,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -1180,7 +1514,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -1200,22 +1534,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -1262,12 +1595,12 @@
- 
-   case 13:
- #line 142 "tngparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 14:
- #line 143 "tngparser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 15:
-@@ -1282,42 +1615,42 @@
- 
-   case 23:
- #line 162 "tngparser.Y"
--    {yyval.real = 0;;}
-+    {(yyval.real) = 0;;}
-     break;
- 
-   case 24:
- #line 163 "tngparser.Y"
--    {yyval.real = yyvsp[0].real;;}
-+    {(yyval.real) = (yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 25:
- #line 166 "tngparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 26:
- #line 167 "tngparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 27:
- #line 170 "tngparser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real,IMAGE);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real),IMAGE);;}
-     break;
- 
-   case 28:
- #line 174 "tngparser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), IMAGE);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), IMAGE);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 29:
- #line 182 "tngparser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 30:
-@@ -1327,60 +1660,60 @@
- 	  CoordSystem sys = checkWCSSystem();
- 	  SkyFrame sky = checkWCSSky();
- 	  if (sky == GALACTIC || sky == ECLIPTIC) 
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), sys, sky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), sys, sky);
- 	  else
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real), sys, sky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)), sys, sky);
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 31:
- #line 200 "tngparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), localSystem, localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), localSystem, localSky);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 32:
- #line 207 "tngparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),
- 	    checkWCSSystem(), checkWCSSky());
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 33:
- #line 216 "tngparser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 34:
- #line 217 "tngparser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 35:
- #line 218 "tngparser.Y"
--    {yyval.integer = GALACTIC;;}
-+    {(yyval.integer) = GALACTIC;;}
-     break;
- 
-   case 36:
- #line 219 "tngparser.Y"
--    {yyval.integer = ECLIPTIC;;}
-+    {(yyval.integer) = ECLIPTIC;;}
-     break;
- 
-   case 37:
- #line 220 "tngparser.Y"
--    {yyval.integer = ICRS;;}
-+    {(yyval.integer) = ICRS;;}
-     break;
- 
-   case 38:
-@@ -1431,34 +1764,34 @@
- 
-   case 43:
- #line 256 "tngparser.Y"
--    {FR->createCircleCmd(Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createCircleCmd(Vector((yyvsp[(3) - (7)].vector)),
-+	    (yyvsp[(5) - (7)].real),
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 44:
- #line 262 "tngparser.Y"
--    {FR->createEllipseCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createEllipseCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 45:
- #line 269 "tngparser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-6].vector),
--	    Vector(yyvsp[-4].vector),
--	    yyvsp[-2].real,
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (9)].vector)),
-+	    Vector((yyvsp[(5) - (9)].vector)),
-+	    (yyvsp[(7) - (9)].real),
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 46:
- #line 276 "tngparser.Y"
--    {FR->createLineCmd(Vector(yyvsp[-4].vector),
--	    Vector(yyvsp[-2].vector),
-+    {FR->createLineCmd(Vector((yyvsp[(3) - (7)].vector)),
-+	    Vector((yyvsp[(5) - (7)].vector)),
- 	    0,0,
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-@@ -1466,19 +1799,19 @@
- 
-   case 47:
- #line 283 "tngparser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[-2].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (5)].vector)),
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-     break;
- 
-   case 48:
- #line 287 "tngparser.Y"
--    {strncpy(localText,yyvsp[-1].str,80);;}
-+    {strncpy(localText,(yyvsp[(5) - (6)].str),80);;}
-     break;
- 
-   case 49:
- #line 288 "tngparser.Y"
--    {FR->createTextCmd(Vector(yyvsp[-5].vector),
-+    {FR->createTextCmd(Vector((yyvsp[(3) - (8)].vector)),
- 	    0,
- 	    localColor,1,globalFont,localText,
- 	    localProps,localComment,taglist,cblist);;}
-@@ -1498,7 +1831,7 @@
- 
-   case 54:
- #line 303 "tngparser.Y"
--    {polylist.append(new Vertex(yyvsp[0].vector));;}
-+    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
-     break;
- 
-   case 56:
-@@ -1518,7 +1851,7 @@
- 
-   case 61:
- #line 309 "tngparser.Y"
--    {strncpy(globalText,yyvsp[0].str,80);;}
-+    {strncpy(globalText,(yyvsp[(3) - (3)].str),80);;}
-     break;
- 
-   case 63:
-@@ -1584,7 +1917,7 @@
- 
-   case 74:
- #line 331 "tngparser.Y"
--    {strncpy(localComment,yyvsp[0].str,80);;}
-+    {strncpy(localComment,(yyvsp[(3) - (3)].str),80);;}
-     break;
- 
-   case 77:
-@@ -1609,20 +1942,19 @@
- #line 346 "tngparser.Y"
-     {
- 	    globalSystem = localSystem = WCS;
--	    globalSky = localSky = (SkyFrame)yyvsp[-1].integer;
-+	    globalSky = localSky = (SkyFrame)(yyvsp[(2) - (3)].integer);
- 	  ;}
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 1952 "tngparser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 1621 "tngparser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -1651,99 +1983,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -1753,15 +2051,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -1790,9 +2090,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -1800,11 +2101,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -1824,21 +2126,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/fitsimage.h
-+++ saods9-4.0b7/saotk/frame/fitsimage.h
-@@ -12,7 +12,7 @@
- 
- class FitsFile;
- 
--#include "wcs.h"
-+#include "../../wcssubs-3.5.6/wcs.h"
- 
- class FitsImage {
- protected:
-@@ -405,33 +405,33 @@
-   char* getKeyword(const char*);
-   int findKeyword(const char*);
- 
--  int FitsImage::saveFitsImageFile(const char* fn, int compress)
-+  int saveFitsImageFile(const char* fn, int compress)
-     {return image_ ? image_->saveFitsImageFile(fn, compress) : 0;}
- 
--  int FitsImage::saveFitsImageChannel(Tcl_Interp* interp, const char* ch, 
-+  int saveFitsImageChannel(Tcl_Interp* interp, const char* ch, 
- 				      int compress)
-     {return image_ ? image_->saveFitsImageChannel(interp, ch, compress) : 0;}
- 
--  int FitsImage::saveFitsImageSocket(int s, int compress)
-+  int saveFitsImageSocket(int s, int compress)
-     {return image_ ? image_->saveFitsImageSocket(s, compress) : 0;}
- 
--  int FitsImage::saveFitsTableFile(const char* fn, int compress)
-+  int saveFitsTableFile(const char* fn, int compress)
-     {return fits_ ? fits_->saveFitsTableFile(fn, compress) : 0;}
- 
--  int FitsImage::saveFitsTableChannel(Tcl_Interp* interp, const char* ch, 
-+  int saveFitsTableChannel(Tcl_Interp* interp, const char* ch, 
- 				      int compress)
-     {return fits_ ? fits_->saveFitsTableChannel(interp, ch, compress): 0;}
- 
--  int FitsImage::saveFitsTableSocket(int s, int compress)
-+  int saveFitsTableSocket(int s, int compress)
-     {return fits_ ? fits_->saveFitsTableSocket(s, compress) : 0;}
- 
--  int FitsImage::saveArrayFile(const char* fn)
-+  int saveArrayFile(const char* fn)
-     {return image_ ? image_->saveArrayFile(fn) : 0;}
- 
--  int FitsImage::saveArrayChannel(Tcl_Interp* interp, const char* ch)
-+  int saveArrayChannel(Tcl_Interp* interp, const char* ch)
-     {return image_ ? image_->saveArrayChannel(interp, ch) : 0;}
- 
--  int FitsImage::saveArraySocket(int s)
-+  int saveArraySocket(int s)
-     {return image_ ? image_->saveArraySocket(s) : 0;}
- };
- 
---- saods9-4.0b7.orig/saotk/frame/contourscale.C
-+++ saods9-4.0b7/saotk/frame/contourscale.C
-@@ -3,7 +3,7 @@
- // For conditions of distribution and use, see copyright notice in "copyright"
- 
- #include <math.h>
--#include <iostream.h>
-+#include <iostream>
- 
- #include "contourscale.h"
- #include "framebase.h"
---- saods9-4.0b7.orig/saotk/frame/lex.C
-+++ saods9-4.0b7/saotk/frame/lex.C
-@@ -4,7 +4,7 @@
- /* A lexical scanner generated by flex */
- 
- /* Scanner skeleton version:
-- * $Header: /proj/rd/cvsroot/saods9/saotk/frame/lex.C,v 1.181 2005/08/24 21:41:24 joye Exp $
-+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
-  */
- 
- #define FLEX_SCANNER
-@@ -12,7 +12,6 @@
- #define YY_FLEX_MINOR_VERSION 5
- 
- 
--
- /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
- #ifdef c_plusplus
- #ifndef __cplusplus
-@@ -24,8 +23,12 @@
- #ifdef __cplusplus
- 
- #include <stdlib.h>
--#include <iostream>
--using namespace std;
-+#include <fstream>
-+using std::istream;
-+using std::ostream;
-+#ifndef _WIN32
-+#include <unistd.h>
-+#endif
- 
- /* Use prototypes in function declarations. */
- #define YY_USE_PROTOS
-@@ -65,6 +68,7 @@
- #define YY_PROTO(proto) ()
- #endif
- 
-+
- /* Returned upon end-of-file. */
- #define YY_NULL 0
- 
-@@ -995,7 +999,7 @@
-   extern frFlexLexer* frlexx;
-   extern int frsign;
- /* rules */
--#line 999 "lex.C"
-+#line 1003 "lex.C"
- 
- /* Macros after this point can all be overridden by user definitions in
-  * section 1.
-@@ -1119,13 +1123,13 @@
- YY_DECL
- 	{
- 	register yy_state_type yy_current_state;
--	register char *yy_cp = NULL, *yy_bp = NULL;
-+	register char *yy_cp, *yy_bp;
- 	register int yy_act;
- 
- #line 29 "lex.L"
- 
- 
--#line 1129 "lex.C"
-+#line 1133 "lex.C"
- 
- 	if ( yy_init )
- 		{
-@@ -2810,7 +2814,7 @@
- #line 417 "lex.L"
- ECHO;
- 	YY_BREAK
--#line 2814 "lex.C"
-+#line 2818 "lex.C"
- case YY_STATE_EOF(INITIAL):
- 	yyterminate();
- 
-@@ -3328,6 +3332,7 @@
- 	return c;
- 	}
- 
-+
- void yyFlexLexer::yyrestart( istream* input_file )
- 	{
- 	if ( ! yy_current_buffer )
---- saods9-4.0b7.orig/saotk/frame/xyparser.C
-+++ saods9-4.0b7/saotk/frame/xyparser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse xyparse
- #define yylex   xylex
- #define yyerror xyerror
-@@ -118,6 +130,7 @@
-      WCSZ_ = 311
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define HOUR 260
-@@ -186,8 +199,8 @@
- #define FITSPTR (FR->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -226,16 +239,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 40 "xyparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 239 "xyparser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 258 "xyparser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -246,56 +266,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 251 "xyparser.C"
-+/* Line 216 of yacc.c.  */
-+#line 271 "xyparser.C"
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+#endif
-+
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-+
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
-+# endif
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -305,24 +440,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -340,39 +475,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
-+    while (YYID (0))
- 
- #endif
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
--#endif
--
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  3
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   138
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  60
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  20
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  75
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  96
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   311
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       57,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -411,7 +540,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned char yyprhs[] =
-+static const yytype_uint8 yyprhs[] =
- {
-        0,     0,     3,     4,     7,    11,    14,    15,    18,    20,
-       22,    25,    26,    30,    31,    33,    36,    38,    40,    42,
-@@ -423,8 +552,8 @@
-      161,   163,   165,   167,   169,   171
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const yysigned_char yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int8 yyrhs[] =
- {
-       61,     0,    -1,    -1,    62,    63,    -1,    63,    64,    69,
-       -1,    64,    69,    -1,    -1,    16,    71,    -1,    29,    -1,
-@@ -447,7 +576,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned short yyrline[] =
-+static const yytype_uint16 yyrline[] =
- {
-        0,   115,   115,   115,   121,   122,   125,   126,   127,   128,
-      129,   131,   131,   134,   135,   138,   139,   142,   145,   146,
-@@ -460,9 +589,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "HOUR", "MINUTE",
-@@ -482,7 +611,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -494,7 +623,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,    60,    62,    61,    63,    63,    64,    64,    64,    64,
-       64,    65,    64,    66,    66,    67,    67,    68,    69,    69,
-@@ -507,7 +636,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     0,     2,     3,     2,     0,     2,     1,     1,
-        2,     0,     3,     0,     1,     2,     1,     1,     1,     1,
-@@ -522,7 +651,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned char yydefact[] =
-+static const yytype_uint8 yydefact[] =
- {
-        2,     0,    11,     1,    39,    38,     0,    40,    35,    36,
-       37,     8,    41,    42,    43,    44,    45,    46,    47,    48,
-@@ -536,8 +665,8 @@
-        0,     0,     0,     0,    32,    30
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const yysigned_char yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int8 yydefgoto[] =
- {
-       -1,     1,     2,    39,    40,    41,    76,    77,    78,    50,
-       79,    45,    72,    57,    58,    87,    86,    42,    67,    59
-@@ -546,7 +675,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -46
--static const yysigned_char yypact[] =
-+static const yytype_int8 yypact[] =
- {
-      -46,     4,    47,   -46,   -46,   -46,   -24,   -46,   -46,   -46,
-      -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,   -46,
-@@ -561,7 +690,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const yysigned_char yypgoto[] =
-+static const yytype_int8 yypgoto[] =
- {
-      -46,   -46,   -46,   -46,    73,   -46,   -46,   -46,    36,    69,
-       33,   -46,    51,    42,   -46,   -46,   -46,   -46,   -46,   -46
-@@ -572,7 +701,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -7
--static const yysigned_char yytable[] =
-+static const yytype_int8 yytable[] =
- {
-       -3,    60,    43,    44,     3,    61,    62,    63,    64,    65,
-       69,    66,    -6,     4,    71,     5,     6,     7,    75,    52,
-@@ -590,7 +719,7 @@
-        0,     0,     0,     0,     0,     0,     0,    88,    89
- };
- 
--static const yysigned_char yycheck[] =
-+static const yytype_int8 yycheck[] =
- {
-        0,    14,    26,    27,     0,    18,    19,    20,    21,    22,
-        9,    24,    12,    13,    59,    15,    16,    17,     3,     4,
-@@ -610,7 +739,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,    61,    62,     0,    13,    15,    16,    17,    23,    25,
-       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-@@ -624,22 +753,6 @@
-        3,     3,     9,     9,    10,    10
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -665,30 +778,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -709,42 +855,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -753,45 +953,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -806,13 +1013,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -822,45 +1025,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -870,70 +1075,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
- 
--
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
-+
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
-+
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -941,13 +1268,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -956,10 +1283,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -972,14 +1299,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -990,13 +1321,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -1007,18 +1344,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -1027,9 +1364,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -1053,8 +1390,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -1067,18 +1403,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -1089,21 +1425,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -1134,19 +1470,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -1161,7 +1495,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -1181,22 +1515,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -1246,12 +1579,12 @@
- 
-   case 9:
- #line 128 "xyparser.Y"
--    {globalSystem = (CoordSystem)yyvsp[0].integer;;}
-+    {globalSystem = (CoordSystem)(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 10:
- #line 130 "xyparser.Y"
--    {globalSystem = (CoordSystem)yyvsp[-1].integer; globalSky = (SkyFrame)yyvsp[0].integer;;}
-+    {globalSystem = (CoordSystem)(yyvsp[(1) - (2)].integer); globalSky = (SkyFrame)(yyvsp[(2) - (2)].integer);;}
-     break;
- 
-   case 11:
-@@ -1271,12 +1604,12 @@
- 
-   case 21:
- #line 150 "xyparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 22:
- #line 151 "xyparser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 23:
-@@ -1291,7 +1624,7 @@
- 
-   case 27:
- #line 162 "xyparser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 28:
-@@ -1299,13 +1632,13 @@
-     {
- 	  Vector r;
- 	  if (localSky == GALACTIC || localSky == ECLIPTIC) 
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
- 	  else
--	    r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real),localSystem,localSky);
-+	    r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),localSystem,localSky);
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1318,12 +1651,12 @@
- #line 178 "xyparser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(hmsToDegree(xysign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
--	    dmsToDegree(xysign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(hmsToDegree(xysign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
-+	    dmsToDegree(xysign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    localSystem, localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1336,238 +1669,238 @@
- #line 189 "xyparser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(dmsToDegree(xysign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
--	    dmsToDegree(xysign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(dmsToDegree(xysign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
-+	    dmsToDegree(xysign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    localSystem, localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 33:
- #line 199 "xyparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 34:
- #line 206 "xyparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real),localSystem,localSky);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)),localSystem,localSky);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 35:
- #line 214 "xyparser.Y"
--    {yyval.integer = IMAGE;;}
-+    {(yyval.integer) = IMAGE;;}
-     break;
- 
-   case 36:
- #line 215 "xyparser.Y"
--    {yyval.integer = IMAGE;;}
-+    {(yyval.integer) = IMAGE;;}
-     break;
- 
-   case 37:
- #line 216 "xyparser.Y"
--    {yyval.integer = PHYSICAL;;}
-+    {(yyval.integer) = PHYSICAL;;}
-     break;
- 
-   case 38:
- #line 217 "xyparser.Y"
--    {yyval.integer = PHYSICAL;;}
-+    {(yyval.integer) = PHYSICAL;;}
-     break;
- 
-   case 39:
- #line 218 "xyparser.Y"
--    {yyval.integer = AMPLIFIER;;}
-+    {(yyval.integer) = AMPLIFIER;;}
-     break;
- 
-   case 40:
- #line 219 "xyparser.Y"
--    {yyval.integer = DETECTOR;;}
-+    {(yyval.integer) = DETECTOR;;}
-     break;
- 
-   case 41:
- #line 220 "xyparser.Y"
--    {yyval.integer = WCS;;}
-+    {(yyval.integer) = WCS;;}
-     break;
- 
-   case 42:
- #line 221 "xyparser.Y"
--    {yyval.integer = WCSA;;}
-+    {(yyval.integer) = WCSA;;}
-     break;
- 
-   case 43:
- #line 222 "xyparser.Y"
--    {yyval.integer = WCSB;;}
-+    {(yyval.integer) = WCSB;;}
-     break;
- 
-   case 44:
- #line 223 "xyparser.Y"
--    {yyval.integer = WCSC;;}
-+    {(yyval.integer) = WCSC;;}
-     break;
- 
-   case 45:
- #line 224 "xyparser.Y"
--    {yyval.integer = WCSD;;}
-+    {(yyval.integer) = WCSD;;}
-     break;
- 
-   case 46:
- #line 225 "xyparser.Y"
--    {yyval.integer = WCSE;;}
-+    {(yyval.integer) = WCSE;;}
-     break;
- 
-   case 47:
- #line 226 "xyparser.Y"
--    {yyval.integer = WCSF;;}
-+    {(yyval.integer) = WCSF;;}
-     break;
- 
-   case 48:
- #line 227 "xyparser.Y"
--    {yyval.integer = WCSG;;}
-+    {(yyval.integer) = WCSG;;}
-     break;
- 
-   case 49:
- #line 228 "xyparser.Y"
--    {yyval.integer = WCSH;;}
-+    {(yyval.integer) = WCSH;;}
-     break;
- 
-   case 50:
- #line 229 "xyparser.Y"
--    {yyval.integer = WCSI;;}
-+    {(yyval.integer) = WCSI;;}
-     break;
- 
-   case 51:
- #line 230 "xyparser.Y"
--    {yyval.integer = WCSJ;;}
-+    {(yyval.integer) = WCSJ;;}
-     break;
- 
-   case 52:
- #line 231 "xyparser.Y"
--    {yyval.integer = WCSK;;}
-+    {(yyval.integer) = WCSK;;}
-     break;
- 
-   case 53:
- #line 232 "xyparser.Y"
--    {yyval.integer = WCSL;;}
-+    {(yyval.integer) = WCSL;;}
-     break;
- 
-   case 54:
- #line 233 "xyparser.Y"
--    {yyval.integer = WCSM;;}
-+    {(yyval.integer) = WCSM;;}
-     break;
- 
-   case 55:
- #line 234 "xyparser.Y"
--    {yyval.integer = WCSN;;}
-+    {(yyval.integer) = WCSN;;}
-     break;
- 
-   case 56:
- #line 235 "xyparser.Y"
--    {yyval.integer = WCSO;;}
-+    {(yyval.integer) = WCSO;;}
-     break;
- 
-   case 57:
- #line 236 "xyparser.Y"
--    {yyval.integer = WCSP;;}
-+    {(yyval.integer) = WCSP;;}
-     break;
- 
-   case 58:
- #line 237 "xyparser.Y"
--    {yyval.integer = WCSQ;;}
-+    {(yyval.integer) = WCSQ;;}
-     break;
- 
-   case 59:
- #line 238 "xyparser.Y"
--    {yyval.integer = WCSR;;}
-+    {(yyval.integer) = WCSR;;}
-     break;
- 
-   case 60:
- #line 239 "xyparser.Y"
--    {yyval.integer = WCSS;;}
-+    {(yyval.integer) = WCSS;;}
-     break;
- 
-   case 61:
- #line 240 "xyparser.Y"
--    {yyval.integer = WCST;;}
-+    {(yyval.integer) = WCST;;}
-     break;
- 
-   case 62:
- #line 241 "xyparser.Y"
--    {yyval.integer = WCSU;;}
-+    {(yyval.integer) = WCSU;;}
-     break;
- 
-   case 63:
- #line 242 "xyparser.Y"
--    {yyval.integer = WCSV;;}
-+    {(yyval.integer) = WCSV;;}
-     break;
- 
-   case 64:
- #line 243 "xyparser.Y"
--    {yyval.integer = WCSW;;}
-+    {(yyval.integer) = WCSW;;}
-     break;
- 
-   case 65:
- #line 244 "xyparser.Y"
--    {yyval.integer = WCSX;;}
-+    {(yyval.integer) = WCSX;;}
-     break;
- 
-   case 66:
- #line 245 "xyparser.Y"
--    {yyval.integer = WCSY;;}
-+    {(yyval.integer) = WCSY;;}
-     break;
- 
-   case 67:
- #line 246 "xyparser.Y"
--    {yyval.integer = WCSZ;;}
-+    {(yyval.integer) = WCSZ;;}
-     break;
- 
-   case 68:
- #line 249 "xyparser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 69:
- #line 250 "xyparser.Y"
--    {yyval.integer = FK4;;}
-+    {(yyval.integer) = FK4;;}
-     break;
- 
-   case 70:
- #line 251 "xyparser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 71:
- #line 252 "xyparser.Y"
--    {yyval.integer = FK5;;}
-+    {(yyval.integer) = FK5;;}
-     break;
- 
-   case 72:
- #line 253 "xyparser.Y"
--    {yyval.integer = ICRS;;}
-+    {(yyval.integer) = ICRS;;}
-     break;
- 
-   case 73:
- #line 254 "xyparser.Y"
--    {yyval.integer = GALACTIC;;}
-+    {(yyval.integer) = GALACTIC;;}
-     break;
- 
-   case 74:
- #line 255 "xyparser.Y"
--    {yyval.integer = ECLIPTIC;;}
-+    {(yyval.integer) = ECLIPTIC;;}
-     break;
- 
-   case 75:
- #line 258 "xyparser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[0].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(1) - (1)].vector)),
- 	    "green",1,"helvetica 10 normal","",
- 	    Marker::SELECT | Marker::EDIT | Marker::MOVE | Marker::ROTATE | 
- 	    Marker::DELETE | Marker::HIGHLITE | 
-@@ -1577,15 +1910,14 @@
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 1915 "xyparser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 1584 "xyparser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -1614,99 +1946,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -1716,15 +2014,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -1753,9 +2053,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -1763,11 +2064,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -1787,21 +2089,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/frame/tngparser.Y
-+++ saods9-4.0b7/saotk/frame/tngparser.Y
-@@ -12,8 +12,8 @@
- #define DISCARD_(x) {yyclearin; tngDiscard(x);}
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
---- saods9-4.0b7.orig/saotk/frame/ciaoparser.C
-+++ saods9-4.0b7/saotk/frame/ciaoparser.C
-@@ -1,7 +1,9 @@
--/* A Bison parser, made by GNU Bison 1.875c.  */
-+/* A Bison parser, made by GNU Bison 2.3.  */
- 
--/* Skeleton parser for Yacc-like parsing with Bison,
--   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+/* Skeleton implementation for Bison's Yacc-like parsers in C
-+
-+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-+   Free Software Foundation, Inc.
- 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-@@ -15,16 +17,24 @@
- 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330,
--   Boston, MA 02111-1307, USA.  */
-+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+   Boston, MA 02110-1301, USA.  */
-+
-+/* As a special exception, you may create a larger work that contains
-+   part or all of the Bison parser skeleton and distribute that work
-+   under terms of your choice, so long as that work isn't itself a
-+   parser generator using the skeleton or a modified version thereof
-+   as a parser skeleton.  Alternatively, if you modify or redistribute
-+   the parser skeleton itself, you may (at your option) remove this
-+   special exception, which will cause the skeleton and the resulting
-+   Bison output files to be licensed under the GNU General Public
-+   License without this special exception.
- 
--/* As a special exception, when this file is copied by Bison into a
--   Bison output file, you may use that output file without restriction.
--   This special exception was added by the Free Software Foundation
--   in version 1.24 of Bison.  */
-+   This special exception was added by the Free Software Foundation in
-+   version 2.2 of Bison.  */
- 
--/* Written by Richard Stallman by simplifying the original so called
--   ``semantic'' parser.  */
-+/* C LALR(1) parser skeleton written by Richard Stallman, by
-+   simplifying the original so-called "semantic" parser.  */
- 
- /* All symbols defined below should begin with yy or YY, to avoid
-    infringing on user name space.  This should be done even for local
-@@ -36,6 +46,9 @@
- /* Identify Bison output.  */
- #define YYBISON 1
- 
-+/* Bison version.  */
-+#define YYBISON_VERSION "2.3"
-+
- /* Skeleton name.  */
- #define YYSKELETON_NAME "yacc.c"
- 
-@@ -45,8 +58,7 @@
- /* Using locations.  */
- #define YYLSP_NEEDED 0
- 
--/* If NAME_PREFIX is specified substitute the variables and functions
--   names.  */
-+/* Substitute the variable and function names.  */
- #define yyparse ciaoparse
- #define yylex   ciaolex
- #define yyerror ciaoerror
-@@ -85,6 +97,7 @@
-      VERSION_ = 278
-    };
- #endif
-+/* Tokens.  */
- #define INT 258
- #define REAL 259
- #define HOUR 260
-@@ -120,8 +133,8 @@
- #define FITSPTR (FR->findFits(1))
- 
- #include <math.h>
--#include <string.h>
--#include <iostream.h>
-+#include <string>
-+#include <iostream>
- 
- #include "framebase.h"
- #include "fitsimage.h"
-@@ -163,16 +176,23 @@
- # define YYERROR_VERBOSE 0
- #endif
- 
--#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-+/* Enabling the token table.  */
-+#ifndef YYTOKEN_TABLE
-+# define YYTOKEN_TABLE 0
-+#endif
-+
-+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-+typedef union YYSTYPE
- #line 43 "ciaoparser.Y"
--typedef union YYSTYPE {
-+{
-   double real;
-   int integer;
-   char str[2048];
-   double vector[3];
--} YYSTYPE;
--/* Line 191 of yacc.c.  */
--#line 176 "ciaoparser.C"
-+}
-+/* Line 193 of yacc.c.  */
-+#line 195 "ciaoparser.C"
-+	YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
- # define YYSTYPE_IS_TRIVIAL 1
-@@ -183,56 +203,171 @@
- /* Copy the second part of user declarations.  */
- 
- 
--/* Line 214 of yacc.c.  */
--#line 188 "ciaoparser.C"
-+/* Line 216 of yacc.c.  */
-+#line 208 "ciaoparser.C"
- 
--#if ! defined (yyoverflow) || YYERROR_VERBOSE
-+#ifdef short
-+# undef short
-+#endif
-+
-+#ifdef YYTYPE_UINT8
-+typedef YYTYPE_UINT8 yytype_uint8;
-+#else
-+typedef unsigned char yytype_uint8;
-+#endif
- 
--# ifndef YYFREE
--#  define YYFREE free
-+#ifdef YYTYPE_INT8
-+typedef YYTYPE_INT8 yytype_int8;
-+#elif (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+typedef signed char yytype_int8;
-+#else
-+typedef short int yytype_int8;
-+#endif
-+
-+#ifdef YYTYPE_UINT16
-+typedef YYTYPE_UINT16 yytype_uint16;
-+#else
-+typedef unsigned short int yytype_uint16;
-+#endif
-+
-+#ifdef YYTYPE_INT16
-+typedef YYTYPE_INT16 yytype_int16;
-+#else
-+typedef short int yytype_int16;
-+#endif
-+
-+#ifndef YYSIZE_T
-+# ifdef __SIZE_TYPE__
-+#  define YYSIZE_T __SIZE_TYPE__
-+# elif defined size_t
-+#  define YYSIZE_T size_t
-+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-+#  define YYSIZE_T size_t
-+# else
-+#  define YYSIZE_T unsigned int
- # endif
--# ifndef YYMALLOC
--#  define YYMALLOC malloc
-+#endif
-+
-+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-+
-+#ifndef YY_
-+# if YYENABLE_NLS
-+#  if ENABLE_NLS
-+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-+#  endif
-+# endif
-+# ifndef YY_
-+#  define YY_(msgid) msgid
- # endif
-+#endif
-+
-+/* Suppress unused-variable warnings by "using" E.  */
-+#if ! defined lint || defined __GNUC__
-+# define YYUSE(e) ((void) (e))
-+#else
-+# define YYUSE(e) /* empty */
-+#endif
-+
-+/* Identity function, used to suppress warnings about constant conditions.  */
-+#ifndef lint
-+# define YYID(n) (n)
-+#else
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static int
-+YYID (int i)
-+#else
-+static int
-+YYID (i)
-+    int i;
-+#endif
-+{
-+  return i;
-+}
-+#endif
-+
-+#if ! defined yyoverflow || YYERROR_VERBOSE
- 
- /* The parser invokes alloca or malloc; define the necessary symbols.  */
- 
- # ifdef YYSTACK_USE_ALLOCA
- #  if YYSTACK_USE_ALLOCA
--#   define YYSTACK_ALLOC alloca
--#  endif
--# else
--#  if defined (alloca) || defined (_ALLOCA_H)
--#   define YYSTACK_ALLOC alloca
--#  else
- #   ifdef __GNUC__
- #    define YYSTACK_ALLOC __builtin_alloca
-+#   elif defined __BUILTIN_VA_ARG_INCR
-+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-+#   elif defined _AIX
-+#    define YYSTACK_ALLOC __alloca
-+#   elif defined _MSC_VER
-+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-+#    define alloca _alloca
-+#   else
-+#    define YYSTACK_ALLOC alloca
-+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#     ifndef _STDLIB_H
-+#      define _STDLIB_H 1
-+#     endif
-+#    endif
- #   endif
- #  endif
- # endif
- 
- # ifdef YYSTACK_ALLOC
--   /* Pacify GCC's `empty if-body' warning. */
--#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
--# else
--#  if defined (__STDC__) || defined (__cplusplus)
--#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
--#   define YYSIZE_T size_t
-+   /* Pacify GCC's `empty if-body' warning.  */
-+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+    /* The OS might guarantee only one guard page at the bottom of the stack,
-+       and a page size can be as small as 4096 bytes.  So we cannot safely
-+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-+       to allow for a few compiler-allocated temporary stack slots.  */
-+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
- #  endif
-+# else
- #  define YYSTACK_ALLOC YYMALLOC
- #  define YYSTACK_FREE YYFREE
-+#  ifndef YYSTACK_ALLOC_MAXIMUM
-+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-+#  endif
-+#  if (defined __cplusplus && ! defined _STDLIB_H \
-+       && ! ((defined YYMALLOC || defined malloc) \
-+	     && (defined YYFREE || defined free)))
-+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-+#   ifndef _STDLIB_H
-+#    define _STDLIB_H 1
-+#   endif
-+#  endif
-+#  ifndef YYMALLOC
-+#   define YYMALLOC malloc
-+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
-+#  ifndef YYFREE
-+#   define YYFREE free
-+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+void free (void *); /* INFRINGES ON USER NAME SPACE */
-+#   endif
-+#  endif
- # endif
--#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
- 
- 
--#if (! defined (yyoverflow) \
--     && (! defined (__cplusplus) \
--	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-+#if (! defined yyoverflow \
-+     && (! defined __cplusplus \
-+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
- 
- /* A type that is properly aligned for any stack member.  */
- union yyalloc
- {
--  short yyss;
-+  yytype_int16 yyss;
-   YYSTYPE yyvs;
-   };
- 
-@@ -242,24 +377,24 @@
- /* The size of an array large to enough to hold all stacks, each with
-    N elements.  */
- # define YYSTACK_BYTES(N) \
--     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
-+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-       + YYSTACK_GAP_MAXIMUM)
- 
- /* Copy COUNT objects from FROM to TO.  The source and destination do
-    not overlap.  */
- # ifndef YYCOPY
--#  if defined (__GNUC__) && 1 < __GNUC__
-+#  if defined __GNUC__ && 1 < __GNUC__
- #   define YYCOPY(To, From, Count) \
-       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
- #  else
- #   define YYCOPY(To, From, Count)		\
-       do					\
- 	{					\
--	  register YYSIZE_T yyi;		\
-+	  YYSIZE_T yyi;				\
- 	  for (yyi = 0; yyi < (Count); yyi++)	\
- 	    (To)[yyi] = (From)[yyi];		\
- 	}					\
--      while (0)
-+      while (YYID (0))
- #  endif
- # endif
- 
-@@ -277,39 +412,33 @@
- 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- 	yyptr += yynewbytes / sizeof (*yyptr);				\
-       }									\
--    while (0)
-+    while (YYID (0))
- 
- #endif
- 
--#if defined (__STDC__) || defined (__cplusplus)
--   typedef signed char yysigned_char;
--#else
--   typedef short yysigned_char;
--#endif
--
--/* YYFINAL -- State number of the termination state. */
-+/* YYFINAL -- State number of the termination state.  */
- #define YYFINAL  9
- /* YYLAST -- Last index in YYTABLE.  */
- #define YYLAST   135
- 
--/* YYNTOKENS -- Number of terminals. */
-+/* YYNTOKENS -- Number of terminals.  */
- #define YYNTOKENS  31
--/* YYNNTS -- Number of nonterminals. */
-+/* YYNNTS -- Number of nonterminals.  */
- #define YYNNTS  22
--/* YYNRULES -- Number of rules. */
-+/* YYNRULES -- Number of rules.  */
- #define YYNRULES  50
--/* YYNRULES -- Number of states. */
-+/* YYNRULES -- Number of states.  */
- #define YYNSTATES  122
- 
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
- #define YYUNDEFTOK  2
- #define YYMAXUTOK   278
- 
--#define YYTRANSLATE(YYX) 						\
-+#define YYTRANSLATE(YYX)						\
-   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
- 
- /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
--static const unsigned char yytranslate[] =
-+static const yytype_uint8 yytranslate[] =
- {
-        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       24,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-@@ -344,7 +473,7 @@
- #if YYDEBUG
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-    YYRHS.  */
--static const unsigned char yyprhs[] =
-+static const yytype_uint8 yyprhs[] =
- {
-        0,     0,     3,     7,    10,    11,    14,    16,    20,    22,
-       24,    26,    28,    30,    32,    34,    35,    37,    38,    40,
-@@ -354,8 +483,8 @@
-      171
- };
- 
--/* YYRHS -- A `-1'-separated list of the rules' RHS. */
--static const yysigned_char yyrhs[] =
-+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-+static const yytype_int8 yyrhs[] =
- {
-       32,     0,    -1,    32,    33,    34,    -1,    33,    34,    -1,
-       -1,    15,    36,    -1,    23,    -1,    40,    48,    49,    -1,
-@@ -378,7 +507,7 @@
- };
- 
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
--static const unsigned char yyrline[] =
-+static const yytype_uint8 yyrline[] =
- {
-        0,    86,    86,    87,    90,    91,    92,    93,    96,    97,
-       98,   101,   102,   105,   106,   109,   110,   113,   114,   117,
-@@ -389,9 +518,9 @@
- };
- #endif
- 
--#if YYDEBUG || YYERROR_VERBOSE
--/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
--   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
- static const char *const yytname[] =
- {
-   "$end", "error", "$undefined", "INT", "REAL", "HOUR", "MINUTE",
-@@ -408,7 +537,7 @@
- # ifdef YYPRINT
- /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-    token YYLEX-NUM.  */
--static const unsigned short yytoknum[] =
-+static const yytype_uint16 yytoknum[] =
- {
-        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-@@ -418,7 +547,7 @@
- # endif
- 
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
--static const unsigned char yyr1[] =
-+static const yytype_uint8 yyr1[] =
- {
-        0,    31,    32,    32,    33,    33,    33,    33,    34,    34,
-       34,    35,    35,    36,    36,    37,    37,    38,    38,    39,
-@@ -429,7 +558,7 @@
- };
- 
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
--static const unsigned char yyr2[] =
-+static const yytype_uint8 yyr2[] =
- {
-        0,     2,     3,     2,     0,     2,     1,     3,     1,     1,
-        1,     1,     1,     1,     1,     0,     1,     0,     1,     0,
-@@ -442,7 +571,7 @@
- /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-    means the default is an error.  */
--static const unsigned char yydefact[] =
-+static const yytype_uint8 yydefact[] =
- {
-       21,     0,     6,    21,     0,    36,    14,    13,     5,     1,
-        0,    10,     8,     9,     3,    37,    38,     0,     2,    17,
-@@ -459,8 +588,8 @@
-       19,    42
- };
- 
--/* YYDEFGOTO[NTERM-NUM]. */
--static const yysigned_char yydefgoto[] =
-+/* YYDEFGOTO[NTERM-NUM].  */
-+static const yytype_int8 yydefgoto[] =
- {
-       -1,     3,     4,    14,    41,     8,    54,    29,    62,     5,
-      105,    75,    79,    42,    63,    87,    86,    17,    27,    35,
-@@ -470,7 +599,7 @@
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-    STATE-NUM.  */
- #define YYPACT_NINF -89
--static const yysigned_char yypact[] =
-+static const yytype_int8 yypact[] =
- {
-       81,   -11,   -89,    61,     3,   -19,   -89,   -89,   -89,   -89,
-        3,   -89,   -89,   -89,   -89,   -89,   -89,    95,   -89,   -15,
-@@ -488,7 +617,7 @@
- };
- 
- /* YYPGOTO[NTERM-NUM].  */
--static const yysigned_char yypgoto[] =
-+static const yytype_int8 yypgoto[] =
- {
-      -89,   -89,    72,    87,   -41,   -89,   -42,    67,   -38,   -89,
-      -88,   -37,   -29,    22,    89,   -89,   -89,   -89,   -89,   -89,
-@@ -500,7 +629,7 @@
-    number is the opposite.  If zero, do what YYDEFACT says.
-    If YYTABLE_NINF, syntax error.  */
- #define YYTABLE_NINF -20
--static const yysigned_char yytable[] =
-+static const yytype_int8 yytable[] =
- {
-       55,    56,    57,    58,    59,    60,     6,     7,    66,   107,
-       15,    16,    28,    70,    11,    74,    78,    74,    78,    74,
-@@ -518,7 +647,7 @@
-       38,     0,     0,    40,    76,    77
- };
- 
--static const yysigned_char yycheck[] =
-+static const yytype_int8 yycheck[] =
- {
-       42,    43,    44,    45,    46,    47,    17,    18,    50,    97,
-       29,    30,    27,    54,    11,    56,    57,    58,    59,    60,
-@@ -538,7 +667,7 @@
- 
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-    symbol of state STATE-NUM.  */
--static const unsigned char yystos[] =
-+static const yytype_uint8 yystos[] =
- {
-        0,    15,    23,    32,    33,    40,    17,    18,    36,     0,
-       33,    11,    24,    25,    34,    29,    30,    48,    34,    12,
-@@ -555,22 +684,6 @@
-       41,    39
- };
- 
--#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
--# define YYSIZE_T __SIZE_TYPE__
--#endif
--#if ! defined (YYSIZE_T) && defined (size_t)
--# define YYSIZE_T size_t
--#endif
--#if ! defined (YYSIZE_T)
--# if defined (__STDC__) || defined (__cplusplus)
--#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
--#  define YYSIZE_T size_t
--# endif
--#endif
--#if ! defined (YYSIZE_T)
--# define YYSIZE_T unsigned int
--#endif
--
- #define yyerrok		(yyerrstatus = 0)
- #define yyclearin	(yychar = YYEMPTY)
- #define YYEMPTY		(-2)
-@@ -596,30 +709,63 @@
-       yychar = (Token);						\
-       yylval = (Value);						\
-       yytoken = YYTRANSLATE (yychar);				\
--      YYPOPSTACK;						\
-+      YYPOPSTACK (1);						\
-       goto yybackup;						\
-     }								\
-   else								\
--    { 								\
--      yyerror ("syntax error: cannot back up");\
-+    {								\
-+      yyerror (YY_("syntax error: cannot back up")); \
-       YYERROR;							\
-     }								\
--while (0)
-+while (YYID (0))
-+
- 
- #define YYTERROR	1
- #define YYERRCODE	256
- 
--/* YYLLOC_DEFAULT -- Compute the default location (before the actions
--   are run).  */
- 
-+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-+   If N is 0, then set CURRENT to the empty location which ends
-+   the previous symbol: RHS[0] (always defined).  */
-+
-+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
- #ifndef YYLLOC_DEFAULT
--# define YYLLOC_DEFAULT(Current, Rhs, N)		\
--   ((Current).first_line   = (Rhs)[1].first_line,	\
--    (Current).first_column = (Rhs)[1].first_column,	\
--    (Current).last_line    = (Rhs)[N].last_line,	\
--    (Current).last_column  = (Rhs)[N].last_column)
-+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-+    do									\
-+      if (YYID (N))                                                    \
-+	{								\
-+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-+	}								\
-+      else								\
-+	{								\
-+	  (Current).first_line   = (Current).last_line   =		\
-+	    YYRHSLOC (Rhs, 0).last_line;				\
-+	  (Current).first_column = (Current).last_column =		\
-+	    YYRHSLOC (Rhs, 0).last_column;				\
-+	}								\
-+    while (YYID (0))
-+#endif
-+
-+
-+/* YY_LOCATION_PRINT -- Print the location on the stream.
-+   This macro was not mandated originally: define only if we know
-+   we won't break user code: when these are the locations we know.  */
-+
-+#ifndef YY_LOCATION_PRINT
-+# if YYLTYPE_IS_TRIVIAL
-+#  define YY_LOCATION_PRINT(File, Loc)			\
-+     fprintf (File, "%d.%d-%d.%d",			\
-+	      (Loc).first_line, (Loc).first_column,	\
-+	      (Loc).last_line,  (Loc).last_column)
-+# else
-+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-+# endif
- #endif
- 
-+
- /* YYLEX -- calling `yylex' with the right arguments.  */
- 
- #ifdef YYLEX_PARAM
-@@ -640,42 +786,96 @@
- do {						\
-   if (yydebug)					\
-     YYFPRINTF Args;				\
--} while (0)
-+} while (YYID (0))
- 
--# define YYDSYMPRINT(Args)			\
--do {						\
--  if (yydebug)					\
--    yysymprint Args;				\
--} while (0)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-+do {									  \
-+  if (yydebug)								  \
-+    {									  \
-+      YYFPRINTF (stderr, "%s ", Title);					  \
-+      yy_symbol_print (stderr,						  \
-+		  Type, Value); \
-+      YYFPRINTF (stderr, "\n");						  \
-+    }									  \
-+} while (YYID (0))
- 
--# define YYDSYMPRINTF(Title, Token, Value, Location)		\
--do {								\
--  if (yydebug)							\
--    {								\
--      YYFPRINTF (stderr, "%s ", Title);				\
--      yysymprint (stderr, 					\
--                  Token, Value);	\
--      YYFPRINTF (stderr, "\n");					\
--    }								\
--} while (0)
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (!yyvaluep)
-+    return;
-+# ifdef YYPRINT
-+  if (yytype < YYNTOKENS)
-+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+# else
-+  YYUSE (yyoutput);
-+# endif
-+  switch (yytype)
-+    {
-+      default:
-+	break;
-+    }
-+}
-+
-+
-+/*--------------------------------.
-+| Print this symbol on YYOUTPUT.  |
-+`--------------------------------*/
-+
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+static void
-+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-+#else
-+static void
-+yy_symbol_print (yyoutput, yytype, yyvaluep)
-+    FILE *yyoutput;
-+    int yytype;
-+    YYSTYPE const * const yyvaluep;
-+#endif
-+{
-+  if (yytype < YYNTOKENS)
-+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-+  else
-+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+
-+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-+  YYFPRINTF (yyoutput, ")");
-+}
- 
- /*------------------------------------------------------------------.
- | yy_stack_print -- Print the state stack from its BOTTOM up to its |
- | TOP (included).                                                   |
- `------------------------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_stack_print (short *bottom, short *top)
-+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
- #else
- static void
- yy_stack_print (bottom, top)
--    short *bottom;
--    short *top;
-+    yytype_int16 *bottom;
-+    yytype_int16 *top;
- #endif
- {
-   YYFPRINTF (stderr, "Stack now");
--  for (/* Nothing. */; bottom <= top; ++bottom)
-+  for (; bottom <= top; ++bottom)
-     YYFPRINTF (stderr, " %d", *bottom);
-   YYFPRINTF (stderr, "\n");
- }
-@@ -684,45 +884,52 @@
- do {								\
-   if (yydebug)							\
-     yy_stack_print ((Bottom), (Top));				\
--} while (0)
-+} while (YYID (0))
- 
- 
- /*------------------------------------------------.
- | Report that the YYRULE is going to be reduced.  |
- `------------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yy_reduce_print (int yyrule)
-+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
- #else
- static void
--yy_reduce_print (yyrule)
-+yy_reduce_print (yyvsp, yyrule)
-+    YYSTYPE *yyvsp;
-     int yyrule;
- #endif
- {
-+  int yynrhs = yyr2[yyrule];
-   int yyi;
--  unsigned int yylno = yyrline[yyrule];
--  YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
--             yyrule - 1, yylno);
--  /* Print the symbols being reduced, and their result.  */
--  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
--    YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
--  YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
-+  unsigned long int yylno = yyrline[yyrule];
-+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-+	     yyrule - 1, yylno);
-+  /* The symbols being reduced.  */
-+  for (yyi = 0; yyi < yynrhs; yyi++)
-+    {
-+      fprintf (stderr, "   $%d = ", yyi + 1);
-+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-+		       &(yyvsp[(yyi + 1) - (yynrhs)])
-+		       		       );
-+      fprintf (stderr, "\n");
-+    }
- }
- 
- # define YY_REDUCE_PRINT(Rule)		\
- do {					\
-   if (yydebug)				\
--    yy_reduce_print (Rule);		\
--} while (0)
-+    yy_reduce_print (yyvsp, Rule); \
-+} while (YYID (0))
- 
- /* Nonzero means print parse trace.  It is left uninitialized so that
-    multiple parsers can coexist.  */
- int yydebug;
- #else /* !YYDEBUG */
- # define YYDPRINTF(Args)
--# define YYDSYMPRINT(Args)
--# define YYDSYMPRINTF(Title, Token, Value, Location)
-+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
- # define YY_STACK_PRINT(Bottom, Top)
- # define YY_REDUCE_PRINT(Rule)
- #endif /* !YYDEBUG */
-@@ -737,13 +944,9 @@
-    if the built-in stack extension method is used).
- 
-    Do not make this value too large; the results are undefined if
--   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
-+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-    evaluated with infinite-precision integer arithmetic.  */
- 
--#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
--# undef YYMAXDEPTH
--#endif
--
- #ifndef YYMAXDEPTH
- # define YYMAXDEPTH 10000
- #endif
-@@ -753,45 +956,47 @@
- #if YYERROR_VERBOSE
- 
- # ifndef yystrlen
--#  if defined (__GLIBC__) && defined (_STRING_H)
-+#  if defined __GLIBC__ && defined _STRING_H
- #   define yystrlen strlen
- #  else
- /* Return the length of YYSTR.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static YYSIZE_T
--#   if defined (__STDC__) || defined (__cplusplus)
- yystrlen (const char *yystr)
--#   else
-+#else
-+static YYSIZE_T
- yystrlen (yystr)
--     const char *yystr;
--#   endif
-+    const char *yystr;
-+#endif
- {
--  register const char *yys = yystr;
--
--  while (*yys++ != '\0')
-+  YYSIZE_T yylen;
-+  for (yylen = 0; yystr[yylen]; yylen++)
-     continue;
--
--  return yys - yystr - 1;
-+  return yylen;
- }
- #  endif
- # endif
- 
- # ifndef yystpcpy
--#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
- #   define yystpcpy stpcpy
- #  else
- /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-    YYDEST.  */
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static char *
--#   if defined (__STDC__) || defined (__cplusplus)
- yystpcpy (char *yydest, const char *yysrc)
--#   else
-+#else
-+static char *
- yystpcpy (yydest, yysrc)
--     char *yydest;
--     const char *yysrc;
--#   endif
-+    char *yydest;
-+    const char *yysrc;
-+#endif
- {
--  register char *yyd = yydest;
--  register const char *yys = yysrc;
-+  char *yyd = yydest;
-+  const char *yys = yysrc;
- 
-   while ((*yyd++ = *yys++) != '\0')
-     continue;
-@@ -801,70 +1006,192 @@
- #  endif
- # endif
- 
--#endif /* !YYERROR_VERBOSE */
-+# ifndef yytnamerr
-+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-+   quotes and backslashes, so that it's suitable for yyerror.  The
-+   heuristic is that double-quoting is unnecessary unless the string
-+   contains an apostrophe, a comma, or backslash (other than
-+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-+   null, do not copy; instead, return the length of what the result
-+   would have been.  */
-+static YYSIZE_T
-+yytnamerr (char *yyres, const char *yystr)
-+{
-+  if (*yystr == '"')
-+    {
-+      YYSIZE_T yyn = 0;
-+      char const *yyp = yystr;
- 
--
-+      for (;;)
-+	switch (*++yyp)
-+	  {
-+	  case '\'':
-+	  case ',':
-+	    goto do_not_strip_quotes;
-+
-+	  case '\\':
-+	    if (*++yyp != '\\')
-+	      goto do_not_strip_quotes;
-+	    /* Fall through.  */
-+	  default:
-+	    if (yyres)
-+	      yyres[yyn] = *yyp;
-+	    yyn++;
-+	    break;
-+
-+	  case '"':
-+	    if (yyres)
-+	      yyres[yyn] = '\0';
-+	    return yyn;
-+	  }
-+    do_not_strip_quotes: ;
-+    }
- 
--#if YYDEBUG
--/*--------------------------------.
--| Print this symbol on YYOUTPUT.  |
--`--------------------------------*/
-+  if (! yyres)
-+    return yystrlen (yystr);
- 
--#if defined (__STDC__) || defined (__cplusplus)
--static void
--yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
--#else
--static void
--yysymprint (yyoutput, yytype, yyvaluep)
--    FILE *yyoutput;
--    int yytype;
--    YYSTYPE *yyvaluep;
--#endif
-+  return yystpcpy (yyres, yystr) - yyres;
-+}
-+# endif
-+
-+/* Copy into YYRESULT an error message about the unexpected token
-+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-+   including the terminating null byte.  If YYRESULT is null, do not
-+   copy anything; just return the number of bytes that would be
-+   copied.  As a special case, return 0 if an ordinary "syntax error"
-+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-+   size calculation.  */
-+static YYSIZE_T
-+yysyntax_error (char *yyresult, int yystate, int yychar)
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  int yyn = yypact[yystate];
- 
--  if (yytype < YYNTOKENS)
-+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-+    return 0;
-+  else
-     {
--      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
--# ifdef YYPRINT
--      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-+      int yytype = YYTRANSLATE (yychar);
-+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-+      YYSIZE_T yysize = yysize0;
-+      YYSIZE_T yysize1;
-+      int yysize_overflow = 0;
-+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-+      int yyx;
-+
-+# if 0
-+      /* This is so xgettext sees the translatable formats that are
-+	 constructed on the fly.  */
-+      YY_("syntax error, unexpected %s");
-+      YY_("syntax error, unexpected %s, expecting %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
- # endif
--    }
--  else
--    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-+      char *yyfmt;
-+      char const *yyf;
-+      static char const yyunexpected[] = "syntax error, unexpected %s";
-+      static char const yyexpecting[] = ", expecting %s";
-+      static char const yyor[] = " or %s";
-+      char yyformat[sizeof yyunexpected
-+		    + sizeof yyexpecting - 1
-+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-+		       * (sizeof yyor - 1))];
-+      char const *yyprefix = yyexpecting;
-+
-+      /* Start YYX at -YYN if negative to avoid negative indexes in
-+	 YYCHECK.  */
-+      int yyxbegin = yyn < 0 ? -yyn : 0;
-+
-+      /* Stay within bounds of both yycheck and yytname.  */
-+      int yychecklim = YYLAST - yyn + 1;
-+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-+      int yycount = 1;
-+
-+      yyarg[0] = yytname[yytype];
-+      yyfmt = yystpcpy (yyformat, yyunexpected);
-+
-+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+	  {
-+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-+	      {
-+		yycount = 1;
-+		yysize = yysize0;
-+		yyformat[sizeof yyunexpected - 1] = '\0';
-+		break;
-+	      }
-+	    yyarg[yycount++] = yytname[yyx];
-+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-+	    yysize_overflow |= (yysize1 < yysize);
-+	    yysize = yysize1;
-+	    yyfmt = yystpcpy (yyfmt, yyprefix);
-+	    yyprefix = yyor;
-+	  }
-+
-+      yyf = YY_(yyformat);
-+      yysize1 = yysize + yystrlen (yyf);
-+      yysize_overflow |= (yysize1 < yysize);
-+      yysize = yysize1;
- 
--  switch (yytype)
--    {
--      default:
--        break;
-+      if (yysize_overflow)
-+	return YYSIZE_MAXIMUM;
-+
-+      if (yyresult)
-+	{
-+	  /* Avoid sprintf, as that infringes on the user's name space.
-+	     Don't have undefined behavior even if the translation
-+	     produced a string with the wrong number of "%s"s.  */
-+	  char *yyp = yyresult;
-+	  int yyi = 0;
-+	  while ((*yyp = *yyf) != '\0')
-+	    {
-+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-+		{
-+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-+		  yyf += 2;
-+		}
-+	      else
-+		{
-+		  yyp++;
-+		  yyf++;
-+		}
-+	    }
-+	}
-+      return yysize;
-     }
--  YYFPRINTF (yyoutput, ")");
- }
-+#endif /* YYERROR_VERBOSE */
-+
- 
--#endif /* ! YYDEBUG */
- /*-----------------------------------------------.
- | Release the memory associated to this symbol.  |
- `-----------------------------------------------*/
- 
--#if defined (__STDC__) || defined (__cplusplus)
-+/*ARGSUSED*/
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- static void
--yydestruct (int yytype, YYSTYPE *yyvaluep)
-+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
- #else
- static void
--yydestruct (yytype, yyvaluep)
-+yydestruct (yymsg, yytype, yyvaluep)
-+    const char *yymsg;
-     int yytype;
-     YYSTYPE *yyvaluep;
- #endif
- {
--  /* Pacify ``unused variable'' warnings.  */
--  (void) yyvaluep;
-+  YYUSE (yyvaluep);
-+
-+  if (!yymsg)
-+    yymsg = "Deleting";
-+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- 
-   switch (yytype)
-     {
- 
-       default:
--        break;
-+	break;
-     }
- }
- 
-@@ -872,13 +1199,13 @@
- /* Prevent warnings from -Wmissing-prototypes.  */
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void *YYPARSE_PARAM);
--# else
-+#else
- int yyparse ();
--# endif
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if defined __STDC__ || defined __cplusplus
- int yyparse (void);
- #else
- int yyparse ();
-@@ -887,10 +1214,10 @@
- 
- 
- 
--/* The lookahead symbol.  */
-+/* The look-ahead symbol.  */
- int yychar;
- 
--/* The semantic value of the lookahead symbol.  */
-+/* The semantic value of the look-ahead symbol.  */
- YYSTYPE yylval;
- 
- /* Number of syntax errors so far.  */
-@@ -903,14 +1230,18 @@
- `----------*/
- 
- #ifdef YYPARSE_PARAM
--# if defined (__STDC__) || defined (__cplusplus)
--int yyparse (void *YYPARSE_PARAM)
--# else
--int yyparse (YYPARSE_PARAM)
--  void *YYPARSE_PARAM;
--# endif
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
-+int
-+yyparse (void *YYPARSE_PARAM)
-+#else
-+int
-+yyparse (YYPARSE_PARAM)
-+    void *YYPARSE_PARAM;
-+#endif
- #else /* ! YYPARSE_PARAM */
--#if defined (__STDC__) || defined (__cplusplus)
-+#if (defined __STDC__ || defined __C99__FUNC__ \
-+     || defined __cplusplus || defined _MSC_VER)
- int
- yyparse (void)
- #else
-@@ -921,13 +1252,19 @@
- #endif
- {
-   
--  register int yystate;
--  register int yyn;
-+  int yystate;
-+  int yyn;
-   int yyresult;
-   /* Number of tokens to shift before error messages enabled.  */
-   int yyerrstatus;
--  /* Lookahead token as an internal (translated) token number.  */
-+  /* Look-ahead token as an internal (translated) token number.  */
-   int yytoken = 0;
-+#if YYERROR_VERBOSE
-+  /* Buffer for error messages, and its allocated size.  */
-+  char yymsgbuf[128];
-+  char *yymsg = yymsgbuf;
-+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-+#endif
- 
-   /* Three stacks and their tools:
-      `yyss': related to states,
-@@ -938,18 +1275,18 @@
-      to reallocate them elsewhere.  */
- 
-   /* The state stack.  */
--  short	yyssa[YYINITDEPTH];
--  short *yyss = yyssa;
--  register short *yyssp;
-+  yytype_int16 yyssa[YYINITDEPTH];
-+  yytype_int16 *yyss = yyssa;
-+  yytype_int16 *yyssp;
- 
-   /* The semantic value stack.  */
-   YYSTYPE yyvsa[YYINITDEPTH];
-   YYSTYPE *yyvs = yyvsa;
--  register YYSTYPE *yyvsp;
-+  YYSTYPE *yyvsp;
- 
- 
- 
--#define YYPOPSTACK   (yyvsp--, yyssp--)
-+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
- 
-   YYSIZE_T yystacksize = YYINITDEPTH;
- 
-@@ -958,9 +1295,9 @@
-   YYSTYPE yyval;
- 
- 
--  /* When reducing, the number of symbols on the RHS of the reduced
--     rule.  */
--  int yylen;
-+  /* The number of symbols on the RHS of the reduced rule.
-+     Keep to zero when no symbol should be popped.  */
-+  int yylen = 0;
- 
-   YYDPRINTF ((stderr, "Starting parse\n"));
- 
-@@ -984,8 +1321,7 @@
- `------------------------------------------------------------*/
-  yynewstate:
-   /* In all cases, when you get here, the value and location stacks
--     have just been pushed. so pushing a state here evens the stacks.
--     */
-+     have just been pushed.  So pushing a state here evens the stacks.  */
-   yyssp++;
- 
-  yysetstate:
-@@ -998,18 +1334,18 @@
- 
- #ifdef yyoverflow
-       {
--	/* Give user a chance to reallocate the stack. Use copies of
-+	/* 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;
-+	yytype_int16 *yyss1 = yyss;
- 
- 
- 	/* Each stack pointer address is followed by the size of the
- 	   data in use in that stack, in bytes.  This used to be a
- 	   conditional around just the two extra args, but that might
- 	   be undefined if yyoverflow is a macro.  */
--	yyoverflow ("parser stack overflow",
-+	yyoverflow (YY_("memory exhausted"),
- 		    &yyss1, yysize * sizeof (*yyssp),
- 		    &yyvs1, yysize * sizeof (*yyvsp),
- 
-@@ -1020,21 +1356,21 @@
-       }
- #else /* no yyoverflow */
- # ifndef YYSTACK_RELOCATE
--      goto yyoverflowlab;
-+      goto yyexhaustedlab;
- # else
-       /* Extend the stack our own way.  */
-       if (YYMAXDEPTH <= yystacksize)
--	goto yyoverflowlab;
-+	goto yyexhaustedlab;
-       yystacksize *= 2;
-       if (YYMAXDEPTH < yystacksize)
- 	yystacksize = YYMAXDEPTH;
- 
-       {
--	short *yyss1 = yyss;
-+	yytype_int16 *yyss1 = yyss;
- 	union yyalloc *yyptr =
- 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- 	if (! yyptr)
--	  goto yyoverflowlab;
-+	  goto yyexhaustedlab;
- 	YYSTACK_RELOCATE (yyss);
- 	YYSTACK_RELOCATE (yyvs);
- 
-@@ -1065,19 +1401,17 @@
- `-----------*/
- 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.  */
-+  /* Do appropriate processing given the current state.  Read a
-+     look-ahead token if we need one and don't already have one.  */
- 
-+  /* First try to decide what to do without reference to look-ahead token.  */
-   yyn = yypact[yystate];
-   if (yyn == YYPACT_NINF)
-     goto yydefault;
- 
--  /* Not known => get a lookahead token if don't already have one.  */
-+  /* Not known => get a look-ahead token if don't already have one.  */
- 
--  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-   if (yychar == YYEMPTY)
-     {
-       YYDPRINTF ((stderr, "Reading a token: "));
-@@ -1092,7 +1426,7 @@
-   else
-     {
-       yytoken = YYTRANSLATE (yychar);
--      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
-+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-     }
- 
-   /* If the proper action on seeing token YYTOKEN is to reduce or to
-@@ -1112,22 +1446,21 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  /* Shift the lookahead token.  */
--  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
--
--  /* Discard the token being shifted unless it is eof.  */
--  if (yychar != YYEOF)
--    yychar = YYEMPTY;
--
--  *++yyvsp = yylval;
--
--
-   /* Count tokens shifted since error; after three, turn off error
-      status.  */
-   if (yyerrstatus)
-     yyerrstatus--;
- 
-+  /* Shift the look-ahead token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-+
-+  /* Discard the shifted token unless it is eof.  */
-+  if (yychar != YYEOF)
-+    yychar = YYEMPTY;
-+
-   yystate = yyn;
-+  *++yyvsp = yylval;
-+
-   goto yynewstate;
- 
- 
-@@ -1174,12 +1507,12 @@
- 
-   case 11:
- #line 101 "ciaoparser.Y"
--    {yyval.real=yyvsp[0].real;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].real);;}
-     break;
- 
-   case 12:
- #line 102 "ciaoparser.Y"
--    {yyval.real=yyvsp[0].integer;;}
-+    {(yyval.real)=(yyvsp[(1) - (1)].integer);;}
-     break;
- 
-   case 13:
-@@ -1204,67 +1537,67 @@
- 
-   case 22:
- #line 129 "ciaoparser.Y"
--    {yyval.real = degToRad(yyvsp[0].real);;}
-+    {(yyval.real) = degToRad((yyvsp[(1) - (1)].real));;}
-     break;
- 
-   case 23:
- #line 132 "ciaoparser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, PHYSICAL);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), PHYSICAL);;}
-     break;
- 
-   case 24:
- #line 133 "ciaoparser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, WCS, ARCMIN);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCMIN);;}
-     break;
- 
-   case 25:
- #line 134 "ciaoparser.Y"
--    {yyval.real = FITSPTR->mapLenToRef(yyvsp[0].real, WCS, ARCSEC);;}
-+    {(yyval.real) = FITSPTR->mapLenToRef((yyvsp[(1) - (1)].real), WCS, ARCSEC);;}
-     break;
- 
-   case 26:
- #line 138 "ciaoparser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 27:
- #line 145 "ciaoparser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), WCS, ARCMIN);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCMIN);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 28:
- #line 152 "ciaoparser.Y"
-     {
--	  Vector r = FITSPTR->mapLenToRef(Vector(yyvsp[-2].real,yyvsp[0].real), WCS, ARCSEC);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapLenToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), WCS, ARCSEC);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 29:
- #line 160 "ciaoparser.Y"
--    {yyval.real = parseDMS(yyvsp[0].str);;}
-+    {(yyval.real) = parseDMS((yyvsp[(1) - (1)].str));;}
-     break;
- 
-   case 30:
- #line 164 "ciaoparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real*360./24.,yyvsp[0].real),WCS,FK5);
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real)*360./24.,(yyvsp[(3) - (3)].real)),WCS,FK5);
- 
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1277,12 +1610,12 @@
- #line 172 "ciaoparser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(hmsToDegree(ciaosign2,yyvsp[-7].integer,yyvsp[-6].integer,yyvsp[-5].real), 
--	    dmsToDegree(ciaosign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(hmsToDegree(ciaosign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].integer),(yyvsp[(3) - (8)].real)), 
-+	    dmsToDegree(ciaosign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    WCS, FK5);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1295,22 +1628,22 @@
- #line 183 "ciaoparser.Y"
-     {
- 	  Vector r = FITSPTR->mapToRef(
--	    Vector(dmsToDegree(ciaosign2,yyvsp[-7].integer,yyvsp[-6].real,yyvsp[-5].real),
--	    dmsToDegree(ciaosign,yyvsp[-2].integer,yyvsp[-1].real,yyvsp[0].real)),
-+	    Vector(dmsToDegree(ciaosign2,(yyvsp[(1) - (8)].integer),(yyvsp[(2) - (8)].real),(yyvsp[(3) - (8)].real)),
-+	    dmsToDegree(ciaosign,(yyvsp[(6) - (8)].integer),(yyvsp[(7) - (8)].real),(yyvsp[(8) - (8)].real))),
- 	    WCS, FK5);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-   case 35:
- #line 193 "ciaoparser.Y"
-     {
--	  Vector r = FITSPTR->mapToRef(Vector(yyvsp[-2].real,yyvsp[0].real), PHYSICAL);
--	  yyval.vector[0] = r[0];
--	  yyval.vector[1] = r[1];
--	  yyval.vector[2] = r[2];
-+	  Vector r = FITSPTR->mapToRef(Vector((yyvsp[(1) - (3)].real),(yyvsp[(3) - (3)].real)), PHYSICAL);
-+	  (yyval.vector)[0] = r[0];
-+	  (yyval.vector)[1] = r[1];
-+	  (yyval.vector)[2] = r[2];
- 	;}
-     break;
- 
-@@ -1326,52 +1659,52 @@
- 
-   case 39:
- #line 207 "ciaoparser.Y"
--    {FR->createCircleCmd(Vector(yyvsp[-3].vector),
--	    yyvsp[-1].real,
-+    {FR->createCircleCmd(Vector((yyvsp[(3) - (6)].vector)),
-+	    (yyvsp[(5) - (6)].real),
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 40:
- #line 212 "ciaoparser.Y"
--    {FR->createEllipseCmd(Vector(yyvsp[-5].vector),
--	    Vector(yyvsp[-3].vector),yyvsp[-1].real,
-+    {FR->createEllipseCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    Vector((yyvsp[(5) - (8)].vector)),(yyvsp[(7) - (8)].real),
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 41:
- #line 217 "ciaoparser.Y"
--    {FR->createAnnulusCmd(Vector(yyvsp[-5].vector),
--	    yyvsp[-3].real,yyvsp[-1].real,1,
-+    {FR->createAnnulusCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	    (yyvsp[(5) - (8)].real),(yyvsp[(7) - (8)].real),1,
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 42:
- #line 222 "ciaoparser.Y"
--    {FR->createCpandaCmd(Vector(yyvsp[-9].vector),
--	    yyvsp[-3].real,yyvsp[-1].real,1,
--	    yyvsp[-7].real,yyvsp[-5].real,1,
-+    {FR->createCpandaCmd(Vector((yyvsp[(3) - (12)].vector)),
-+	    (yyvsp[(9) - (12)].real),(yyvsp[(11) - (12)].real),1,
-+	    (yyvsp[(5) - (12)].real),(yyvsp[(7) - (12)].real),1,
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 43:
- #line 228 "ciaoparser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-3].vector),
--	    Vector(yyvsp[-1].vector),
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (6)].vector)),
-+	    Vector((yyvsp[(5) - (6)].vector)),
- 	    0,
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 44:
- #line 234 "ciaoparser.Y"
--    {FR->createBoxCmd(Vector(yyvsp[-5].vector),
--	     Vector(yyvsp[-3].vector),
--	     yyvsp[-1].real,
-+    {FR->createBoxCmd(Vector((yyvsp[(3) - (8)].vector)),
-+	     Vector((yyvsp[(5) - (8)].vector)),
-+	     (yyvsp[(7) - (8)].real),
- 	     color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-   case 45:
- #line 240 "ciaoparser.Y"
--    {FR->createBoxCirclePointCmd(Vector(yyvsp[-1].vector),
-+    {FR->createBoxCirclePointCmd(Vector((yyvsp[(3) - (4)].vector)),
- 	    color,1,font,text,props,NULL,taglist,cblist);;}
-     break;
- 
-@@ -1388,19 +1721,18 @@
- 
-   case 50:
- #line 252 "ciaoparser.Y"
--    {polylist.append(new Vertex(yyvsp[0].vector));;}
-+    {polylist.append(new Vertex((yyvsp[(1) - (1)].vector)));;}
-     break;
- 
- 
-+/* Line 1267 of yacc.c.  */
-+#line 1730 "ciaoparser.C"
-+      default: break;
-     }
-+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- 
--/* Line 1000 of yacc.c.  */
--#line 1399 "ciaoparser.C"
--
--  yyvsp -= yylen;
--  yyssp -= yylen;
--
--
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-   YY_STACK_PRINT (yyss, yyssp);
- 
-   *++yyvsp = yyval;
-@@ -1429,99 +1761,65 @@
-   if (!yyerrstatus)
-     {
-       ++yynerrs;
--#if YYERROR_VERBOSE
--      yyn = yypact[yystate];
--
--      if (YYPACT_NINF < yyn && yyn < YYLAST)
--	{
--	  YYSIZE_T yysize = 0;
--	  int yytype = YYTRANSLATE (yychar);
--	  const char* yyprefix;
--	  char *yymsg;
--	  int yyx;
--
--	  /* Start YYX at -YYN if negative to avoid negative indexes in
--	     YYCHECK.  */
--	  int yyxbegin = yyn < 0 ? -yyn : 0;
--
--	  /* Stay within bounds of both yycheck and yytname.  */
--	  int yychecklim = YYLAST - yyn;
--	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
--	  int yycount = 0;
--
--	  yyprefix = ", expecting ";
--	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-+#if ! YYERROR_VERBOSE
-+      yyerror (YY_("syntax error"));
-+#else
-+      {
-+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-+	  {
-+	    YYSIZE_T yyalloc = 2 * yysize;
-+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-+	    if (yymsg != yymsgbuf)
-+	      YYSTACK_FREE (yymsg);
-+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-+	    if (yymsg)
-+	      yymsg_alloc = yyalloc;
-+	    else
- 	      {
--		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
--		yycount += 1;
--		if (yycount == 5)
--		  {
--		    yysize = 0;
--		    break;
--		  }
-+		yymsg = yymsgbuf;
-+		yymsg_alloc = sizeof yymsgbuf;
- 	      }
--	  yysize += (sizeof ("syntax error, unexpected ")
--		     + yystrlen (yytname[yytype]));
--	  yymsg = (char *) YYSTACK_ALLOC (yysize);
--	  if (yymsg != 0)
--	    {
--	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
--	      yyp = yystpcpy (yyp, yytname[yytype]);
-+	  }
- 
--	      if (yycount < 5)
--		{
--		  yyprefix = ", expecting ";
--		  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
--		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
--		      {
--			yyp = yystpcpy (yyp, yyprefix);
--			yyp = yystpcpy (yyp, yytname[yyx]);
--			yyprefix = " or ";
--		      }
--		}
--	      yyerror (yymsg);
--	      YYSTACK_FREE (yymsg);
--	    }
--	  else
--	    yyerror ("syntax error; also virtual memory exhausted");
--	}
--      else
--#endif /* YYERROR_VERBOSE */
--	yyerror ("syntax error");
-+	if (0 < yysize && yysize <= yymsg_alloc)
-+	  {
-+	    (void) yysyntax_error (yymsg, yystate, yychar);
-+	    yyerror (yymsg);
-+	  }
-+	else
-+	  {
-+	    yyerror (YY_("syntax error"));
-+	    if (yysize != 0)
-+	      goto yyexhaustedlab;
-+	  }
-+      }
-+#endif
-     }
- 
- 
- 
-   if (yyerrstatus == 3)
-     {
--      /* If just tried and failed to reuse lookahead token after an
-+      /* If just tried and failed to reuse look-ahead token after an
- 	 error, discard it.  */
- 
-       if (yychar <= YYEOF)
--        {
--          /* If at end of input, pop the error token,
--	     then the rest of the stack, then return failure.  */
-+	{
-+	  /* Return failure if at end of input.  */
- 	  if (yychar == YYEOF)
--	     for (;;)
--	       {
--		 YYPOPSTACK;
--		 if (yyssp == yyss)
--		   YYABORT;
--		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--		 yydestruct (yystos[*yyssp], yyvsp);
--	       }
--        }
-+	    YYABORT;
-+	}
-       else
- 	{
--	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
--	  yydestruct (yytoken, &yylval);
-+	  yydestruct ("Error: discarding",
-+		      yytoken, &yylval);
- 	  yychar = YYEMPTY;
--
- 	}
-     }
- 
--  /* Else will try to reuse lookahead token after shifting the error
-+  /* Else will try to reuse look-ahead token after shifting the error
-      token.  */
-   goto yyerrlab1;
- 
-@@ -1531,15 +1829,17 @@
- `---------------------------------------------------*/
- yyerrorlab:
- 
--#ifdef __GNUC__
--  /* Pacify GCC when the user code never invokes YYERROR and the label
--     yyerrorlab therefore never appears in user code.  */
--  if (0)
-+  /* Pacify compilers like GCC when the user code never invokes
-+     YYERROR and the label yyerrorlab therefore never appears in user
-+     code.  */
-+  if (/*CONSTCOND*/ 0)
-      goto yyerrorlab;
--#endif
- 
--  yyvsp -= yylen;
--  yyssp -= yylen;
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYERROR.  */
-+  YYPOPSTACK (yylen);
-+  yylen = 0;
-+  YY_STACK_PRINT (yyss, yyssp);
-   yystate = *yyssp;
-   goto yyerrlab1;
- 
-@@ -1568,9 +1868,10 @@
-       if (yyssp == yyss)
- 	YYABORT;
- 
--      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
--      yydestruct (yystos[yystate], yyvsp);
--      YYPOPSTACK;
-+
-+      yydestruct ("Error: popping",
-+		  yystos[yystate], yyvsp);
-+      YYPOPSTACK (1);
-       yystate = *yyssp;
-       YY_STACK_PRINT (yyss, yyssp);
-     }
-@@ -1578,11 +1879,12 @@
-   if (yyn == YYFINAL)
-     YYACCEPT;
- 
--  YYDPRINTF ((stderr, "Shifting error token, "));
--
-   *++yyvsp = yylval;
- 
- 
-+  /* Shift the error token.  */
-+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-+
-   yystate = yyn;
-   goto yynewstate;
- 
-@@ -1602,21 +1904,39 @@
-   goto yyreturn;
- 
- #ifndef yyoverflow
--/*----------------------------------------------.
--| yyoverflowlab -- parser overflow comes here.  |
--`----------------------------------------------*/
--yyoverflowlab:
--  yyerror ("parser stack overflow");
-+/*-------------------------------------------------.
-+| yyexhaustedlab -- memory exhaustion comes here.  |
-+`-------------------------------------------------*/
-+yyexhaustedlab:
-+  yyerror (YY_("memory exhausted"));
-   yyresult = 2;
-   /* Fall through.  */
- #endif
- 
- yyreturn:
-+  if (yychar != YYEOF && yychar != YYEMPTY)
-+     yydestruct ("Cleanup: discarding lookahead",
-+		 yytoken, &yylval);
-+  /* Do not reclaim the symbols of the rule which action triggered
-+     this YYABORT or YYACCEPT.  */
-+  YYPOPSTACK (yylen);
-+  YY_STACK_PRINT (yyss, yyssp);
-+  while (yyssp != yyss)
-+    {
-+      yydestruct ("Cleanup: popping",
-+		  yystos[*yyssp], yyvsp);
-+      YYPOPSTACK (1);
-+    }
- #ifndef yyoverflow
-   if (yyss != yyssa)
-     YYSTACK_FREE (yyss);
- #endif
--  return yyresult;
-+#if YYERROR_VERBOSE
-+  if (yymsg != yymsgbuf)
-+    YYSTACK_FREE (yymsg);
-+#endif
-+  /* Make sure YYID is used.  */
-+  return YYID (yyresult);
- }
- 
- 
---- saods9-4.0b7.orig/saotk/vector/vector.h
-+++ saods9-4.0b7/saotk/vector/vector.h
-@@ -13,6 +13,10 @@
- 
- #include "tk.h"
- 
-+class Vector;
-+class Matrix;
-+class BBox;
-+
- class Vector {
-   friend class Matrix;
-   friend class Translate;
---- saods9-4.0b7.orig/saotk/colorbar/lut.C
-+++ saods9-4.0b7/saotk/colorbar/lut.C
-@@ -1,4 +1,4 @@
--// Copyright (C) 1999-200
-+// Copyright (C) 1999-2005
- // Smithsonian Astrophysical Observatory, Cambridge, MA, USA
- // For conditions of distribution and use, see copyright notice in "copyright"
- 
---- saods9-4.0b7.orig/ast-3.5/sphmap.c
-+++ saods9-4.0b7/ast-3.5/sphmap.c
-@@ -92,6 +92,7 @@
- #include <stddef.h>
- #include <stdio.h>
- #include <string.h>
-+#include <math.h>
- 
- /* Module Variables. */
- /* ================= */
---- saods9-4.0b7.orig/ast-3.5/slalib.h
-+++ saods9-4.0b7/ast-3.5/slalib.h
-@@ -0,0 +1,60 @@
-+// This is a generated file; see ./debian/README.sla for information.
-+void slaAddet ( double rm, double dm, double eq, double *rc, double *dc ) ;
-+void slaAmpqk ( double ra, double da, double amprms[21],
-+                double *rm, double *dm ) ;
-+void slaCaldj ( int iy, int im, int id, double *djm, int *j ) ;
-+void slaDaf2r ( int ideg, int iamin, double asec, double *rad, int *j ) ;
-+void slaDav2m ( double axvec[3], double rmat[3][3] ) ;
-+double slaDbear ( double a1, double b1, double a2, double b2  ) ;
-+void slaDcc2s ( double v[3], double *a, double *b ) ;
-+void slaDcs2c ( double a, double b, double v[3] ) ;
-+void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] ) ;
-+void slaDimxv ( double dm[3][3], double va[3], double vb[3] ) ;
-+void slaDjcal ( int ndp, double djm, int iymdf[ 4 ], int *j ) ;
-+void slaDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j ) ;
-+void slaDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ) ;
-+void slaDmxm ( double a[3][3], double b[3][3], double c[3][3] ) ;
-+void slaDmxv ( double dm[3][3], double va[3], double vb[3] ) ;
-+double slaDrange ( double angle ) ;
-+double slaDranrm ( double angle ) ;
-+double slaDsep ( double a1, double b1, double a2, double b2 ) ;
-+void slaDtf2d ( int ihour, int imin, double sec, double *days, int *j ) ;
-+void slaDtf2r ( int ihour, int imin, double sec, double *rad, int *j ) ;
-+double slaDvdv( double va[3], double vb[3] ) ;
-+void slaDvn ( double v[3], double uv[3], double *vm ) ;
-+void slaDvxv ( double va[3], double vb[3], double vc[3] ) ;
-+void slaEcmat ( double date, double rmat[3][3] ) ;
-+double slaEpb ( double date ) ;
-+double slaEpb2d ( double epb ) ;
-+double slaEpj ( double date ) ;
-+double slaEpj2d ( double epj ) ;
-+double slaEqeqx ( double date ) ;
-+void slaEqgal ( double dr, double dd, double *dl, double *db ) ;
-+void slaEvp ( double date, double deqx, double dvb[3], double dpb[3], 
-+              double dvh[3], double dph[3] ) ;
-+void slaFk45z ( double r1950, double d1950, double bepoch,
-+                double *r2000, double *d2000 ) ;
-+void slaFk54z ( double r2000, double d2000, double bepoch,
-+                double *r1950, double *d1950,
-+                double *dr1950, double *dd1950 ) ;
-+void slaFk5hz ( double r5, double d5, double jepoch,
-+                double *rh, double *dh ) ;
-+void slaGaleq ( double dl, double db, double *dr, double *dd ) ;
-+void slaGalsup ( double dl, double db, double *dsl, double *dsb ) ;
-+void slaGeoc ( double p, double h, double *r, double *z ) ;
-+double slaGmst ( double ut1 ) ;
-+void slaHfk5z ( double rh, double dh, double jepoch,
-+                double *r5, double *d5,
-+                double *dr5, double *dd5 ) ;
-+void slaMappa ( double eq, double date, double amprms[21] ) ;
-+void slaMapqkz ( double rm, double dm, double amprms[21],
-+                 double *ra, double *da ) ;
-+void slaPrebn ( double bep0, double bep1, double rmatp[3][3] ) ;
-+void slaPrec ( double ep0, double ep1, double rmatp[3][3] ) ;
-+float slaRverot ( float phi, float ra, float dec, float st ) ;
-+float slaRvgalc ( float ra, float dec ) ;
-+float slaRvlg ( float ra, float dec ) ;
-+float slaRvlsrd ( float ra, float dec ) ;
-+float slaRvlsrk ( float ra, float dec ) ;
-+void slaSubet ( double rc, double dc, double eq, double *rm, double *dm ) ;
-+void slaSupgal ( double dsl, double dsb, double *dl, double *db ) ;
---- saods9-4.0b7.orig/ast-3.5/Makefile
-+++ saods9-4.0b7/ast-3.5/Makefile
-@@ -42,6 +42,7 @@
- 	skyaxis.c \
- 	skyframe.c \
- 	slamap.c \
-+	sla.c \
- 	specframe.c \
- 	specmap.c \
- 	sphmap.c \
---- saods9-4.0b7.orig/ast-3.5/slamap.c
-+++ saods9-4.0b7/ast-3.5/slamap.c
-@@ -153,6 +153,7 @@
- #include <stddef.h>
- #include <stdio.h>
- #include <string.h>
-+#include <math.h>
- 
- /* Module Variables. */
- /* ================= */
---- saods9-4.0b7.orig/ast-3.5/plot.c
-+++ saods9-4.0b7/ast-3.5/plot.c
-@@ -12526,6 +12526,7 @@
-    return ret;
- }
- 
-+#if 0
- static void GFlush( AstPlot *this, const char *method, 
-                    const char *class ) {
- /*
-@@ -12592,6 +12593,7 @@
-    }
- 
- }
-+#endif
- 
- static void GLine( AstPlot *this, int n, const float *x, 
-                    const float *y, const char *method, 
---- saods9-4.0b7.orig/ast-3.5/fitschan.c
-+++ saods9-4.0b7/ast-3.5/fitschan.c
-@@ -801,6 +801,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <math.h>
- 
- /* Type Definitions */
- /* ================ */

-- 
image display tool for astronomy



More information about the debian-science-commits mailing list