[SCM] image display tool for astronomy branch, master, updated. 0b50c98c144d9af8e2e8ee2c20367c3de8cda1c7
Ole Streicher
github at liska.ath.cx
Mon Jan 9 09:23:51 UTC 2012
The following commit has been merged in the master branch:
commit 0b50c98c144d9af8e2e8ee2c20367c3de8cda1c7
Author: Ole Streicher <github at liska.ath.cx>
Date: Mon Jan 9 10:20:34 2012 +0100
Add debian files from package saods9_4.0b7-2
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..e4f7a74
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,38 @@
+saods9 for Debian
+-----------------
+
+Upstream DS9 source includes many libraries, including:
+
+ blt2.4z
+ tcl8.4.9
+ tcllib-1.6.1
+ tk8.4.9
+ tkimg1.3rc2
+ tktable2.9
+ zlib-1.2.3 (3 copies!)
+
+I've modified the compilation to depend on the appropriate packages
+and use shared libraries instead.
+
+I've not included the XPA library interface. Let me know if you need
+it.
+
+The upstream README states:
+
+ 1. DS9 comes with Tcl/Tk8.4.5. There are several changes to 2 TCL/TK lib
+ scripts, so you must used this version when building DS9. We had to
+ make small changes to xmfbox.tcl and tkfbox.tcl to allow
+ the '[' and ']' chars, and to handle colormaps correctly.
+
+I'm using the hacked SAO copies for those two files, as well as
+auto.tcl to avoid an error on startup. But, this could cause problems
+since changing internal library files isn't guaranteed to be
+consistent. diff |patch for the present version of those libraries in
+Debian is a consideration.
+
+The upstream copy of SLALIB in ./sla/ is the proprietary, obscured C
+version. It is stripped from the Debian .orig, and a fortran version
+included in its place. It will be periodically synced to the Starlink
+CVS copy.
+
+ -- Justin Pryzby <justinpryzby at users.sf.net>, Tue, 4 Jan 2005 21:53:52 -0500
diff --git a/debian/README.sla b/debian/README.sla
new file mode 100644
index 0000000..8262319
--- /dev/null
+++ b/debian/README.sla
@@ -0,0 +1,7 @@
+./debian/sla_functions is from build log warnings by:
+
+ sed -nre "s/^.*implicit declaration of function '(sla[^']*)'$/\1/p" ../*.build |sort -u >../debian/sla_functions
+
+./sla/slalib.h is (re)generated by:
+
+ ( echo "// This is a generated file; see ./debian/README.sla for information."; for f in $(<../debian/sla_functions); do sed -nre "/^(double|float|void).*$f/{ : loop; /\{$/{ s/\{$/;/; p; q;}; N; b loop; };" sla.c; done; ) >slalib.h
diff --git a/debian/TODO b/debian/TODO
new file mode 100644
index 0000000..e3a64a5
--- /dev/null
+++ b/debian/TODO
@@ -0,0 +1,3 @@
+ds9 manpage [PARTIALLY DONE]
+Separate shared library packages? (esp. for wcs)
+Remove ./debian/shlibs.local; blocked by bug: 339056
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..bb0e48f
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,96 @@
+saods9 (4.0b7-2) unstable; urgency=low
+
+ * QA upload.
+ * Orphan package
+ * Put package to collab-maint git
+ * Fix gcc-4.3 build, closes: #461710
+ * Import changes from ubuntu:
+ + Transition to gfortran, closes: #449456
+ + Fix tcl/tk location, closes: #450475
+ + Add .desktop file and icon for it, closes: #377452
+ - remove dpatch usage: die die die
+ * Ack NMU's; closes: #377113, #444563, #344317
+
+ -- Riku Voipio <riku.voipio at iki.fi> Sun, 30 Mar 2008 15:19:23 +0300
+
+saods9 (4.0b7-1.5) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Switched to dynamic loading of tcllib packages. It fixes FTBFS caused
+ by tcllib upgrade (closes: #409488).
+ * Added build-dependency on libtk-img-dev because of libtk-img splitting.
+ * Switched to dynamic loading of Img package. It fixed FTBFS caused by
+ libtk-img upgrade. Also, it fixes loading of incorrect Img libraries
+ (closes: #429332).
+ * Included patch by Martin Michlmayr which fixes FTBFS with GCC 4.3
+ (closes: #417681).
+
+ -- Sergei Golovan <sgolovan at debian.org> Sat, 29 Sep 2007 14:35:47 +0400
+
+saods9 (4.0b7-1.4) unstable; urgency=low
+
+ * NMU (credativ BSP)
+ * (Build-)depend on libtktable2.9, to kill off the old version. This also
+ replaces the dep on the -dev package, which was unneeded (.so is in the
+ lib package).
+ This will allow us to kill off libtktable, which is rc-buggy
+
+ -- Marc 'HE' Brockschmidt <he at debian.org> Fri, 15 Sep 2006 11:36:22 +0200
+
+saods9 (4.0b7-1.3) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * Add a manual dependency from saods9 to libtktable, as dpkg-shlibdeps
+ refuses to add automatic dependency information for any soname not on
+ the form "foo.so.bar" or "foo-bar.so", and "libTkTable2.9.so" is neither.
+ (Closes: #374795)
+
+ -- Steinar H. Gunderson <sesse at debian.org> Thu, 6 Jul 2006 20:52:00 +0200
+
+saods9 (4.0b7-1.2) unstable; urgency=low
+
+ * NMU
+ * Fix FTBFS with gcc-4.1 (Closes: #356979)
+ * Use /usr/lib/tcllib1.8 instead of 1.7
+ * Link against tktable2.9
+ * Build-depends on libtktable-dev
+
+ -- Julien Danjou <acid at debian.org> Mon, 29 May 2006 15:42:39 +0200
+
+saods9 (4.0b7-1.1) unstable; urgency=low
+
+ * Non-maintainer upload at request of maintainer.
+ * make.linux: Change /usr/X11R6/include to /usr/include/X11 in preparation
+ for the coming X directory rearrangement (Closes: #344317).
+
+ -- Kevin B. McCarty <kmccarty at debian.org> Tue, 10 Jan 2006 10:08:27 -0500
+
+saods9 (4.0b7-1) unstable; urgency=low
+
+ * New upstream release;
+ Along with a 3-line patch, fixes FTBFS with new GCC (Closes: #318042);
+ Causes rebuild with GCC 4, as needed for transition.
+ * Bump Standards-Version to 3.6.2 (no changes required).
+ * ./debian/rules: get_orig_source now exists to generate a DFSG .orig
+ tarball using fortran CVS copy of SLALIB, the C implementation of which is
+ not GPL; the sources distributed by CfA are obfuscated (Closes: #336098).
+ * Rewrite copyright file; include the unmodified license as distributed by
+ CfA; document all copyright holders and licenses for packages included in
+ the DFSG .orig tarball (Closes: #303665).
+ * ./debian/control: Priority: extra (Closes: #315690).
+ * Include generated manpage; a first step towards closing #303651.
+ * Include documentation relevent to package; (Closes: #303668); selected
+ items from ./ds9/doc/ and ./xpa/doc/; also include docbase templates.
+
+ -- Justin Pryzby <justinpryzby at users.sf.net> Thu, 17 Nov 2005 23:56:09 -0500
+
+saods9 (3.0.3-1) unstable; urgency=low
+
+ * Initial Release (Closes: #289371)
+ - Thanks Aurelien Jarno.
+ * Revert commented-out include in saotk/hal/Makefile.
+ - Thanks Michael Weber.
+ * Remove rpath from ds9 binary.
+
+ -- Justin Pryzby <justinpryzby at users.sf.net> Tue, 22 Mar 2005 11:29:52 -0500
+
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..df2252b
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,42 @@
+Source: saods9
+Section: science
+Priority: extra
+Maintainer: Debian QA Group <packages at qa.debian.org>
+Build-Depends: debhelper (>= 4.0.0), libtk-img-dev, zlib1g-dev, blt-dev, tcl8.4-dev, tcllib, tk8.4-dev, libtktable2.9, gfortran
+Standards-Version: 3.7.3
+Homepage: http://hea-www.harvard.edu/RD/ds9/
+Vcs-Git: git://git.debian.org/git/collab-maint/saods9.git
+Vcs-Browser: http://git.debian.org/?p=collab-maint/saods9.git
+
+Package: saods9
+Architecture: any
+Depends: libtk-img, libtktable2.9, tcllib, ${shlibs:Depends}
+Description: image display tool for astronomy
+ DS9 is an application for astronomical imaging and data
+ visualization.
+ .
+ DS9 is the modern imtool used by astronomers. It is most
+ distinguished by its support for displaying images of high dynamic
+ range (such as 16 bit greyscale FITS files). Whereas many other
+ tools will only read an approximation to such files, DS9 works in
+ full precision, and uses various display parameters to map input data
+ into 8 bit data which can be displayed on the screen.
+ .
+ Available parameters for the mapping include: brightness, contrast,
+ false color, and nonlinear input mapping (such as logarithm, square
+ root, square, etc.)
+ .
+ Although it may be useful in other fields, DS9 includes a fair number
+ of features specific to astronomy. There is an astronomical "name
+ resolver" which allows a lookup of an arbitrary named object to its
+ coordinates. Given the coordinates of a field, online archive
+ servers may be queried, and an image retrieved. DS9 thusly
+ implements a preliminary "Virtual Observatory".
+ .
+ DS9 is entirely controllable from external programs ("XPA"), which
+ simplifies complex tasks such as data acquisition, realtime display,
+ and batch analysis.
+ .
+ If images include WCS (World Coordinate System) keywords, then they
+ may be "blinked" to search for moving or changing objects.
+ .
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..d53de9d
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,581 @@
+This package was debianized by Justin Pryzby <justinpryzby at users.sf.net> on
+Tue, 4 Jan 2005 21:53:52 -0500. The Debian .diff is hereby placed
+into the public domain.
+
+DS9 "proper" was downloaded from:
+ http://hea-www.harvard.edu/saord/download/ds9/source/ds9.4.0b7.tar.gz
+ http://hea-www.harvard.edu/saord/download/ds9/source/
+ http://hea-www.harvard.edu/RD/ds9/
+
+The fortran implementation of SLAlib is GPL-licensed by Starlink, but
+the C implementation is considered proprietary, and the DS9 copy is
+obfuscated. ./debian/rules:get_orig_source creates a DFSG-free
+tarball by retrieving the fortran version of SLA from Starlink CVS.
+
+./ast-3.5/ unless otherwise noted:
+ Copyright (C) 1999-2004 Central Laboratory of the Research Councils
+ Upstream authors: D.S. Berry (Starlink), R.F. Warren-Smith (Starlink)
+
+ LGPL from COPYING.LIB
+
+ast-3.5/wcstrig.c
+ast-3.5/proj.h
+ast-3.5/proj.c
+ast-3.5/wcsmath.h
+ast-3.5/wcstrig.h
+ Copyright (C) 1995-2002, Mark Calabretta <mcalabre at atnf.csiro.au>
+
+ LGPL
+
+ast-3.5/dssmap.c
+ast-3.5/dssmap.h
+ Copyright 2004 Central Laboratory of the Research Councils
+
+ Modifications by Doug Mink are copyright: 1988 Smithsonian
+ Astrophysical Observatory
+
+ You may do anything you like with these files except remove
+ this copyright. The Smithsonian Astrophysical Observatory
+ makes no representations about the suitability of this
+ software for any purpose. It is provided "as is" without
+ express or implied warranty.
+
+ast-3.5/slalib.h
+ Copyright P.T.Wallace. All rights reserved.
+
+ This file is removed and replaced with an empty file 'cause it
+ isn't necessary.
+
+./checkdns/
+ Copyright (C) 1999-2005 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ GPL
+
+./ds9/ unless otherwise noted
+ Copyright (C) 1999-2005 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ GPL
+
+(The following 4 files are copies modified by SAO; the *.tcl ones are
+copied from ./tcl8.4.9/ to ./ds9/ by me).
+
+./ds9/auto.tcl
+ Copyright (c) 1991-1993 The Regents of the University of California.
+ Copyright (c) 1994-1998 Sun Microsystems, Inc.
+ Modifications are copyright SAO 1999-2005.
+
+ [Same license as ./ds9/tkfbox.tcl]
+
+./win/tkWinDraw.c
+ Copyright (c) 1995 Sun Microsystems, Inc.
+ Copyright (c) 1994 Software Research Associates, Inc.
+
+ [Same license as ./ds9/tkfbox.tcl]
+
+./ds9/tkfbox.tcl
+./ds9/xmfbox.tcl
+ Copyright (c) 1994-1998 Sun Microsystems, Inc.
+ Copyright (c) 1998-2000 Scriptics Corporation
+
+ This software is copyrighted by the Regents of the University
+ of California, Sun Microsystems, Inc., and other parties. The
+ following terms apply to all files associated with the
+ software unless explicitly disclaimed in individual files.
+
+ The authors hereby grant permission to use, copy, modify,
+ distribute, and license this software and its documentation
+ for any purpose, provided that existing copyright notices are
+ retained in all copies and that this notice is included
+ verbatim in any distributions. No written agreement, license,
+ or royalty fee is required for any of the authorized uses.
+ Modifications to this software may be copyrighted by their
+ authors and need not follow the licensing terms described
+ here, provided that the new terms are clearly indicated on the
+ first page of each file where they apply.
+
+ IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY
+ PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE,
+ ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE
+ AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON
+ AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
+ OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
+ ENHANCEMENTS, OR MODIFICATIONS.
+
+ GOVERNMENT USE: If you are acquiring this software on behalf
+ of the U.S. government, the Government shall have only
+ "Restricted Rights" in the software and related documentation
+ as defined in the Federal Acquisition Regulations (FARs) in
+ Clause 52.227.19 (c) (2). If you are acquiring the software
+ on behalf of the Department of Defense, the software shall be
+ classified as "Commercial Computer Software" and the
+ Government shall have only "Restricted Rights" as defined in
+ Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the
+ foregoing, the authors grant the U.S. Government and others
+ acting in its behalf permission to use and distribute the
+ software in accordance with the terms specified in this
+ license.
+
+./htmlwidget/ unless otherwise noted
+ Copyright (C) 1997,1998 D. Richard Hipp
+
+ LGPL
+
+./htmlwidget/configure:
+ Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+
+ This configure script is free software; the Free Software
+ Foundation gives unlimited permission to copy, distribute and
+ modify it.
+
+./iis/
+ Original authors: Doug Tody, NOAO Mike Fitzpatrick, NOAO
+
+ Modifications are copyright (C) 1999-2005 Smithsonian
+ Astrophysical Observatory, Cambridge, MA, USA
+
+ GPL
+
+./mktclapp/ unless otherwise noted
+ Copyright (C) 1996,1997,1998 D. Richard Hipp
+
+ GPL
+
+./mktclapp/balloon.tcl
+ Copyright (C) 1996-1997 Stewart Allen
+
+ GPL
+
+./saotk/ unless otherwise noted
+ Copyright (C) 1999-2005 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ GPL
+
+./saotk/fdstream.hpp
+ (C) Copyright Nicolai M. Josuttis 2001.
+
+ Permission to copy, use, modify, sell and distribute this
+ software is granted provided this copyright notice appears in
+ all copies. This software is provided "as is" without express
+ or implied warranty, and with no claim as to its suitability
+ for any purpose.
+
+./saotk/panner/parser.H
+./saotk/panner/parser.C
+./saotk/fitsy++/parser.H
+./saotk/fitsy++/parser.C
+./saotk/frame/parser.H
+./saotk/frame/prosparser.C
+./saotk/frame/parser.C
+./saotk/frame/ds9parser.H
+./saotk/frame/xyparser.H
+./saotk/frame/saoparser.C
+./saotk/frame/prosparser.H
+./saotk/frame/saoparser.H
+./saotk/frame/ciaoparser.H
+./saotk/frame/tngparser.H
+./saotk/frame/ds9parser.C
+./saotk/frame/tngparser.C
+./saotk/frame/xyparser.C
+./saotk/frame/ciaoparser.C
+./saotk/colorbar/parser.H
+./saotk/colorbar/parser.C
+./saotk/magnifier/parser.H
+./saotk/magnifier/parser.C
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free
+ Software Foundation, Inc.
+
+ GPL
+
+./saotk/FlexLexer.h
+ This code is derived from software contributed to Berkeley by
+ Kent Williams and Tom Epperly.
+
+ Redistribution and use in source and binary forms with or
+ without modification are permitted provided that: (1) source
+ distributions retain this entire copyright notice and comment,
+ and (2) distributions including binaries display the following
+ acknowledgement: ``This product includes software developed
+ by the University of California, Berkeley and its
+ contributors'' in the documentation or other materials
+ provided with the distribution and in all advertising
+ materials mentioning features or use of this software.
+ Neither the name of the University nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+(It is my understanding that this is the original "BSD with
+advertizing clause", and, since it is licensed by Berkeley, has been
+since relicensed without the advertizing clause. Here, I only restate
+the license included upstream.)
+
+./xpa-2.1.6/ unless otherwise noted
+ Copyright (c) 1999-2004 Smithsonian Astrophylesical
+ Observatory
+
+ GPL
+
+./xpa-2.1.6/configure
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
+ 2001, 2002 Free Software Foundation, Inc.
+
+ This configure script is free software; the Free Software
+ Foundation gives unlimited permission to copy, distribute and
+ modify it.
+
+./xpa-2.1.6/install-sh
+ Copyright 1991 by the Massachusetts Institute of Technology
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby
+ granted without fee, provided that the above copyright notice
+ appear in all copies and that both that copyright notice and
+ this permission notice appear in supporting documentation, and
+ that the name of M.I.T. not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. M.I.T. makes no
+ representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+
+./xpa-2.1.6/config.sub
+./xpa-2.1.6/config.guess
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002 Free Software Foundation, Inc.
+
+ GPL
+
+./funtools-1.3.0b9/ unless otherwise noted
+ Copyright (C) 1999-2003 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ GPL
+
+./funtools-1.3.0b9/filter/idx.tab.c
+./funtools-1.3.0b9/filter/idx.tab.h
+./funtools-1.3.0b9/fitsy/Makefile.in
+./funtools-1.3.0b9/gnu/sort.c
+./funtools-1.3.0b9/gnu/system.h
+./funtools-1.3.0b9/jointable.c
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ GPL
+
+install-sh in various places
+ Copyright 1991 by the Massachusetts Institute of Technology
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby
+ granted without fee, provided that the above copyright notice
+ appear in all copies and that both that copyright notice and
+ this permission notice appear in supporting documentation, and
+ that the name of M.I.T. not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. M.I.T. makes no
+ representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+
+./funtools-1.3.0b9/search.c
+ Copyright 1991, 1993, 1995, 1999, 2003 John B. Roll jr.
+
+ This file is unused, and thus removed for simplicity.
+
+tkmpeg/ unless otherwise noted
+ Copyright 2002 Ingo Oppermann (ingo_opp at users.sourceforge.net)
+ Modifications are copyright 1999-2005 Smithsonian
+ Astrophysical Observatory, Cambridge, MA, USA
+
+ GPL
+
+wcssubs-3.5.6/ unless otherwise noted
+ Doug Mink <dmink at cfa.harvard.edu>
+ Copyright (C) 1996-2004 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+./wcssubs-3.5.6/imio.c
+./wcssubs-3.5.6/wcs.c
+./wcssubs-3.5.6/fitsfile.h
+./wcssubs-3.5.6/imhfile.c *
+./wcssubs-3.5.6/dateutil.c
+./wcssubs-3.5.6/fitsfile.c
+./wcssubs-3.5.6/wcs.h
+./wcssubs-3.5.6/platepos.c
+./wcssubs-3.5.6/imio.h
+./wcssubs-3.5.6/hput.c
+./wcssubs-3.5.6/hget.c
+./wcssubs-3.5.6/wcsinit.c
+./wcssubs-3.5.6/fileutil.c
+./wcssubs-3.5.6/dsspos.c
+./wcssubs-3.5.6/fitshead.h
+./wcssubs-3.5.6/distort.c
+./wcssubs-3.5.6/iget.c
+ Doug Mink <dmink at cfa.harvard.edu>
+ Copyright (C) 1996-2004 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ LGPL
+
+./wcssubs-3.5.6/iraf2fits.c
+ Copyright: 1998 Smithsonian Astrophysical Observatory
+
+ You may do anything you like with this file except remove this
+ copyright. The Smithsonian Astrophysical Observatory makes no
+ representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+
+./wcssubs-3.5.6/sph.c
+./wcssubs-3.5.6/cel.c
+./wcssubs-3.5.6/wcstrig.c
+./wcssubs-3.5.6/proj.c
+./wcssubs-3.5.6/wcslib.h
+./wcssubs-3.5.6/wcslib.c
+./wcssubs-3.5.6/lin.c
+ Copyright (C) 1995-2002, Mark Calabretta
+ <mcalabre at atnf.csiro.au>
+
+ LGPL
+
+./wcssubs-3.5.6/imhfile.c
+./wcssubs-3.5.6/tnxpos.c
+./wcssubs-3.5.6/wcscon.c
+./wcssubs-3.5.6/worldpos.c
+
+./wcssubs-3.5.6/wcspos.c
+ Bill Cotton, NRAO
+
+ LGPL
+
+./wcssubs-3.5.6/slasubs.c
+ Starlink subroutines by Patrick Wallace used by wcscon.c
+ subroutines
+
+ LGPL?
+
+./sla/
+ Copyright P.T.Wallace.
+
+ The C implementation of SLA lib is proprietary and available
+ commercially from the author.
+
+ The C files distributed by SAO are obfuscated.
+
+ The fortran implementation distributed by starlink CVS is GPL;
+ this is the copy that is used. See
+ debian/rules:get_orig_source.
+
+./win/
+ Copyright (C) 1999-2005 Smithsonian Astrophysical Observatory,
+ Cambridge, MA, USA
+
+ GPL
+
+Debian DS9 depends on and links dynamically against the following
+libraries:
+
+zlib
+ Copyright (C) 1995-1998 Jean-loup Gailly <jloup at gzip.org> and
+ Mark Adler <madler at alumni.caltech.edu>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+blt
+ Upstream author: G. Howlett (Lucent)
+ Copyright 1991-1998 by Bell Labs Innovations for Lucent
+ Technologies.
+
+ Permission to use, copy, modify, and distribute this software
+ and its documentation for any purpose and without fee is
+ hereby granted, provided that the above copyright notice
+ appear in all copies and that both that the copyright notice
+ and warranty disclaimer appear in supporting documentation,
+ and that the names of Lucent Technologies any of their
+ entities not be used in advertising or publicity pertaining to
+ distribution of the software without specific, written prior
+ permission.
+
+ Lucent Technologies disclaims all warranties with regard to
+ this software, including all implied warranties of
+ merchantability and fitness. In no event shall Lucent
+ Technologies be liable for any special, indirect or
+ consequential damages or any damages whatsoever resulting from
+ loss of use, data or profits, whether in an action of
+ contract, negligence or other tortuous action, arising out of
+ or in connection with the use or performance of this software.
+
+libtk-img
+ Upstream Author: Jan Nijtmans <j.nijtmans at chello.nl>
+
+ This software is copyrighted by Jan Nijtmans (the maintainer)
+ and a lot of other people who contributed code (most notably
+ Andreas Kupries, Thomas G. Lane, Ioi K. Lam, Mario Weilguni
+ and Roger E Critchlow Jr). The following terms apply to all
+ files associated with the software unless explicitly
+ disclaimed in individual files.
+
+ The authors hereby grant permission to use, copy, modify,
+ distribute, and license this software and its documentation
+ for any purpose, provided that existing copyright notices are
+ retained in all copies and that this notice is included
+ verbatim in any distributions. No written agreement, license,
+ or royalty fee is required for any of the authorized uses.
+ Modifications to this software may be copyrighted by their
+ authors and need not follow the licensing terms described
+ here, provided that the new terms are clearly indicated on the
+ first page of each file where they apply.
+
+ IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY
+ PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE,
+ ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE
+ AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON
+ AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
+ OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
+ ENHANCEMENTS, OR MODIFICATIONS.
+
+ GOVERNMENT USE: If you are acquiring this software on behalf
+ of the U.S. government, the Government shall have only
+ "Restricted Rights" in the software and related documentation
+ as defined in the Federal Acquisition Regulations (FARs) in
+ Clause 52.227.19 (c) (2). If you are acquiring the software
+ on behalf of the Department of Defense, the software shall be
+ classified as "Commercial Computer Software" and the
+ Government shall have only "Restricted Rights" as defined in
+ Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the
+ foregoing, the authors grant the U.S. Government and others
+ acting in its behalf permission to use and distribute the
+ software in accordance with the terms specified in this
+ license.
+
+tktable
+ This software is copyrighted by Jeffrey Hobbs
+ <jeff.hobbs at acm.org>. The following terms apply to all files
+ associated with the software unless explicitly disclaimed in
+ individual files.
+
+ The authors hereby grant permission to use, copy, modify,
+ distribute, and license this software and its documentation
+ for any purpose, provided that existing copyright notices are
+ retained in all copies and that this notice is included
+ verbatim in any distributions. No written agreement, license,
+ or royalty fee is required for any of the authorized uses.
+
+ IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY
+ PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE,
+ ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE
+ AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON
+ AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
+ OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
+ ENHANCEMENTS, OR MODIFICATIONS.
+
+ RESTRICTED RIGHTS: Use, duplication or disclosure by the U.S.
+ government is subject to the restrictions as set forth in
+ subparagraph (c) (1) (ii) of the Rights in Technical Data and
+ Computer Software Clause as DFARS 252.227-7013 and FAR
+ 52.227-19.
+
+ SPECIAL NOTES:
+
+ This software also falls under the bourbon_ware clause:
+
+ Should you find this software useful in your daily work, you
+ should feel obliged to take the author out for a drink if the
+ opportunity presents itself. The user may feel exempt from
+ this clause if they are under 21 or think the author has
+ already partaken of too many drinks.
+
+libc6
+libg2c0
+libgcc1
+libstdc++6
+libx11-6|xlibs
+tcl8.4 tk8.4 John Ousterhout (et al.)
+
+DS9 Upstream Author: William Joye <wjoye at cfa.harvard.edu>
+XPA Upstream Author: Eric Mandel <eric at head.cfa.harvard.edu>
+
+DS9 and XPA License:
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of
+ the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General Public License
+can be found in `/usr/share/common-licenses/GPL'.
+
+Some of the above software is licensed under the GNU Lesser General
+Public License:
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later
+ version.
+
+ This library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU Lesser General Public License for more
+ details.
+
+ You should have received a copy of the GNU Lesser General
+ Public License along with this library; if not, write to the
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU Lesser General Public
+License can be found in `/usr/share/common-licenses/LGPL'.
diff --git a/debian/ds9.1 b/debian/ds9.1
new file mode 100644
index 0000000..ae85727
--- /dev/null
+++ b/debian/ds9.1
@@ -0,0 +1,3399 @@
+.TH DS9 1 "14 November 2005"
+.SH NAME
+ds9 - image tool for astronomy
+.SH SYNOPSIS
+.B ds9
+.RI [ options ]
+.br
+.SH DESCRIPTION
+.B DS9
+DS9 is the modern image tool used by astronomers for visualization of
+astronomical data. It supports a plethora of command line options,
+which may be used in a script-like fashion. An instance of the
+program is entirely controllable from the commandline with the XPA
+tools.
+
+.SH OPTIONS
+.TP
+
+
+.TP
+.BR \-help
+Displays list of Command Line Options. Users of csh and tcsh may
+ have to quote.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-?
+ \-\- \-help
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-\- \-help
+.RE
+
+.RS 0
+ds9 '\-?'
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-2mass
+Support for 2MASS Digital Sky Survey. The first three options will
+ download an image based on the name or specified fk5 coordinate.
+ The remaining options are used to configure downloads.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-2mass [<object> ]
+ [name <object> ]
+ [coord <ra> <dec> ] # in wcs fk5
+ [survey j| h| k]
+ [size <radius> ] # in arcsec
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-2mass m31
+.RE
+
+.RS 0
+ds9 \-2mass name m31
+.RE
+
+.RS 0
+ds9 \-2mass coord 00:42:44.404 +41:16:08.78
+.RE
+
+.RS 0
+ds9 \-2mass survey j
+.RE
+
+.RS 0
+ds9 \-2mass size 600
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-about
+Get DS9 credits.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-about
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-about
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-analysis
+Load analysis file.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-analysis filename
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-analysis my.analysis
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-array
+Load an array.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-array
+ <filename> [[xdim=<x> , ydim=<y> | dim=<dim> ] , zdim=<z> , bitpix=<b> , skip=
+ <s> ,
+ arch=[littleendian| bigendian] ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-array bar.arr[xdim=512, ydim=512, zdim=1, bitpix=16] # load
+.RE
+ 512x512 short
+
+.RS 0
+ds9 \-array bar.arr[dim=256, bitpix=\-32, skip=4] # load 256x256
+.RE
+ float with 4 byte head
+
+.RS 0
+ds9 \-array bar.arr[dim=512, bitpix=32, arch=littleendian] # load
+.RE
+ 512x512 long, intel
+
+.RE
+.RE
+
+
+.TP
+.BR \-bin
+Controls binning factor, binning buffer size, and binning
+ function for binning FITS bin tables.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-bin [about <x> <y> ]
+ [buffersize <value> ]
+ [cols <x> <y> ]
+ [factor <value> [<value> ] ]
+ [depth <value> ]
+ [filter <string> ]
+ [function average| sum]
+ [to fit]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-bin about 4096 4096
+.RE
+
+.RS 0
+ds9 \-bin buffersize 512
+.RE
+
+.RS 0
+ds9 \-bin cols detx dety
+.RE
+
+.RS 0
+ds9 \-bin factor 4
+.RE
+
+.RS 0
+ds9 \-bin factor 4 2
+.RE
+
+.RS 0
+ds9 \-bin depth 10
+.RE
+
+.RS 0
+ds9 \-bin filter '{pha > 5}'
+.RE
+
+.RS 0
+ds9 \-bin function sum
+.RE
+
+.RS 0
+ds9 \-bin to fit
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-blink
+Activates Blink Mode.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-blink
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-blink
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-blue
+For RGB frames, sets the current color channel to blue.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-blue
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-blue foo.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-catalog
+Support for catalogs.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-catalog [cds
+ sao| hst| gsc| tycho| ac| ua2| ub1| ucac2| 2mass| denis| rosat| rosf| first]
+ [cds <catalogid> ]
+ [load <filename> ]
+ [<catname> ] [name <object> ]
+ [<catname> ] [coordinate <ra> <dec> <coordinate system> ]
+ [<catname> ] [size <width> <height> degrees| arcmin| arcsec]
+ [<catname> ] [save <filename> ]
+ [<catname> ] [filter <string> ]
+ [<catname> ] [filter load <filename> ]
+ [<catname> ] [clear]
+ [<catname> ] [retreive]
+ [<catname> ] [cancel]
+ [<catname> ] [print]
+ [<catname> ] [close]
+ [<catname> ] [server
+ cds| sao| cadc| adac| iucaa| bejing| cambridge| ukirt]
+ [<catname> ] [symbol shape {circle point}| {box
+ point}| {diamond point}|
+ {cross point}| {x point}| {arrow
+ point}| {boxcircle point}|
+ circle| ellipse| box| text]
+ [<catname> ] [symbol color <colorname> ]
+ [<catname> ] [symbol load <filename> ]
+ [<catname> ] [sort <columnname> incr| decr]
+ [<catname> ] [maxrows <number> ]
+ [<catname> ] [allcols]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-catalog cds 2mass
+.RE
+
+.RS 0
+ds9 \-catalog cds "I/252"
+.RE
+
+.RS 0
+ds9 \-catalog load foo.cat
+.RE
+
+.RS 0
+ds9 \-catalog cat2mass symbol color red
+.RE
+
+.RS 0
+ds9 \-catalog name m51
+.RE
+
+.RS 0
+ds9 \-catalog coordinate 202.48 47.21 fk5
+.RE
+
+.RS 0
+ds9 \-catalog size 22 22 arcmin
+.RE
+
+.RS 0
+ds9 \-catalog save bar.cat
+.RE
+
+.RS 0
+ds9 \-catalog filter "$Jmag> 10"
+.RE
+
+.RS 0
+ds9 \-catalog filter load foo.flt
+.RE
+
+.RS 0
+ds9 \-catalog clear
+.RE
+
+.RS 0
+ds9 \-catalog retreive
+.RE
+
+.RS 0
+ds9 \-catalog cancel
+.RE
+
+.RS 0
+ds9 \-catalog print
+.RE
+
+.RS 0
+ds9 \-catalog close
+.RE
+
+.RS 0
+ds9 \-catalog server sao
+.RE
+
+.RS 0
+ds9 \-catalog symbol shape "{boxcircle point}"
+.RE
+
+.RS 0
+ds9 \-catalog symbol color red
+.RE
+
+.RS 0
+ds9 \-catalog symbol load foo.sym
+.RE
+
+.RS 0
+ds9 \-catalog sort "Jmag" incr
+.RE
+
+.RS 0
+ds9 \-catalog maxrows 2000
+.RE
+
+.RS 0
+ds9 \-catalog allcols
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-cmap
+Controls the colormap for the current frame. The colormap name is
+ not case sensitive. A valid contrast value is from 0 to 10 and
+ bias value from 0 to 1.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-cmap [<colormap> ]
+ [file <filename> ]
+ [invert yes| no]
+ [value <contrast> <bias> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-cmap Heat
+.RE
+
+.RS 0
+ds9 \-cmap file foo.sao
+.RE
+
+.RS 0
+ds9 \-cmap invert yes
+.RE
+
+.RS 0
+ds9 \-cmap value 5 .5
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-contour
+Controls contours in the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-contour [yes| no]
+ [copy]
+ [clear]
+ [paste <coordinate system> [<sky frame> ] <color> <width> ]
+ [load <filename> <coordinate system> [<sky frame> ] <color
+ <width> ]
+ [save <filename> <coordinate system> [<sky frame> ] ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-contour
+.RE
+
+.RS 0
+ds9 \-contour yes
+.RE
+
+.RS 0
+ds9 \-contour copy
+.RE
+
+.RS 0
+ds9 \-contour clear
+.RE
+
+.RS 0
+ds9 \-contour paste wcs fk4 red 2
+.RE
+
+.RS 0
+ds9 \-contour load foo.con wcs fk5 yellow 2
+.RE
+
+.RS 0
+ds9 \-contour save foo.con wcs fk5
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-crosshair
+Controls the current position of the crosshair in the current
+ frame. DS9 is placed in crosshair mode when the crosshair is set.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-crosshair [x y <coordinate system> [<sky frame> ] [<sky format> ] ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-crosshair 100 100 physical # set crosshair in physical
+.RE
+
+.RS 0
+ds9 \-crosshair 345 58.8 wcs fk5 # set crosshair in wcs coords
+.RE
+
+.RS 0
+ds9 \-crosshair 23:01:00 +58:52:51 wcs fk5
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-datacube
+Controls FITS datacube.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-datacube [play| stop| next| prev| first| last]
+ [#]
+ [interval #]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-datacube play
+.RE
+
+.RS 0
+ds9 \-datacube last
+.RE
+
+.RS 0
+ds9 \-datacube 3
+.RE
+
+.RS 0
+ds9 \-datacube interval 2
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-dss
+Support for Digital Sky Survey. The first three options will
+ download an image based on the name or specified fk5 coordinate.
+ The remaining options are used to configure downloads.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-dss [<object> ]
+ [name <object> ]
+ [coord <ra> <dec> ] # in wcs fk5
+ [server sao| stsci| eso]
+ [survey dss| dss2red| dss2blue]
+ [size <width> <height> ] # in arcmin
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-dss m31
+.RE
+
+.RS 0
+ds9 \-dss name m31
+.RE
+
+.RS 0
+ds9 \-dss coord 00:42:44.404 +41:16:08.78
+.RE
+
+.RS 0
+ds9 \-dss server eso
+.RE
+
+.RS 0
+ds9 \-dss survey dss2red
+.RE
+
+.RS 0
+ds9 \-dss size 10 10
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-exit
+
+.RE
+.RE
+
+
+.TP
+.BR \-fifo
+Set the name of the IRAF input and output fifos. The default is
+ /dev/imt1. These fifos are used by IRAF to communicate with DS9.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-fifo name
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-fifo /dev/imt1
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-fifo_only
+Only use IRAF input and output fifos. Same as \-port 0 \-unix
+ none.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-fifo_only
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-fifo_only
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-fits
+Load FITS file.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-fits <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-fits foo.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-sfits
+Load split FITS file.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-sfits <filename> <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-sfits foo.hdr foo.arr
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-frame
+Controls frame functions. Frames may be created, deleted, reset,
+ and centered. While return the current frame number. If you goto a
+ frame that does not exists, it will be created. If the frame is
+ hidden, it will be shown. The 'frameno' option is available for
+ backward compatibility.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-frame [center [#| all] ]
+ [clear [#| all] ]
+ [new [rgb] ]
+ [delete [#| all] ]
+ [reset [#| all] ]
+ [refresh [#| all] ]
+ [hide [#| all] ]
+ [show [#| all] ]
+ [first]
+ [next]
+ [prev]
+ [last]
+ [frameno #]
+ [#]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-frame center
+.RE
+
+.RS 0
+ds9 \-frame center 1
+.RE
+
+.RS 0
+ds9 \-frame center all
+.RE
+
+.RS 0
+ds9 \-frame clear
+.RE
+
+.RS 0
+ds9 \-frame new
+.RE
+
+.RS 0
+ds9 \-frame new rgb
+.RE
+
+.RS 0
+ds9 \-frame delete
+.RE
+
+.RS 0
+ds9 \-frame reset
+.RE
+
+.RS 0
+ds9 \-frame refresh
+.RE
+
+.RS 0
+ds9 \-frame hide
+.RE
+
+.RS 0
+ds9 \-frame show 1
+.RE
+
+.RS 0
+ds9 \-frame first
+.RE
+
+.RS 0
+ds9 \-frame next
+.RE
+
+.RS 0
+ds9 \-frame prev
+.RE
+
+.RS 0
+ds9 \-frame last
+.RE
+
+.RS 0
+ds9 \-frame frameno 4
+.RE
+
+.RS 0
+ds9 \-frame 3
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-geometry
+Define the initial window geometry. This includes all of the
+ ds9 window, not just the image space. see X(1).
+
+.RS 4
+.B Syntax
+.RS 4
+ \-geometry value
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-geometry 640x480
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-green
+For RGB frames, sets the current color channel to green.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-green
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-green foo.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-grid
+Controls coordinate grid.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-grid [yes| no]
+ [load <filename> ]
+ [save <filename> ]
+ [system <coordinate system> ]
+ [sky <sky frame> ]
+ [skyformat <skyformat> ]
+ [type analysis| publication]
+ [type axes interior| exterior]
+ [type numerics interior| exterior]
+ [view grid| axes| title| border| vertical yes| no]
+ [view axes numbers| tickmarks| label yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-grid
+.RE
+
+.RS 0
+ds9 \-grid yes
+.RE
+
+.RS 0
+ds9 \-grid load foo.grd
+.RE
+
+.RS 0
+ds9 \-grid save foo.grd
+.RE
+
+.RS 0
+ds9 \-grid system wcs
+.RE
+
+.RS 0
+ds9 \-grid sky fk5
+.RE
+
+.RS 0
+ds9 \-grid skyformat degrees
+.RE
+
+.RS 0
+ds9 \-grid type analysis
+.RE
+
+.RS 0
+ds9 \-grid type axes interior
+.RE
+
+.RS 0
+ds9 \-grid type numerics interior
+.RE
+
+.RS 0
+ds9 \-grid view grid yes
+.RE
+
+.RS 0
+ds9 \-grid view axes yes
+.RE
+
+.RS 0
+ds9 \-grid view axes numbers yes
+.RE
+
+.RS 0
+ds9 \-grid view axes tickmarks yes
+.RE
+
+.RS 0
+ds9 \-grid view axes label yes
+.RE
+
+.RS 0
+ds9 \-grid view title yes
+.RE
+
+.RS 0
+ds9 \-grid view border yes
+.RE
+
+.RS 0
+ds9 \-grid view vertical no
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-height
+Set the height of the image display window. Use the [89] geometry
+ command to set the overall width and height of the ds9 window.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-height [<value> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-height 512
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-histequ
+Select histogram equalization scale for current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-histequ
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-histequ
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-iconify
+Toggles iconification.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-iconify [yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-iconify yes
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-inet_only
+Only use the IRAF port number. This is the same as \-fifo
+ none \-unix none.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-port_only
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-port_only
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-invert
+Invert Colormap.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-invert
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-invert
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-linear
+Select Linear scale for current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-linear
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-linear
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-lock
+Lock frames.
+
+.RS 4
+.B Syntax
+.RS 4
+ lock [crosshairs none| wcs| wcsa...wcsz| physical| image]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-lock crosshairs wcs
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-log
+Select LOG scale for current frame. This is the same algorithm as
+ used in IRAF.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-log
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-log
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-lower
+Lower ds9 in the window stacking order.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-lower
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-lower
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-match
+Match all other frames to the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-match [frames wcs| physical| image]
+ [colorbars]
+ [scales]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-match frames wcs
+.RE
+
+.RS 0
+ds9 \-match colorbars
+.RE
+
+.RS 0
+ds9 \-match scales
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-medatacube
+Load multiple extension FITS file as a data cube.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-medatacube <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-medatacube foo.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-minmax
+This is how DS9 determines the min and max data values from
+ the data. SCAN will scan all data. SAMPLE will sample the data
+ every n samples. DATAMIN and IRAFMIN will use the values of the
+ keywords if present. In general, it is recommended to use SCAN
+ unless your computer is slow or your data files are very large.
+ Select the increment interval for determining the min and max
+ data values during sampling. The larger the interval, the quicker
+ the process.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-minmax []
+ [scan| sample| datamin| irafmin]
+ [mode auto| scan| sample| datamin| irafmin]
+ [interval <value> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-minmax
+.RE
+
+.RS 0
+ds9 \-minmax scan
+.RE
+
+.RS 0
+ds9 \-minmax mode sample
+.RE
+
+.RS 0
+ds9 \-minmax interval 10
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-mode
+Select the current mode.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-mode
+ [none| pointer| crosshair| colorbar| pan| zoom| rotate| catalog| examine]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-mode crosshair
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-mosaicimage
+Load entire FITS Mosaic image composed of multiple extensions in
+ one FITS file. All extensions that are FITS Images and are valid
+ FITS Mosaic Images will be loaded.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-mosaicimage [iraf| wcs| wcsa...wcsz| wfpc2] <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-mosaicimage iraf bar.fits
+.RE
+
+.RS 0
+ds9 \-mosaicimage wcs bar.fits
+.RE
+
+.RS 0
+ds9 \-mosaicimage wcsa bar.fits
+.RE
+
+.RS 0
+ds9 \-mosaicimage wfpc2 hst.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-mosaicimagenext
+Load entire FITS WCS Mosaic image composed of multiple extensions
+ in one FITS file with out clearing the current frame. All
+ extensions that are FITS Images and are valid FITS Mosaic Images
+ will be loaded.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-mosaicimagenext [iraf| wcs| wcsa...wcsz| wfpc2] <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-mosaicimagenext wcs bar.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-mosaic
+Load FITS Mosaic image segment.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-mosaic [iraf| wcs| wcsa...wcsz] <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-mosaic iraf foo.fits
+.RE
+
+.RS 0
+ds9 \-mosaic wcs bar.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-smosaic
+Load split FITS Mosaic image segment.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-smosaic [iraf| wcs| wcsa...wcsz] <filename> <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-smosaic iraf foo.hdr foo.arr
+.RE
+
+.RS 0
+ds9 \-smosaic wcs foo.hdr foo.arr
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-nameserver
+Support Name Server functions. Coordinates are in fk5.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-nameserver [<object> ]
+ [name <object> ]
+ [server ned\-sao| ned\-eso| simbad\-sao| simbad\-eso]
+ [skyformat degrees| sexagesimal]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-nameserver m31
+.RE
+
+.RS 0
+ds9 \-nameserver name m31
+.RE
+
+.RS 0
+ds9 \-nameserver server ned\-sao
+.RE
+
+.RS 0
+ds9 \-nameserver skyformat sexagesimal
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-orient
+Controls the orientation of the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-orient [none| x| y| xy]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-orient xy
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-pagesetup
+Controls Page Setup options.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-pagesetup [orientation portrait| landscape]
+ [pagescale scaled| fixed]
+ [pagesize letter| legal| tabloid| poster| a4]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-pagesetup orientation portrait
+.RE
+
+.RS 0
+ds9 \-pagesetup pagescale scaled
+.RE
+
+.RS 0
+ds9 \-pagesetup pagesize poster
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-pan
+Controls the current image cursor location for the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-pan [x y <coordinate system> [<sky frame> ] [<sky format> ]
+ [to x y <coordinate system> [<sky frame> ] [<sky format> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-pan 200 200 image
+.RE
+
+.RS 0
+ds9 \-pan to 400 400 physical
+.RE
+
+.RS 0
+ds9 \-pan to 13:29:55 47:11:50 wcs fk5
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-pixeltable
+Display/Hide the pixel table.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-pixeltable [yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-pixeltable yes
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-plot
+Display and configure data plots. All plot commands take an
+ optional second command, the plot name. Use xpaget plot to retreive
+ all plot names. If no plot name is specified, the last plot created
+ is assumed. Plot data is assumed to be a pair of coordinates, with
+ optional error values. The follow are valid data descriptions:
+ xy x and y coordinates
+ xyex x, y coordinates with x errors
+ xyey x, y coordinates with y errors
+ xyexey x, y coordinates with both x and y errors
+ To create a new plot, use the plot new command. If the second arg
+ is stdin, the title, x axis title, y axis title, and dimension are
+ assumed to be on the first line of the data.
+
+.RS 4
+.B Syntax
+.RS 4
+ # create new empty plot window
+ \-plot []
+ [new [name <plotname> ] ]
+ # edit existing plot
+ \-plot [<plotname> ] [close]
+ [<plotname> ] [clear]
+ [<plotname> ] [load <filename> xy| xyex| xyey| xyexey]
+ [<plotname> ] [save <filename> ]
+ [<plotname> ] [loadconfig <filename> ]
+ [<plotname> ] [saveconfig <filename> ]
+ [<plotname> ] [print]
+ [<plotname> ] [print destination printer| file]
+ [<plotname> ] [print command <command> ]
+ [<plotname> ] [print filename <filename> ]
+ [<plotname> ] [print palette color| gray| mono]
+ [<plotname> ] [page orientation portrait| landscape]
+ [<plotname> ] [page pagescale scaled| fixed]
+ [<plotname> ] [page pagesize letter| legal| tabloid| poster| a4]
+ [<plotname> ] [graph grid yes| no]
+ [<plotname> ] [graph scale
+ linearlinear| linearlog| loglinear| loglog]
+ [<plotname> ] [graph range x| y auto yes| no]
+ [<plotname> ] [graph range x| y min <value> ]
+ [<plotname> ] [graph range x| y max <value> ]
+ [<plotname> ] [graph labels title| xaxis| yaxis <value> ]
+ [<plotname> ] [font numbers| labels| title font
+ times| helvetica| symbol| courier]
+ [<plotname> ] [font numbers| labels| title size <value> ]
+ [<plotname> ] [font numbers| labels| title style
+ plain| bold| italic]
+ # edit current dataset
+ \-plot [<plotname> ] [dataset #]
+ [<plotname> ] [view discrete| line| step| quadratic| errorbar
+ yes| no]
+ [<plotname> ] [color discrete| line| step| quadratic| errorbar
+ <color> ]
+ [<plotname> ] [line discrete circle| diamond| plus| cross]
+ [<plotname> ] [line line| step| quadratic| errorbar width
+ <value> ]
+ [<plotname> ] [line line| step| quadratic dash yes| no]
+ [<plotname> ] [line errorbar style 1| 2]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+ # create new empty plot window
+
+.RS 0
+ds9 \-plot
+.RE
+
+.RS 0
+ds9 \-plot new
+.RE
+
+.RS 0
+ds9 \-plot new name foo
+.RE
+ # edit existing plot
+
+.RS 0
+ds9 \-plot close # close last plot
+.RE
+
+.RS 0
+ds9 \-plot foo close # close plot foo
+.RE
+
+.RS 0
+ds9 \-plot clear # clear all datasets
+.RE
+
+.RS 0
+ds9 \-plot load foo.dat xy # load new dataset with dimension xy
+.RE
+
+.RS 0
+ds9 \-plot save bar.dat # save current dataset
+.RE
+
+.RS 0
+ds9 \-plot loadconfig foo.plt # load plot configuration
+.RE
+
+.RS 0
+ds9 \-plot saveconfig bar.plt # save current plot configuration
+.RE
+
+.RS 0
+ds9 \-plot print
+.RE
+
+.RS 0
+ds9 \-plot print destination file
+.RE
+
+.RS 0
+ds9 \-plot print command "lp"
+.RE
+
+.RS 0
+ds9 \-plot print filename "foo.ps"
+.RE
+
+.RS 0
+ds9 \-plot print palette gray
+.RE
+
+.RS 0
+ds9 \-plot page orientation portrait
+.RE
+
+.RS 0
+ds9 \-plot page pagescale scaled
+.RE
+
+.RS 0
+ds9 \-plot page pagesize letter
+.RE
+
+.RS 0
+ds9 \-plot graph grid yes
+.RE
+
+.RS 0
+ds9 \-plot graph scale loglog
+.RE
+
+.RS 0
+ds9 \-plot graph range x auto yes
+.RE
+
+.RS 0
+ds9 \-plot graph range x min 0
+.RE
+
+.RS 0
+ds9 \-plot graph range x max 100
+.RE
+
+.RS 0
+ds9 \-plot graph range y auto yes
+.RE
+
+.RS 0
+ds9 \-plot graph range y min 0
+.RE
+
+.RS 0
+ds9 \-plot graph range y max 100
+.RE
+
+.RS 0
+ds9 \-plot graph labels title {The Title}
+.RE
+
+.RS 0
+ds9 \-plot graph labels xaxis {X}
+.RE
+
+.RS 0
+ds9 \-plot graph labels yaxis {Y}
+.RE
+
+.RS 0
+ds9 \-plot font numbers font times
+.RE
+
+.RS 0
+ds9 \-plot font numbers size 12
+.RE
+
+.RS 0
+ds9 \-plot font numbers style bold
+.RE
+
+.RS 0
+ds9 \-plot font labels font times
+.RE
+
+.RS 0
+ds9 \-plot font title font times
+.RE
+ # edit current dataset
+
+.RS 0
+ds9 \-plot dataset 2 # set current dataset to the second dataset
+.RE
+ loaded
+
+.RS 0
+ds9 \-plot view discrete yes
+.RE
+
+.RS 0
+ds9 \-plot color discrete red
+.RE
+
+.RS 0
+ds9 \-plot line discrete cross
+.RE
+
+.RS 0
+ds9 \-plot line step width 2
+.RE
+
+.RS 0
+ds9 \-plot line step dash yes
+.RE
+
+.RS 0
+ds9 plot line errorbar style 2
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-port
+Set the IRAF port number, used by IRAF to communicate with DS9.
+ The default is 5137, the standard IRAF port used by ximtool.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-port number
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-port 5137
+.RE
+ port_only
+.RE
+.RE
+
+
+.TP
+.BR \-port_only
+
+.RE
+.RE
+
+
+.TP
+.BR \-prefs
+Controls various preference settings.
+
+.RS 4
+.B Syntax
+.RS 4
+ prefs [save]
+ [clear]
+ [mosaicfast yes| no]
+ [bgcolor white| black| red| green| blue| cyan| magenta| yellow]
+ [nancolor white| black| red| green| blue| cyan| magenta| yellow]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-prefs save
+.RE
+
+.RS 0
+ds9 \-prefs clear
+.RE
+
+.RS 0
+ds9 \-prefs mosaicfast no
+.RE
+
+.RS 0
+ds9 \-prefs bgcolor black
+.RE
+
+.RS 0
+ds9 \-prefs nancolor red
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-preserve
+Preserve the follow attributes while loading a new image.
+
+.RS 4
+.B Syntax
+.RS 4
+ preserve [scale yes| no]
+ [pan yes| no]
+ [regions yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-preserve scale yes
+.RE
+
+.RS 0
+ds9 \-preserve pan yes
+.RE
+
+.RS 0
+ds9 \-preserve regions yes
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-print
+Controls printing. Use print option to set printing options. Use
+ print to actually print.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-print [destination printer| file]
+ [command <command> ]
+ [filename <filename> ]
+ [palette rgb| cmyk| gray]
+ [level 1| 2]
+ [resolution 53| 72| 75| 150| 300| 600]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-print
+.RE
+
+.RS 0
+ds9 \-print destination file
+.RE
+
+.RS 0
+ds9 \-print command 'gv \-'
+.RE
+
+.RS 0
+ds9 \-print filename foo.ps
+.RE
+
+.RS 0
+ds9 \-print palette cmyk
+.RE
+
+.RS 0
+ds9 \-print level 2
+.RE
+
+.RS 0
+ds9 \-print resolution 75
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-private
+use private colormap, valid for pseudocolor 8 mode.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-private
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-private
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-quit
+Quits DS9.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-exit
+ \-quit
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-exit
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-raise
+Raise ds9 in the window stacking order.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-raise
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-raise
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-red
+For RGB frames, sets the current color channel to red.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-red
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-red foo.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-regions
+Controls regions in the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-regions [<filename> ]
+ [load <filename> ]
+ [save <filename> ]
+ [move front]
+ [move back]
+ [select all]
+ [select none]
+ [select group <groupname> ]
+ [delete all]
+ [delete select]
+ [format ds9| ciao| saotng| saoimage| pros| xy]
+ [system image| physical| wcs| wcsa...wcsz]
+ [sky fk4| fk5| icrs| galactic| ecliptic]
+ [skyformat degrees| sexagesimal]
+ [strip yes| no]
+ [wcs yes| no]
+ [shape <shape> ]
+ [color white| black| red| green| blue| cyan| magenta| yellow]
+ [width <width> ]
+ [delim [nl| <char> ] ]
+ [command <marker command> ]
+ [composite]
+ [desolve]
+ [template <filename> ]
+ [savetemplate <filename> ]
+ [group <tag> ]
+ [group <tag> color
+ [black| white| red| green| blue| cyan| magenta| yellow] ]
+ [group <tag> copy]
+ [group <tag> delete]
+ [group <tag> cut]
+ [group <tag> font <font> ]
+ [group <tag> move <int> <int> ]
+ [group <tag> movefront]
+ [group <tag> moveback]
+ [group <tag> property <property> yes| no]
+ [group <tag> select]
+ [copy]
+ [cut]
+ [paste image| physical| wcs| wcsa...wcsz
+ fk4| fk5| icrs| galactic| ecliptic]
+ [undo]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-regions foo.reg
+.RE
+
+.RS 0
+ds9 \-regions load foo.reg
+.RE
+
+.RS 0
+ds9 \-regions save foo.reg
+.RE
+
+.RS 0
+ds9 \-regions move back
+.RE
+
+.RS 0
+ds9 \-regions move front
+.RE
+
+.RS 0
+ds9 \-regions select all
+.RE
+
+.RS 0
+ds9 \-regions select none
+.RE
+
+.RS 0
+ds9 \-regions select group foo
+.RE
+
+.RS 0
+ds9 \-regions delete all
+.RE
+
+.RS 0
+ds9 \-regions delete select
+.RE
+
+.RS 0
+ds9 \-regions format ds9
+.RE
+
+.RS 0
+ds9 \-regions system wcs
+.RE
+
+.RS 0
+ds9 \-regions sky fk5
+.RE
+
+.RS 0
+ds9 \-regions skyformat degrees
+.RE
+
+.RS 0
+ds9 \-regions delim nl
+.RE
+
+.RS 0
+ds9 \-regions strip yes
+.RE
+
+.RS 0
+ds9 \-regions wcs yes
+.RE
+
+.RS 0
+ds9 \-regions shape ellipse
+.RE
+
+.RS 0
+ds9 \-regions color red
+.RE
+
+.RS 0
+ds9 \-regions width 3
+.RE
+
+.RS 0
+ds9 \-regions command {circle 100 100 20}
+.RE
+
+.RS 0
+ds9 \-regions composite
+.RE
+
+.RS 0
+ds9 \-regions desolve
+.RE
+
+.RS 0
+ds9 \-regions template foo.tpl
+.RE
+
+.RS 0
+ds9 \-regions savetemplate foo.tpl
+.RE
+
+.RS 0
+ds9 \-regions group foo color red
+.RE
+
+.RS 0
+ds9 \-regions group foo copy
+.RE
+
+.RS 0
+ds9 \-regions group foo delete
+.RE
+
+.RS 0
+ds9 \-regions group foo cut
+.RE
+
+.RS 0
+ds9 \-regions group foo font {times 14 bold}
+.RE
+
+.RS 0
+ds9 \-regions group foo move 100 100
+.RE
+
+.RS 0
+ds9 \-regions group foo movefront
+.RE
+
+.RS 0
+ds9 \-regions group foo moveback
+.RE
+
+.RS 0
+ds9 \-regions group foo property delete no
+.RE
+
+.RS 0
+ds9 \-regions group foo select
+.RE
+
+.RS 0
+ds9 \-regions copy
+.RE
+
+.RS 0
+ds9 \-regions cut
+.RE
+
+.RS 0
+ds9 \-regions paste wcs fk5
+.RE
+
+.RS 0
+ds9 \-regions undo
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-rgb
+Create RGB frame and control RGB frame parameters.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-rgb # empty
+ [red| green| blue]
+ [channel [red| green| blue] ]
+ [view [red| green| blue] [yes| no] ]
+ [system <coordinate system> ]
+ [lock scale| bin| colorbar [yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-rgb # create new rgb frame
+.RE
+
+.RS 0
+ds9 \-rgb red # set current channel to red
+.RE
+
+.RS 0
+ds9 \-rgb channel red # set current channel to red
+.RE
+
+.RS 0
+ds9 \-rgb view blue no # turn off blue channel
+.RE
+
+.RS 0
+ds9 \-rgb system wcs # set rgb coordinate system
+.RE
+
+.RS 0
+ds9 \-rgb lock scale yes # lock rgb channels for scaling
+.RE
+
+.RS 0
+ds9 \-rgb lock bin yes # lock rgb channels for binning
+.RE
+
+.RS 0
+ds9 \-rgb lock colorbar yes # lock rgb colorbar channels
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-rgbarray
+Load entire RGB image composed of a 3D Array Data Cube that
+ contains red, green, and blue channels.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-rgbarray
+ <filename> [xdim=<x> , ydim=<y> | dim=<dim> , zdim=3] , bitpix=<b> , [skip=<s>
+ ] ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-rgbarray rgb.arr[dim=200, zdim=3, bitpix=\-32]
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-rgbcube
+Load entire RGB image composed of a FITS 3D Data Cube that contains
+ red, green, and blue channels.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-rgbcube <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-rgbcube rgb.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-srgbcube
+Load entire RGB image composed of a split FITS 3D Data Cube that
+ contains red, green, and blue channels.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-srgbcube <filename> <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-srgbcube rgb.hdr rgb.arr
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-rgbimage
+Load entire RGB image composed of a FITS multiple extension file
+ that contains red, green, and blue channels.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-rgbimage <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-rgbimage rgb.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-rotate
+Controls the rotation angle (in degrees) of the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-rotate [<value> ]
+ [to <value> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-rotate 45
+.RE
+
+.RS 0
+ds9 \-rotate to 30
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-saveimage
+Save visible image(s) as a raster. If image is a data cube,
+ the mpeg option will cycle thru each slice creating a mpeg movie.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-saveimage [fits| jpeg| tiff| png| ppm| mpeg] <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-saveimage jpeg ds9.jpg
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-savefits
+Save current frame data as FITS. This differs from SAVEIMAGE in
+ that the entire image of the current frame is saved as a FITS,
+ without graphics.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-savefits <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-savefits ds9.fits
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-savempeg
+Save all active frames as a mpeg movie.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-savempeg <filename>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-savempeg ds9.mpg
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-scale
+Controls the limits, color scale distribution, and use of
+ DATASEC keyword.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-scale [linear| log| squared| sqrt| histequ]
+ [datasec yes| no]
+ [limits <minvalue> <maxvalue> ]
+ [mode minmax| <value> | zscale| zmax]
+ [scope local| global]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-scale datasec yes
+.RE
+
+.RS 0
+ds9 \-scale histequ
+.RE
+
+.RS 0
+ds9 \-scale limits 1 100
+.RE
+
+.RS 0
+ds9 \-scale mode zscale
+.RE
+
+.RS 0
+ds9 \-scale mode 99.5
+.RE
+
+.RS 0
+ds9 \-scale scope local
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-shm
+Load a shared memory segment into the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-shm [<key> [<filename> ] ]
+ [key <id> [<filename> ] ]
+ [shmid <id> [<filename> ] ]
+ [fits [key| shmid] <id> [<filename> ] ]
+ [sfits [key| shmid] <id> <id> [<filename> ] ]
+ [mosaicimage [iraf| wcs| wcsa...wcsz| wfpc2] [key| shmid] <id>
+ [<filename> ] ]
+ [mosaicimagenext [wcs| wcsa...wcsz] [key| shmid] <id>
+ [<filename> ] ]
+ [mosaic [iraf| wcs| wcsa...wcsz] [key| shmid] <id> [<filename> ] ]
+ [smosaic [iraf| wcs| wcsa...wcsz] [key| shmid] <id> <id>
+ [<filename> ] ]
+ [rgbcube [key| shmid] <id> [<filename> ] ]
+ [srgbcube [key| shmid] <id> <id> [<filename> ] ]
+ [rgbimage [key| shmid] <id> [<filename> ] ]
+ [rgbarray [key| shmid] <id>
+ [xdim=<x> , ydim=<y> | dim=<dim> , zdim=3] , bitpix=<b> , [skip=<s> ] ]
+ [array [key| shmid] <id>
+ [xdim=<x> , ydim=<y> | dim=<dim> ] , bitpix=<b> , [skip=<s> ] ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-shm 102
+.RE
+
+.RS 0
+ds9 \-shm key 102
+.RE
+
+.RS 0
+ds9 \-shm shmid 102 foo
+.RE
+
+.RS 0
+ds9 \-shm fits 100 foo
+.RE
+
+.RS 0
+ds9 \-shm sfits 100 101 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaicimage iraf key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaicimage wcs key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaicimage wcsa key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaicimage wfpc2 key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaicimagenext wcs key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaic iraf key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm mosaic wcs key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm smosaic wcs key 100 101 foo
+.RE
+
+.RS 0
+ds9 \-shm rgbcube key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm srgbcube key 100 101 foo
+.RE
+
+.RS 0
+ds9 \-shm rgbimage key 100 foo
+.RE
+
+.RS 0
+ds9 \-shm rgbarray shmid 102 [dim=32, zdim=3, bitpix=\-32]
+.RE
+
+.RS 0
+ds9 \-shm array shmid 102 [dim=32, bitpix=\-32]
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-single
+Set display mode to single.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-single
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-single
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-smooth
+Smooth current image or set smooth parameters.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-smooth [yes| no]
+ [function boxcar| tophat| gaussian]
+ [radius <int> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-smooth yes
+.RE
+
+.RS 0
+ds9 \-smooth function tophat
+.RE
+
+.RS 0
+ds9 \-smooth radius 4
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-squared
+Select Squared scale for current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-squared
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-squared
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-sqrt
+Select Square Root scale for current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-sqrt
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-sqrt
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-source
+Sources a valid TCL file.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-source filename
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-source extensions.tcl
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-tile
+Controls the tile display mode.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-tile [yes| no]
+ [mode grid| column| row]
+ [grid]
+ [grid mode [automatic| manual] ]
+ [grid layout <row> <col> ]
+ [grid gap <pixels> ]
+ [row]
+ [column]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-tile
+.RE
+
+.RS 0
+ds9 \-tile yes
+.RE
+
+.RS 0
+ds9 \-tile mode row
+.RE
+
+.RS 0
+ds9 \-tile grid
+.RE
+
+.RS 0
+ds9 \-tile grid mode manual
+.RE
+
+.RS 0
+ds9 \-tile grid layout 5 5
+.RE
+
+.RS 0
+ds9 \-tile grid gap 10
+.RE
+
+.RS 0
+ds9 \-tile row
+.RE
+
+.RS 0
+ds9 \-tile column
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-title
+Changes the display window title to the specified name.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-title name
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-title Voyager
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-unix
+Set the IRAF unix socket name, used by IRAF to communicate with
+ DS9. The default is /tmp/.IMT%d, so that the standard IRAF unix
+ socket is defined.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-unix name
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-unix "/tmp/.IMT%d"
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-unix_only
+Only use the IRAF unix socket name. This is the same as
+ \-fifo none \-port 0.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-unix_only
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-unix_only
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-url
+Load FITS file from specified url.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-url <url>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-url 'ftp://foo.bar.edu/img.fits'
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-version
+Returns the current version of DS9.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-version
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-version
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-view
+Controls the GUI and visible RGB frame color channels.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-view [horizontal| vertical]
+ [info yes| no]
+ [panner yes| no]
+ [magnifier yes| no]
+ [buttons yes| no]
+ [colorbar yes| no]
+ [horzgraph yes| no]
+ [vertgraph yes| no]
+ [filename yes| no]
+ [object yes| no]
+ [minmax yes| no]
+ [frame yes| no]
+ [image| physical| wcs| wcsa...wcsz yes| no]
+ [red yes| no]
+ [green yes| no]
+ [blue yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-view vertical
+.RE
+
+.RS 0
+ds9 \-view info yes
+.RE
+
+.RS 0
+ds9 \-view panner yes
+.RE
+
+.RS 0
+ds9 \-view magnifier yes
+.RE
+
+.RS 0
+ds9 \-view buttons yes
+.RE
+
+.RS 0
+ds9 \-view colorbar yes
+.RE
+
+.RS 0
+ds9 \-view horzgraph yes
+.RE
+
+.RS 0
+ds9 \-view vertgraph yes
+.RE
+
+.RS 0
+ds9 \-view filename yes
+.RE
+
+.RS 0
+ds9 \-view object yes
+.RE
+
+.RS 0
+ds9 \-view minmax
+.RE
+
+.RS 0
+ds9 \-view frame yes
+.RE
+
+.RS 0
+ds9 \-view wcsa yes
+.RE
+
+.RS 0
+ds9 \-view red yes
+.RE
+
+.RS 0
+ds9 \-view green yes
+.RE
+
+.RS 0
+ds9 \-view blue yes
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-visual
+Force DS9 to use the specified color visual. This argument
+ MUST be the first argument listed. Requires the visual be
+ available.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-visual
+ [pseudocolor| pseudocolor8| truecolor| truecolor8| truecolor16| truecol
+ or24]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-visual truecolor24
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-vo
+Invoke an connection to a Virtual Observatory site.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-vo <url>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-vo chandra\-ed.havard.edu
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-wcs
+Controls the World Coordinate System for the current frame. If
+ the wcs system, skyframe, or skyformat is modified, the info
+ panel, compass, grid, and alignment will be modified accordingly.
+ Also, a new WCS specification can be loaded and used by the
+ current image regardless of the WCS that was contained in the
+ image file. Please see [90] WCS for more information.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-wcs [wcs| wcsa...wcsz]
+ [system wcs| wcsa...wcsz]
+ [sky fk4| fk5| icrs| galactic| ecliptic]
+ [skyformat degrees| sexagesimal]
+ [align yes| no]
+ [reset]
+ [replace file <filename> ]
+ [append file <filename> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-wcs wcs
+.RE
+
+.RS 0
+ds9 \-wcs system wcs
+.RE
+
+.RS 0
+ds9 \-wcs sky fk5
+.RE
+
+.RS 0
+ds9 \-wcs skyformat sexagesimal
+.RE
+
+.RS 0
+ds9 \-wcs align yes
+.RE
+
+.RS 0
+ds9 \-wcs reset
+.RE
+
+.RS 0
+ds9 \-wcs replace file foo.wcs
+.RE
+
+.RS 0
+ds9 \-wcs append file foo.wcs
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-web
+Display specified URL in the web display.
+ \-web <url>
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-web chandra.harvard.edu
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-width
+Set the width of the image display window. Use the [91] geometry
+ command to set the overall width and height of the ds9 window.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-width [<value> ]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-width 512
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-xpa
+Configure XPA at startup. The option tcl allows the user to send
+ tcl code via xpa to be executed by ds9. Warning: this is a major
+ security risk and is disabled by default. Please use with caution.
+ \-xpa [yes| no]
+ [inet| local| unix| localhost]
+ [noxpans]
+ [tcl yes| no]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-xpa no
+.RE
+
+.RS 0
+ds9 \-xpa local
+.RE
+
+.RS 0
+ds9 \-xpa noxpans
+.RE
+
+.RS 0
+ds9 \-xpa tcl yes
+.RE
+ zmax Set Scale Limits based on the IRAF algorithm and maximum
+ data value.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-zmax
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-zmax
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-zscale
+Set Scale Limits based on the IRAF algorithm.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-zscale
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-zscale
+.RE
+
+.RE
+.RE
+
+
+.TP
+.BR \-zoom
+Controls the current zoom value for the current frame.
+
+.RS 4
+.B Syntax
+.RS 4
+ \-zoom [<value> ]
+ [<value> <value> ]
+ [to <value> ]
+ [to <value> <value> ]
+ [to fit]
+
+.RE
+.RE
+.RS 4
+.B Example:
+.RS 4
+
+.RS 0
+ds9 \-zoom 2
+.RE
+
+.RS 0
+ds9 \-zoom 2 4
+.RE
+
+.RS 0
+ds9 \-zoom to 4
+.RE
+
+.RS 0
+ds9 \-zoom to 2 4
+.RE
+
+.RS 0
+ds9 \-zoom to fit
+.RE
+
+.RE
+.RE
+
+.SH FILES
+The complete text of the DS9 manual may be found on Debian systems at
+/usr/share/doc/saods9/ref/.
+
+.SH AUTHOR
+DS9 is a product of the Smithsonian Astrophysical Observatory.
+
+.PP
+This manual page was generated from the DS9 HTML documentation by a
+script written by Justin Pryzby.
+
+.SH "SEE ALSO"
+.IR xpaget (1),
+.IR xpaset (1),
+.IR xpaaccess (1),
+.IR xpamb (1),
+.IR xpainfo (1),
+.IR xpans (1),
+.IR xpachanges (7),
+
diff --git a/debian/ds9.xpm b/debian/ds9.xpm
new file mode 100644
index 0000000..4129dfe
--- /dev/null
+++ b/debian/ds9.xpm
@@ -0,0 +1,54 @@
+/* XPM */
+static char * sun_xpm[] = {
+"48 48 3 1",
+" c None",
+". c #04ACCE",
+"+ c #E6D913",
+" ",
+" ",
+" ............ ",
+" .................. ",
+" ..+++......+......++.. ",
+" ....+++.....+.......+... ",
+" ......+++...++......+++.... ",
+" .......+++...++......+++..... ",
+" ........+++...++.....++++...... ",
+" .+.......+++...+++..+++++.....+.. ",
+" ...++.....++++..+++.+++++....++.... ",
+" .....++....++++.++++.++++....+++.... ",
+" ......++++..++++++++++++++...+++...... ",
+" .......++++.++++++++++++++.++++........ ",
+" ........++++++++++++++++++.+++++........ ",
+" .+++++...+++++++++++++++++++++++.......+. ",
+" .+++++++...+++++++++++++++++++++.......++. ",
+" ....+++++..++++++++++++++++++++.+++++++++. ",
+" .....+++++++++++++++++++++++++++++++++++... ",
+" ......+++++++++++++++++++++++++++++++++.... ",
+" ........++++++++++++++++++++++++++++........ ",
+" .........+++++++++++++++++++++++++.......... ",
+" ..........+++++++++++++++++++++++++......... ",
+" .....+++++++++++++++++++++++++++++++++++.... ",
+" ..+++++++++++++++++++++++++++++++++++++++++. ",
+" .......+++++++++++++++++++++++++++++++...... ",
+" ...........+++++++++++++++++++++++.......... ",
+" ..........++++++++++++++++++++++++++........ ",
+" .....++++++++++++++++++++++++++++++++....... ",
+" ...++++++++++++++++++++++++++++++++++...... ",
+" ..+++++++++++++++++++++++++++++++++++..... ",
+" ..++...+++.++++++++++++++++++++...+++++.++ ",
+" ++.......++++++++++++++++++++++...++++++. ",
+" .........+++++++++++++++++++++++...++++. ",
+" .......+++++.++++++++++++++++++........ ",
+" .......++++..+++++++++++++..++++...... ",
+" .....+++...+++++++++.+++++..+++...... ",
+" ....++.....+++++++++..++++....++.... ",
+" ...+.....+++++..+++..++++.....++.. ",
+" .+.....+++++...+++..+++.......+. ",
+" ......+++.....++...+++........ ",
+" .....++......++...+++....... ",
+" ....++......++....+++..... ",
+" ...++.......+.....+++... ",
+" ..+................. ",
+" ................ ",
+" ........ ",
+" "};
diff --git a/debian/generate-man b/debian/generate-man
new file mode 100644
index 0000000..8fa2ce5
--- /dev/null
+++ b/debian/generate-man
@@ -0,0 +1,90 @@
+#!/usr/bin/perl -w
+# ./debian/generate-man
+# Generate a manual page for DS9 from HTML documentation.
+# This is a work of Justin Pryzby during the year of 2005, hereby
+# placed into the public domain.
+use strict;
+
+my $s=`lynx -dump ./ds9/doc/ref/command.html |grep -Ev '^ *\\* \\[[0-9]+\\]'` || die;
+$s=~s/References.*$//s;
+my @opts=split("\n", `./ds9/ds9 -? |sed -rne 's/^ -([^ ]*)([ ]|\$).*\$/\\1/p' |grep -v '^?\$'` || die);
+
+print <<EOF;
+.TH DS9 1 "14 November 2005"
+.SH NAME
+ds9 \- image tool for astronomy
+.SH SYNOPSIS
+.B ds9
+.RI [ options ]
+.br
+.SH DESCRIPTION
+.B DS9
+DS9 is the modern image tool used by astronomers for visualization of
+astronomical data. It supports a plethora of command line options,
+which may be used in a script\-like fashion. An instance of the
+program is entirely controllable from the commandline with the XPA
+tools.
+
+.SH OPTIONS
+.TP
+
+EOF
+
+foreach my $opt (@opts) {
+ chomp $opt;
+ $opt=~s/[ ]*$//;
+
+ $s=~m/(\n[ ]*$opt[ \n].*)/s || next;
+ my $optinfo=$1;
+
+ foreach my $opt2 (@opts) {
+ chomp $opt2;
+ $opt2=~s/[ ]$//;
+ next if $opt2=~m/^$opt$/;
+ $optinfo=~s/\n[ ]*$opt2[ \n ].*$//s;
+ }
+
+ $optinfo=~s/$opt//s;
+ $optinfo=~s/ +/ /sg;
+
+ print "\n.TP";
+ print "\n.BR \\-$opt\n";
+
+ $optinfo=~s/^[ \n]*//s;
+ $optinfo=~s/\n+/\n/sg;
+ $optinfo=~s/Syntax:/\n.RS 4\n.B Syntax\n.RS 4/sg;
+ $optinfo=~s/Example:/\n.RE\n.RE\n.RS 4\n.B Example:\n.RS 4/sg;
+ $optinfo=~s/\$(ds9.*?)\n/\n.RS 0\n$1\n.RE\n/gs;
+ $optinfo=~s/\$(ds9.*?)$/\n.RS 0\n$1\n.RE\n/gs;
+
+ # Workaround
+ $optinfo=~s/-/\\-/gs;
+ $optinfo=~s/([|,>\]])/$1 /gs;
+ $optinfo=~s/\\\$/\$/gs;
+
+ print "$optinfo";
+ print "\n.RE\n.RE\n\n";
+}
+
+print <<EOF;
+.SH FILES
+The complete text of the DS9 manual may be found on Debian systems at
+/usr/share/doc/saods9/ref/.
+
+.SH AUTHOR
+DS9 is a product of the Smithsonian Astrophysical Observatory.
+
+.PP
+This manual page was generated from the DS9 HTML documentation by a
+script written by Justin Pryzby.
+
+.SH "SEE ALSO"
+.IR xpaget (1),
+.IR xpaset (1),
+.IR xpaaccess (1),
+.IR xpamb (1),
+.IR xpainfo (1),
+.IR xpans (1),
+.IR xpachanges (7),
+
+EOF
diff --git a/debian/menu b/debian/menu
new file mode 100644
index 0000000..0432027
--- /dev/null
+++ b/debian/menu
@@ -0,0 +1 @@
+?package(saods9):needs="X11" section="Apps/Science" title="saods9" command="/usr/bin/ds9"
diff --git a/debian/repack b/debian/repack
new file mode 100644
index 0000000..e8ef40f
--- /dev/null
+++ b/debian/repack
@@ -0,0 +1,72 @@
+#!/bin/sh
+# ./debian/repack
+# Repackage the DS9 source files as a DFSG tarball, with unneecessary
+# files removed.
+# This file is a work of Justin Pryzby <pryzbyj at justinpryzby.com>
+# during the year of 2005, and is hereby placed into the public
+# domain.
+
+set -e;
+
+ver="4.0b7";
+tarball="http://hea-www.harvard.edu/saord/download/ds9/source/ds9.$ver.tar.gz";
+base=$(basename "$tarball");
+orig="saods9_$ver.orig.tar.gz";
+
+mkdir newsource;
+cd newsource;
+
+if test -e "../../$base"; then
+ echo >&2 "Using existing DS9";
+ ln -s "../../$base";
+else
+ echo >&2 "Retrieving DS9";
+ wget "$tarball";
+fi;
+
+tar xzf "$base";
+find ./saods9/ -name config.status |xargs rm -f;
+find ./saods9/ -name conf.h |xargs rm -f;
+find ./saods9/funtools-1.3.0b9/ -name Makefile |xargs rm -f;
+rm "$base";
+
+rm -fr ./saods9/sla/;
+if test -d "../../sla/"; then
+ echo >&2 "Using existing SLA";
+ cp -r "../../sla" ./saods9/;
+else
+ echo >&2 "Retrieving CVS SLA";
+ echo >&2 "The password is 'starlink':";
+ cvs -d ':pserver:anonymous at cvs.starlink.ac.uk:/cvs' login;
+ cvs -d ':pserver:anonymous at cvs.starlink.ac.uk:/cvs' co libraries/sla;
+ mv libraries/sla ./saods9/;
+ rm -fr ./libraries/;
+fi;
+
+cd ./saods9/;
+cp ./tcl8.4.9/library/auto.tcl ./ds9/;
+cp ./tk8.4.9/library/tkfbox.tcl ./ds9/;
+cp ./tk8.4.9/library/xmfbox.tcl ./ds9/;
+rm -fr ./sla/CVS/;
+
+rm ./ast-3.5/slalib.h;
+touch ./ast-3.5/slalib.h;
+rm ./funtools-1.3.0b9/search.c
+
+# Remove all other unused directories also, since .orig tarball won't
+# be "pristine" anyway. This greatly simpifies the copyright file.
+rm -fr ./blt2.4z/;
+rm -fr ./funtools-1.3.0b9/util/zlib-1.2.3/;
+rm -fr ./funtools-1.3.0b9/wcs/;
+rm -fr ./htmlwidget/tests/;
+rm -fr ./tcl8.4.9/;
+rm -fr ./tcllib-1.6.1/;
+rm -fr ./tk8.4.9/;
+rm -fr ./tkimg1.3rc2/;
+rm -fr ./tktable2.9/;
+rm -fr ./zlib-1.2.3/;
+
+cd ../;
+mv saods9/ saods9-$ver.orig/;
+tar czf "$orig" saods9-$ver.orig/;
+echo >&2 "Created newsources/$orig";
diff --git a/debian/rules b/debian/rules
new file mode 100644
index 0000000..5317f1a
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,90 @@
+#!/usr/bin/make -f
+# Build rules for saods9.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+# Modifications are a work of Justin Pryzby during 2005 and are hereby
+# placed in the public domain.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+BUILDPARTS:=dirs checkdns html mktclapp tkmpeg iis
+BUILDPARTS+=xpa ast wcssubs funtools sla saotk ds9
+
+FLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ FLAGS += -O0
+else
+ FLAGS += -O2
+endif
+
+get-orig-source:
+ sh ./debian/repack;
+
+regenerate-man:
+ perl ./debian/generate-man >./debian/ds9.1;
+
+build: build-stamp
+build-stamp:
+ dh_testdir
+ ln -sf make.linux make.include
+ $(MAKE) FLAGS="$(FLAGS)" $(BUILDPARTS)
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ set -e; if [ -e xpa-2.1.6/Makefile ];\
+ then $(MAKE) -C xpa-2.1.6 distclean; fi;
+
+ rm -fr htmlwidget/tests/ html/ bin/ lib/ share/ man/ include/;
+ find -name conf.h |xargs rm -f;
+ find -name config.log |xargs rm -f;
+ find -name config.status |xargs rm -f;
+ find -name '*.d' -type f |xargs rm -f;
+ find funtools-1.3.0b9/ xpa-2.1.6/ -name Makefile |xargs rm -f;
+ find -name '*.[ao]' |xargs rm -f;
+ find -name '*.so' |xargs rm -f;
+ set -e; cd ./ds9/; rm -f ds9 ds9tk.c ds9tk.h;
+ dh_clean ./build ./make.include mktclapp/mktclapp;
+
+#dh_clean -k
+
+binary: binary-indep binary-arch
+binary-indep: build
+binary-arch: build
+ dh_testdir
+ dh_testroot
+
+ dh_installchangelogs
+ html2text -nobs -o ./debian/saods9/usr/share/doc/saods9/changelog ./xpa-2.1.6/doc/changelog.html
+ gzip -9 ./debian/saods9/usr/share/doc/saods9/changelog
+ # Keep the HTML copy uncompressed so the href works.
+
+ mkdir xpadoc ds9doc;
+ cp xpa-2.1.6/doc/*.html xpadoc/;
+ cp ds9/doc/*.html ds9doc/;
+ dh_installdocs xpadoc/ ds9doc/ ds9/doc/ref/ ds9/doc/release/;
+ rm -fr xpadoc/ ds9doc/;
+
+ dh_install ./ds9/ds9 bin/xpa* usr/bin/
+ dh_install debian/saods9.desktop usr/share/applications
+ dh_install debian/ds9.xpm usr/share/pixmaps
+ dh_installmenu
+# dh_installmime
+ dh_installman ./xpa-2.1.6/man/man1/* ./debian/ds9.1
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+.PHONY: clean binary-indep binary-arch binary get-orig-source regenerate-man
diff --git a/debian/saods9-4.0b7-2-nodebian.diff b/debian/saods9-4.0b7-2-nodebian.diff
new file mode 100644
index 0000000..bb413e8
--- /dev/null
+++ b/debian/saods9-4.0b7-2-nodebian.diff
@@ -0,0 +1,21650 @@
+--- 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(¤tProps,yyvsp[-2].integer,yyvsp[0].integer);;}
++ {setProps(¤tProps,(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 */
+ /* ================ */
diff --git a/debian/saods9.desktop b/debian/saods9.desktop
new file mode 100644
index 0000000..8b70e2b
--- /dev/null
+++ b/debian/saods9.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Name=DS9 Astro-Image Viewer
+GenericName=Image Viewer
+GenericName[en_GB]=Image Viewer
+Comment=View and analyze astronomical data
+Comment[en_GB]=View and analyse astronomical data
+Type=Application
+Exec=ds9
+Icon=ds9
+Categories=Education;Science;Astronomy;
diff --git a/debian/saods9.doc-base.ds9doc b/debian/saods9.doc-base.ds9doc
new file mode 100644
index 0000000..dc24230
--- /dev/null
+++ b/debian/saods9.doc-base.ds9doc
@@ -0,0 +1,28 @@
+Document: saods9-documents
+Title: DS9: Astronomical Data Visualization Application
+Author: William Joye <wjoye at cfa.harvard.edu>
+Abstract: SAOImage DS9 is an astronomical imaging and data
+ visualization application. DS9 supports FITS images and binary
+ tables, multiple frame buffers, region manipulation, and many scale
+ algorithms and colormaps. It provides for easy communication with
+ external analysis tasks and is highly configurable and extensible.
+ DS9 is a stand-alone application. It requires no installation or
+ support files. Versions of DS9 currently exist for Sun Solaris, Sun
+ Solaris64, Linux, Linux64, LinuxPPC, MacOSX, Darwin, and Windows
+ NT/2000/XP. All versions and platforms support a consistent set of
+ GUI and functional capabilities. DS9 supports advanced features such
+ as multiple frame buffers, mosaic images, tiling, blinking, geometric
+ markers, colormap manipulation, scaling, arbitrary zoom, rotation,
+ pan, and a variety of coordinate systems. DS9 also supports FTP and
+ HTTP access. The GUI for DS9 is user configurable. GUI elements such
+ as the coordinate display, panner, magnifier, horizontal and vertical
+ graphs, button bar, and colorbar can be configured via menus or the
+ command line. DS9 is a Tk/Tcl application which utilizes the SAOTk
+ widget set. It also incorporates the X Public Access (XPA) mechanism
+ to allow external processes to access and control its data, GUI
+ functions, and algorithms.
+Section: Apps/Science
+
+Format: HTML
+Index: /usr/share/doc/saods9/ds9doc/index.html
+Files: /usr/share/doc/saods9/html/*.html
diff --git a/debian/saods9.doc-base.ds9reference b/debian/saods9.doc-base.ds9reference
new file mode 100644
index 0000000..930462e
--- /dev/null
+++ b/debian/saods9.doc-base.ds9reference
@@ -0,0 +1,22 @@
+Document: saods9-reference-manual
+Title: DS9 Reference Manual
+Author: William Joye <wjoye at cfa.harvard.edu>
+Abstract: DS9 is the next version of the popular SAOtng display program.
+ It is a Tk/Tcl application which utilizes the SAOtk widget set. It
+ also incorporates the new X Public Access (XPA) mechanism to allow
+ external processes to access and control its data, GUI functions, and
+ algorithms. DS9 supports the direct display of FITS images and
+ binary tables, multiple frame buffers, region cursor manipulation,
+ many scale algorithms and colormaps, and easy communication with
+ external analysis tasks. It is highly configurable and extensible to
+ meet the evolving needs of the astronomical community. DS9 supports
+ advanced features such as multiple frame buffers, mosaic images,
+ tiling, blinking, geometric markers, colormap manipulation, scaling,
+ arbitrary zoom, rotation, pan, and a variety of coordinate systems
+ (including Image, Physical, Detector, and WCS). DS9 also supports FTP
+ and HTTP access. The GUI for DS9 is user configurable.
+Section: Apps/Science
+
+Format: HTML
+Index: /usr/share/doc/saods9/ref/index.html
+Files: /usr/share/doc/saods9/ref/*.html
diff --git a/debian/saods9.doc-base.ds9release b/debian/saods9.doc-base.ds9release
new file mode 100644
index 0000000..202d7ee
--- /dev/null
+++ b/debian/saods9.doc-base.ds9release
@@ -0,0 +1,9 @@
+Document: saods9-release-notes
+Title: DS9 Release Notes
+Author: William Joye <wjoye at cfa.harvard.edu>
+Abstract: SAOImage DS9 Version 4.0 Release Notes
+Section: Apps/Science
+
+Format: HTML
+Index: /usr/share/doc/saods9/release/r4.0.html
+Files: /usr/share/doc/saods9/release/*.html
diff --git a/debian/saods9.doc-base.xpahelp b/debian/saods9.doc-base.xpahelp
new file mode 100644
index 0000000..82599bb
--- /dev/null
+++ b/debian/saods9.doc-base.xpahelp
@@ -0,0 +1,9 @@
+Document: saods9-xpa-help
+Title: XPA: Public Access to Data and Algorithms
+Author: Eric Mandel <eric at head.cfa.harvard.edu>
+Abstract: This document is the Table of Contents for XPA.
+Section: Apps/Science
+
+Format: HTML
+Index: /usr/share/doc/saods9/xpadoc/help.html
+Files: /usr/share/doc/saods9/xpadoc/*.html
diff --git a/debian/shlibs.local b/debian/shlibs.local
new file mode 100644
index 0000000..29c098f
--- /dev/null
+++ b/debian/shlibs.local
@@ -0,0 +1 @@
+/usr/lib/Tktable 2 tktable (>=2.9-1)
diff --git a/debian/sla_functions b/debian/sla_functions
new file mode 100644
index 0000000..43069d4
--- /dev/null
+++ b/debian/sla_functions
@@ -0,0 +1,50 @@
+slaAddet
+slaAmpqk
+slaCaldj
+slaDaf2r
+slaDav2m
+slaDbear
+slaDcc2s
+slaDcs2c
+slaDd2tf
+slaDimxv
+slaDjcal
+slaDjcl
+slaDmat
+slaDmxm
+slaDmxv
+slaDrange
+slaDranrm
+slaDsep
+slaDtf2d
+slaDtf2r
+slaDvdv
+slaDvn
+slaDvxv
+slaEcmat
+slaEpb
+slaEpb2d
+slaEpj
+slaEpj2d
+slaEqeqx
+slaEqgal
+slaEvp
+slaFk45z
+slaFk54z
+slaFk5hz
+slaGaleq
+slaGalsup
+slaGeoc
+slaGmst
+slaHfk5z
+slaMappa
+slaMapqkz
+slaPrebn
+slaPrec
+slaRverot
+slaRvgalc
+slaRvlg
+slaRvlsrd
+slaRvlsrk
+slaSubet
+slaSupgal
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..5ea7a98
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=2
+http://hea-www.harvard.edu/RD/ds9/ http://hea-www.harvard.edu/saord/download/ds9/source/ds9\.(.*)\.tar\.gz debian uupdate
--
image display tool for astronomy
More information about the debian-science-commits
mailing list