From 46a354cef9aef40059ef77d42ab59bf3be5c4a62 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 16 Apr 2024 14:45:07 -0600 Subject: [PATCH 01/19] CI: Change install name/location --- packages/seacas/libraries/exodus/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/seacas/libraries/exodus/CMakeLists.txt b/packages/seacas/libraries/exodus/CMakeLists.txt index ad56f2903d..81ea023c27 100644 --- a/packages/seacas/libraries/exodus/CMakeLists.txt +++ b/packages/seacas/libraries/exodus/CMakeLists.txt @@ -48,7 +48,7 @@ if (SEACASExodus_ENABLE_SHARED) set_property(TARGET exodus_shared PROPERTY C_STANDARD 99) # This keeps the library out of the `all_libs` targets... set_target_properties(exodus_shared PROPERTIES TRIBITS_TESTONLY_LIB TRUE) - set_target_properties(exodus_shared PROPERTIES RUNTIME_OUTPUT_NAME exodus) + set_target_properties(exodus_shared PROPERTIES OUTPUT_NAME exodus) INSTALL(TARGETS exodus_shared DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) endif() endif() From ba085f9ef8bf477edf8e35c55a5a784ad898c0f0 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 18 Apr 2024 09:25:23 -0500 Subject: [PATCH 02/19] CI: mkdir lib before plugin path in case doesnot exist [ci skip] --- install-tpl.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install-tpl.sh b/install-tpl.sh index 40f7a4d42d..c5853e569b 100755 --- a/install-tpl.sh +++ b/install-tpl.sh @@ -482,6 +482,7 @@ then fi fi # Create default plugin directory... + mkdir ${INSTALL_PATH}/lib mkdir ${INSTALL_PATH}/lib/hdf5 mkdir ${INSTALL_PATH}/lib/hdf5/lib mkdir ${INSTALL_PATH}/lib/hdf5/lib/plugin From 39535e98f25f267d3ae92d19fd98e4ca2e295863 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 18 Apr 2024 10:25:53 -0500 Subject: [PATCH 03/19] EXPLORE: Add/Refactor qa, qainfo and info list commands --- packages/seacas/applications/explore/exp_comand.f | 14 +++++++++++--- .../seacas/applications/explore/exp_qainfo.blk | 4 ++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/seacas/applications/explore/exp_comand.f b/packages/seacas/applications/explore/exp_comand.f index 5d9733db84..73479c3b08 100644 --- a/packages/seacas/applications/explore/exp_comand.f +++ b/packages/seacas/applications/explore/exp_comand.f @@ -1,4 +1,4 @@ -C Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions +C Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with C NTESS, the U.S. Government retains certain rights in this software. C @@ -149,7 +149,7 @@ SUBROUTINE COMAND (A, IA, EXODUS, DBNAME, QAREC, INFO, CHARACTER*80 DUMLIN character*2048 OUTPUT, LCOUTPUT - CHARACTER*(MXSTLN) CMDTBL(15), SELTBL(15), LISTBL(38) + CHARACTER*(MXSTLN) CMDTBL(15), SELTBL(15), LISTBL(41) SAVE CMDTBL, SELTBL, LISTBL, KINVC, KINVS C --CMDTBL - the valid commands table C --SELTBL - the valid SELECT options table @@ -170,7 +170,7 @@ SUBROUTINE COMAND (A, IA, EXODUS, DBNAME, QAREC, INFO, 4 'GVARS ', 'NVARS ', 'EVARS ', 'NSVARS ', 'SSVARS ', 5 ' ' / DATA LISTBL / - 1 'TITLE ', 'VARS ', + 1 'TITLE ', 'VARS ', 'QAINFO ', 'QA', 'INFORMATION', 2 'COORDINA', 'MAP ', 'NMAP ', 'NODEMAP ', 3 'BLOCKS ', 'MATERIAL', 'LINK ', 'CONNECTI', 'ATTRIBUT', 4 'NSETS ', 'NNODES ', 'NFACTORS', 'INVCON ', @@ -791,8 +791,16 @@ SUBROUTINE COMAND (A, IA, EXODUS, DBNAME, QAREC, INFO, ELSE IF (LISTYP .EQ. 'QA') THEN + CALL PRQA ('Q', NOUT, NQAREC, QAREC, NINFO, INFO) + + ELSE IF (LISTYP .EQ. 'QAINFO') THEN + CALL PRQA ('*', NOUT, NQAREC, QAREC, NINFO, INFO) + ELSE IF (LISTYP .EQ. 'INFORMATION') THEN + + CALL PRQA ('I', NOUT, NQAREC, QAREC, NINFO, INFO) + C *** EXODUS Print Commands *** ELSE IF (LISTYP .EQ. 'NAMES') THEN diff --git a/packages/seacas/applications/explore/exp_qainfo.blk b/packages/seacas/applications/explore/exp_qainfo.blk index 93678952c9..df09d169cd 100644 --- a/packages/seacas/applications/explore/exp_qainfo.blk +++ b/packages/seacas/applications/explore/exp_qainfo.blk @@ -8,8 +8,8 @@ C See packages/seacas/LICENSE for details QAINFO(2) = ' ' QAINFO(3) = ' ' - QAINFO(2)(:8) = '20240304' - QAINFO(3)(:8) = ' 4.01' + QAINFO(2)(:8) = '20240418' + QAINFO(3)(:8) = ' 4.02' c..Dynamic dimensioning of block names+other changes c..compress output of distribution factors From 3c5ce3c1475e9ef7aea8be78a9417ee5d2d68057 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 18 Apr 2024 10:55:46 -0500 Subject: [PATCH 04/19] CI: Better error handling in script --- cmake-config | 42 ++++++++++++++--------------- install-tpl.sh | 72 +++++++++++++++++++++++++------------------------- 2 files changed, 57 insertions(+), 57 deletions(-) diff --git a/cmake-config b/cmake-config index a23c9d0f05..b786fc8800 100755 --- a/cmake-config +++ b/cmake-config @@ -33,29 +33,29 @@ INSTALL_PATH=${INSTALL_PATH:-${ACCESS}} function check_valid() { - if [ "${!1}" == "YES" ] || [ "${!1}" == "ON" ]; then - echo "YES" - return 1 + if [ "${!1}" == "YES" ] || [ "${!1}" == "ON" ] || [ "${!1}" == "yes" ] || [ "${!1}" == "on" ]; then + echo "YES" + return 0 fi - if [ "${!1}" == "NO" ] || [ "${!1}" == "OFF" ]; then - echo "NO" - return 1 + if [ "${!1}" == "NO" ] || [ "${!1}" == "OFF" ] || [ "${!1}" == "no" ] || [ "${!1}" == "off" ]; then + echo "NO" + return 0 fi - echo "Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF" + printf "\n${txtred}ERROR: Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF\n\n${txtrst}" >& 2 exit 1 } ### Possible subset of what is built --- APPLICATIONS=${APPLICATIONS:-YES} -APPLICATIONS=$(check_valid APPLICATIONS) +APPLICATIONS=$(check_valid APPLICATIONS) || exit LEGACY=${LEGACY:-YES} -LEGACY=$(check_valid LEGACY) +LEGACY=$(check_valid LEGACY) || exit FORTRAN=${FORTRAN:-YES} -FORTRAN=$(check_valid FORTRAN) +FORTRAN=$(check_valid FORTRAN) || exit ZOLTAN=${ZOLTAN:-YES} -ZOLTAN=$(check_valid ZOLTAN) +ZOLTAN=$(check_valid ZOLTAN) || exit ### TPLs -- ### Make sure these point to the locations to find the libraries and includes in lib and include @@ -94,7 +94,7 @@ then fi fi -MPI=$(check_valid MPI) +MPI=$(check_valid MPI) || exit echo "${txtgrn}MPI set to ${MPI}${txtrst}" if [ "${MPI}" == "NO" ] @@ -263,7 +263,7 @@ GENERATOR=${GENERATOR:-"Unix Makefiles"} # -DCMAKE_EXE_LINKER_FLAGS:STRING="-lxl -lxlopt" CRAY="${CRAY:-NO}" -CRAY=$(check_valid CRAY) +CRAY=$(check_valid CRAY) || exit if [ "${CRAY}" == "YES" ] then @@ -271,7 +271,7 @@ then else SHARED="${SHARED:-YES}" fi -SHARED=$(check_valid SHARED) +SHARED=$(check_valid SHARED) || exit if [ "${CRAY}" == "YES" ] && [ "${SHARED}" == "NO" ] then @@ -291,14 +291,14 @@ BUILD_TYPE="${BUILD_TYPE:-RELEASE}" if [ ! -z ${DEBUG+x} ] then - if [ "${DEBUG}" == "ON" ] || [ "${DEBUG}" == "YES" ] + if [ "${DEBUG}" == "ON" ] || [ "${DEBUG}" == "YES" ] || [ "${DEBUG}" == "on" ] || [ "${DEBUG}" == "yes" ] then BUILD_TYPE="DEBUG" - elif [ "${DEBUG}" == "OFF" ] || [ "${DEBUG}" == "NO" ] + elif [ "${DEBUG}" == "OFF" ] || [ "${DEBUG}" == "NO" ] || [ "${DEBUG}" == "off" ] || [ "${DEBUG}" == "no" ] then BUILD_TYPE="RELEASE" else - echo "ERROR: Invalid value for DEBUG ('$DEBUG'). Must be 'ON', 'OFF', 'YES', 'NO'." + echo "${txtred}\nERROR: Invalid value for DEBUG ('$DEBUG') -- Must be ON, YES, NO, or OFF\n${txtrst}" >& 2 exit fi fi @@ -308,11 +308,11 @@ fi ### which provides X11/Xlib.h and the libX11, then change the "YES" ### below to "NO". It will disable blot and fastq HAVE_X11=${HAVE_X11:-YES} -HAVE_X11=$(check_valid HAVE_X11) +HAVE_X11=$(check_valid HAVE_X11) || exit ### Set to ON to enable the building of a thread-safe version of the Exodus and IOSS libraries. THREADSAFE=${THREADSAFE:-NO} -THREADSAFE=$(check_valid THREADSAFE) +THREADSAFE=$(check_valid THREADSAFE) || exit function check_enable() { @@ -415,7 +415,7 @@ fi # Only run doxygen if me and on master branch... DOXYGEN=${DOXYGEN:-NO} -DOXYGEN=$(check_valid DOXYGEN) +DOXYGEN=$(check_valid DOXYGEN) || exit if [[ "$DOXYGEN" == "NO" && "$OS" == "Darwin" && "$MPI" == "NO" ]] ; then branch=$(git branch |grep \* |cut -c3-) @@ -428,7 +428,7 @@ fi FC=${FC:-gfortran} EXTRA_WARNINGS=${EXTRA_WARNINGS:-NO} -EXTRA_WARNINGS=$(check_valid EXTRA_WARNINGS) +EXTRA_WARNINGS=$(check_valid EXTRA_WARNINGS) || exit SANITIZER=${SANITIZER:-NO} diff --git a/install-tpl.sh b/install-tpl.sh index c5853e569b..f626ccf2da 100755 --- a/install-tpl.sh +++ b/install-tpl.sh @@ -25,31 +25,31 @@ function check_exec() function check_valid() { - if [ "${!1}" == "YES" ] || [ "${!1}" == "ON" ]; then + if [ "${!1}" == "YES" ] || [ "${!1}" == "ON" ] || [ "${!1}" == "yes" ] || [ "${!1}" == "on" ]; then echo "YES" - return 1 + return 0 fi - if [ "${!1}" == "NO" ] || [ "${!1}" == "OFF" ]; then + if [ "${!1}" == "NO" ] || [ "${!1}" == "OFF" ] || [ "${!1}" == "no" ] || [ "${!1}" == "off" ]; then echo "NO" - return 1 + return 0 fi - echo "${txtred}Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF${txtrst}" + printf "${txtred}\nERROR: Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF\n\n${txtrst}" >& 2 exit 1 } #By default, download and then install. DOWNLOAD=${DOWNLOAD:-YES} -DOWNLOAD=$(check_valid DOWNLOAD) +DOWNLOAD=$(check_valid DOWNLOAD) || exit BUILD=${BUILD:-YES} -BUILD=$(check_valid BUILD) +BUILD=$(check_valid BUILD) || exit # Force downloading and installation even if the TPL already exists in lib/include FORCE=${FORCE:-NO} -FORCE=$(check_valid FORCE) +FORCE=$(check_valid FORCE) || exit DEBUG=${DEBUG:-NO} -DEBUG=$(check_valid DEBUG) +DEBUG=$(check_valid DEBUG) || exit # Shared libraries or static libraries? # For CRAY, must explicitly specify SHARED=YES, or it will default to NO @@ -60,36 +60,36 @@ then else SHARED="${SHARED:-YES}" fi -SHARED=$(check_valid SHARED) +SHARED=$(check_valid SHARED) || exit # Enable Burst-Buffer support in PnetCDF? BB=${BB:-NO} -BB=$(check_valid BB) +BB=$(check_valid BB) || exit CRAY=${CRAY:-NO} -CRAY=$(check_valid CRAY) +CRAY=$(check_valid CRAY) || exit MPI=${MPI:-NO} -MPI=$(check_valid MPI) +MPI=$(check_valid MPI) || exit # Which TPLS? (NetCDF always, but can be disabled if using an external version, PnetCDF if MPI=ON) NETCDF=${NETCDF:-YES} -NETCDF=$(check_valid NETCDF) +NETCDF=$(check_valid NETCDF) || exit PNETCDF=${PNETCDF:-${MPI}} -PNETCDF=$(check_valid PNETCDF) +PNETCDF=$(check_valid PNETCDF) || exit HDF5=${HDF5:-YES} -HDF5=$(check_valid HDF5) +HDF5=$(check_valid HDF5) || exit CGNS=${CGNS:-${HDF5}} -CGNS=$(check_valid CGNS) +CGNS=$(check_valid CGNS) || exit MATIO=${MATIO:-YES} -MATIO=$(check_valid MATIO) +MATIO=$(check_valid MATIO) || exit PARMETIS=${PARMETIS:-NO} -PARMETIS=$(check_valid PARMETIS) +PARMETIS=$(check_valid PARMETIS) || exit METIS=${METIS:-NO} -METIS=$(check_valid METIS) +METIS=$(check_valid METIS) || exit if [ "$PARMETIS" == "YES" ] then @@ -97,13 +97,13 @@ then fi FMT=${FMT:-YES} -FMT=$(check_valid FMT) +FMT=$(check_valid FMT) || exit GNU_PARALLEL=${GNU_PARALLEL:-YES} -GNU_PARALLEL=$(check_valid GNU_PARALLEL) +GNU_PARALLEL=$(check_valid GNU_PARALLEL) || exit USE_ZLIB_NG=${USE_ZLIB_NG:-NO} -USE_ZLIB_NG=$(check_valid USE_ZLIB_NG) +USE_ZLIB_NG=$(check_valid USE_ZLIB_NG) || exit if [ "${USE_ZLIB_NG}" == "YES" ] then @@ -111,39 +111,39 @@ then fi NEEDS_ZLIB=${NEEDS_ZLIB:-NO} -NEEDS_ZLIB=$(check_valid NEEDS_ZLIB) +NEEDS_ZLIB=$(check_valid NEEDS_ZLIB) || exit NEEDS_SZIP=${NEEDS_SZIP:-NO} -NEEDS_SZIP=$(check_valid NEEDS_SZIP) +NEEDS_SZIP=$(check_valid NEEDS_SZIP) || exit USE_AEC=${USE_AEC:-NO} -USE_AEC=$(check_valid USE_AEC) +USE_AEC=$(check_valid USE_AEC) || exit KOKKOS=${KOKKOS:-NO} -KOKKOS=$(check_valid KOKKOS) +KOKKOS=$(check_valid KOKKOS) || exit H5VERSION=${H5VERSION:-V114} # Build/Install the HDF5 C++ library? H5CPP=${H5CPP:-NO} -H5CPP=$(check_valid H5CPP) +H5CPP=$(check_valid H5CPP) || exit FAODEL=${FAODEL:-NO} -FAODEL=$(check_valid FAODEL) +FAODEL=$(check_valid FAODEL) || exit BOOST=${BOOST:-NO} -BOOST=$(check_valid BOOST) +BOOST=$(check_valid BOOST) || exit ADIOS2=${ADIOS2:-NO} -ADIOS2=$(check_valid ADIOS2) +ADIOS2=$(check_valid ADIOS2) || exit CATALYST2=${CATALYST2:-NO} -CATALYST2=$(check_valid CATALYST2) +CATALYST2=$(check_valid CATALYST2) || exit GTEST=${GTEST:-${FAODEL}} -GTEST=$(check_valid GTEST) +GTEST=$(check_valid GTEST) || exit CATCH2=${CATCH2:-YES} -CATCH2=$(check_valid CATCH2) +CATCH2=$(check_valid CATCH2) || exit SUDO=${SUDO:-} @@ -151,7 +151,7 @@ JOBS=${JOBS:-2} VERBOSE=${VERBOSE:-1} USE_PROXY=${USE_PROXY:-NO} -USE_PROXY=$(check_valid USE_PROXY) +USE_PROXY=$(check_valid USE_PROXY) || exit if [ "${USE_PROXY}" == "YES" ] then @@ -159,7 +159,7 @@ then export https_proxy="https://proxy.sandia.gov:80" fi -pwd +echo "Current Location = $(pwd)" INSTALL_PATH=${INSTALL_PATH:-${ACCESS}} if [ "$MPI" == "YES" ] && [ "$CRAY" == "YES" ] From d976c30c374f717859c1d11bbed6d657e2abf7f3 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 18 Apr 2024 14:44:57 -0500 Subject: [PATCH 05/19] EPU: Delete input files if requested --- .../seacas/applications/epu/EP_ExodusFile.C | 17 ++++++++-- .../seacas/applications/epu/EP_ExodusFile.h | 5 +-- .../applications/epu/EP_SystemInterface.C | 32 ++++++++++++++++--- .../applications/epu/EP_SystemInterface.h | 2 ++ packages/seacas/applications/epu/EP_Version.h | 6 ++-- packages/seacas/applications/epu/epu.C | 11 ++++--- 6 files changed, 56 insertions(+), 17 deletions(-) diff --git a/packages/seacas/applications/epu/EP_ExodusFile.C b/packages/seacas/applications/epu/EP_ExodusFile.C index d8921804dc..5cf8f3e742 100644 --- a/packages/seacas/applications/epu/EP_ExodusFile.C +++ b/packages/seacas/applications/epu/EP_ExodusFile.C @@ -1,5 +1,5 @@ /* - * Copyright(C) 1999-2021, 2023 National Technology & Engineering Solutions + * Copyright(C) 1999-2021, 2023, 2024 National Technology & Engineering Solutions * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * NTESS, the U.S. Government retains certain rights in this software. * @@ -129,12 +129,23 @@ void Excn::ExodusFile::close_all() } } -void Excn::ExodusFile::unlink_temporary_files() +void Excn::ExodusFile::unlink_input_files() +{ + fmt::print("\n\tUnlinking {}\n\t ...", filenames_[0]); + for (int p = 0; p < partCount_; p++) { + unlink(filenames_[p].c_str()); + } + fmt::print("\n\tUnlinking {}\n\n", filenames_[partCount_ - 1]); +} + +void Excn::ExodusFile::handle_temporary_files(bool delete_them) { for (int p = 0; p < partCount_; p++) { if (fileids_[p] >= 0) { ex_close(fileids_[p]); - unlink(filenames_[p].c_str()); + if (delete_them) { + unlink(filenames_[p].c_str()); + } fileids_[p] = -1; } } diff --git a/packages/seacas/applications/epu/EP_ExodusFile.h b/packages/seacas/applications/epu/EP_ExodusFile.h index 55f545d60e..79464fa838 100644 --- a/packages/seacas/applications/epu/EP_ExodusFile.h +++ b/packages/seacas/applications/epu/EP_ExodusFile.h @@ -1,5 +1,5 @@ /* - * Copyright(C) 1999-2023 National Technology & Engineering Solutions + * Copyright(C) 1999-, 20242024 National Technology & Engineering Solutions * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * NTESS, the U.S. Government retains certain rights in this software. * @@ -30,7 +30,8 @@ namespace Excn { static int io_word_size() { return ioWordSize_; } operator int() const; static int max_name_length() { return maximumNameLength_; } - static void unlink_temporary_files(); + static void handle_temporary_files(bool delete_them); + static void unlink_input_files(); private: int myProcessor_; diff --git a/packages/seacas/applications/epu/EP_SystemInterface.C b/packages/seacas/applications/epu/EP_SystemInterface.C index f0e1835539..21ff8d183e 100644 --- a/packages/seacas/applications/epu/EP_SystemInterface.C +++ b/packages/seacas/applications/epu/EP_SystemInterface.C @@ -50,6 +50,23 @@ namespace { Excn::SystemInterface::SystemInterface(int rank) : myRank_(rank) { enroll_options(); } +bool Excn::SystemInterface::remove_file_per_rank_files() const +{ + if (removeFilePerRankFiles_) { + if (partCount_ <= 0 && startPart_ == 0 && subcycle_ == -1 && cycle_ == -1) { + return true; + } + else { + fmt::print("\nNot removing the file-per-rank input files due to presence of " + "start/part/subcycle options.\n\n"); + return false; + } + } + else { + return false; + } +} + void Excn::SystemInterface::enroll_options() { options_.usage("[options] basename"); @@ -105,6 +122,10 @@ void Excn::SystemInterface::enroll_options() "\t\tthey are automatically deleted unless -keep_temporary is specified.", nullptr); + options_.enroll("remove_file_per_rank_files", GetLongOption::NoValue, + "Remove the input file-per-rank files after they have successfully been joined.", + nullptr); + options_.enroll( "verify_valid_file", GetLongOption::NoValue, "Reopen the output file right after closing it to verify that the file is valid.\n" @@ -374,11 +395,12 @@ bool Excn::SystemInterface::parse_options(int argc, char **argv) sumSharedNodes_ = options_.retrieve("sum_shared_nodes") != nullptr; append_ = options_.retrieve("append") != nullptr; - subcycle_ = options_.get_option_value("subcycle", subcycle_); - cycle_ = options_.get_option_value("cycle", cycle_); - subcycleJoin_ = options_.retrieve("join_subcycles") != nullptr; - keepTemporary_ = options_.retrieve("keep_temporary") != nullptr; - verifyValidFile_ = options_.retrieve("verify_valid_file") != nullptr; + subcycle_ = options_.get_option_value("subcycle", subcycle_); + cycle_ = options_.get_option_value("cycle", cycle_); + subcycleJoin_ = options_.retrieve("join_subcycles") != nullptr; + keepTemporary_ = options_.retrieve("keep_temporary") != nullptr; + removeFilePerRankFiles_ = options_.retrieve("remove_file_per_rank_files") != nullptr; + verifyValidFile_ = options_.retrieve("verify_valid_file") != nullptr; if (options_.retrieve("map") != nullptr) { mapIds_ = true; diff --git a/packages/seacas/applications/epu/EP_SystemInterface.h b/packages/seacas/applications/epu/EP_SystemInterface.h index ca892562b2..f5b4c4159e 100644 --- a/packages/seacas/applications/epu/EP_SystemInterface.h +++ b/packages/seacas/applications/epu/EP_SystemInterface.h @@ -77,6 +77,7 @@ namespace Excn { bool output_shared_nodes() const { return outputSharedNodes_; } bool is_auto() const { return auto_; } bool keep_temporary() const { return keepTemporary_; } + bool remove_file_per_rank_files() const; bool verify_valid_file() const { return verifyValidFile_; } int max_open_files() const { @@ -158,6 +159,7 @@ namespace Excn { bool outputSharedNodes_{false}; bool auto_{false}; bool keepTemporary_{false}; + bool removeFilePerRankFiles_{false}; bool verifyValidFile_{false}; bool addNodalCommunicationMap_{false}; diff --git a/packages/seacas/applications/epu/EP_Version.h b/packages/seacas/applications/epu/EP_Version.h index 4d982a5453..aca0e9ff65 100644 --- a/packages/seacas/applications/epu/EP_Version.h +++ b/packages/seacas/applications/epu/EP_Version.h @@ -1,5 +1,5 @@ /* - * Copyright(C) 1999-2023 National Technology & Engineering Solutions + * Copyright(C) 1999-2024 National Technology & Engineering Solutions * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * NTESS, the U.S. Government retains certain rights in this software. * @@ -11,6 +11,6 @@ static const std::array qainfo{ "epu -- E Pluribus Unum", - "6.08", - "2024/03/07", + "6.09", + "2024/04/18", }; diff --git a/packages/seacas/applications/epu/epu.C b/packages/seacas/applications/epu/epu.C index 9c2bf8340c..89fcb8cf97 100644 --- a/packages/seacas/applications/epu/epu.C +++ b/packages/seacas/applications/epu/epu.C @@ -529,7 +529,7 @@ int main(int argc, char *argv[]) ExodusFile::close_all(); #if ENABLE_PARALLEL_EPU - MPI_Barrier(MPI_COMM_WORLD); // CHECK: ALLOW MPI_COMM_WORLD + MPI_Barrier(MPI_COMM_WORLD); // CHECK: ALLOW MPI_COMM_WORLD #endif } else { @@ -664,9 +664,12 @@ int main(int argc, char *argv[]) } } - if (error == 0 && !interFace.keep_temporary()) { - ExodusFile::unlink_temporary_files(); - } + bool delete_temp = error == 0 && !interFace.keep_temporary(); + ExodusFile::handle_temporary_files(delete_temp); + } + + if (error == 0 && interFace.remove_file_per_rank_files()) { + ExodusFile::unlink_input_files(); } time_t end_time = std::time(nullptr); From 4cae738af8a99e568038acf066128b5bd0fd0dc5 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Mon, 22 Apr 2024 14:49:10 -0600 Subject: [PATCH 06/19] APREPRO: Fix some issues found in sierra input files * Testing an undefined variable against a string in a boolean (EQ, NE, LT, ...) was always returning true. . Changed such that an undefined variable in a boolean test with a string expression treats the undefined variable as the empty string. `{if (undefined_var == "Greg")}' Will parse as `{if ("" == "Greg")}' and output an undefined_variable warning. * Testing an undefined variable against a numerical expression in a boolean (EQ, NE, LT, ...) was returning strange syntax error. It now treats the undefined variable as having a value of `0` and outputs the undefined variable warning/error. * The `exp()` function will output an ERANGE error for both underflow and overflow. We are ok with underflow not giving an error. Changed so only get math error in case of overflow. --- .../libraries/aprepro_lib/apr_aprepro.cc | 4 +- .../libraries/aprepro_lib/apr_builtin.cc | 10 +- .../libraries/aprepro_lib/apr_parser.cc | 1615 ++++++++++------- .../seacas/libraries/aprepro_lib/aprepro.yy | 48 +- .../libraries/aprepro_lib/aprepro_parser.h | 8 +- 5 files changed, 1043 insertions(+), 642 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc index 13b178911e..b3d2baed43 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc @@ -33,8 +33,8 @@ #endif namespace { - const std::string version_short{"6.27"}; - const std::string version_date{"(2024/04/05)"}; + const std::string version_short{"6.28"}; + const std::string version_date{"(2024/04/22)"}; const std::string version_string = version_short + " " + version_date; void output_copyright(); diff --git a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc index 6072dde254..fb6def4643 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc @@ -372,7 +372,15 @@ namespace SEAMS { { reset_error(); double temp = exp(x); - SEAMS::math_error("exp"); + // `exp` will report ERANGE error on both overflow and underflow + // We want no error on underflow, so see if `temp == 0` and if so, + // don't check math_error. + if (temp != 0.0) { + SEAMS::math_error("exp"); + } + else { + reset_error(); + } return (temp); } diff --git a/packages/seacas/libraries/aprepro_lib/apr_parser.cc b/packages/seacas/libraries/aprepro_lib/apr_parser.cc index c8d5c5dc57..4d13f03a95 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_parser.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_parser.cc @@ -2,7 +2,7 @@ // Skeleton implementation for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2021, 2023, 2024 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018-2021 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 @@ -77,12 +77,12 @@ namespace SEAMS { extern bool echo; } -#line 82 "apr_parser.cc" +#line 84 "apr_parser.cc" #include "aprepro_parser.h" // Second part of user prologue. -#line 110 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 112 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" #include "apr_scanner.h" #include "aprepro.h" @@ -93,7 +93,7 @@ namespace SEAMS { #undef yylex #define yylex aprepro.lexer->lex -#line 101 "apr_parser.cc" +#line 103 "apr_parser.cc" #ifndef YY_ #if defined YYENABLE_NLS && YYENABLE_NLS @@ -165,7 +165,7 @@ namespace SEAMS { #define YYRECOVERING() (!!yyerrstatus_) namespace SEAMS { -#line 175 "apr_parser.cc" +#line 177 "apr_parser.cc" /// Build a parser object. Parser::Parser(class Aprepro &aprepro_yyarg) @@ -178,7 +178,7 @@ namespace SEAMS { { } - Parser::~Parser() = default; + Parser::~Parser() {} Parser::syntax_error::~syntax_error() YY_NOEXCEPT YY_NOTHROW {} @@ -518,16 +518,16 @@ namespace SEAMS { { switch (yyn) { case 4: // line: '\n' -#line 129 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 131 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (echo) aprepro.lexer->LexerOutput("\n", 1); } -#line 632 "apr_parser.cc" +#line 634 "apr_parser.cc" break; case 5: // line: LBRACE exp RBRACE -#line 130 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 132 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (echo) { SEAMS::symrec *format = aprepro.getsym("_FORMAT"); @@ -536,352 +536,642 @@ namespace SEAMS { aprepro.lexer->LexerOutput(tmpstr.c_str(), tmpstr.size()); } else { - auto tmpstr = fmt::sprintf(format->value.svar, (yystack_[1].value.val)); - aprepro.lexer->LexerOutput(tmpstr.c_str(), tmpstr.size()); + static char tmpstr[512]; + int len = + snprintf(tmpstr, 512, format->value.svar.c_str(), (yystack_[1].value.val)); + aprepro.lexer->LexerOutput(tmpstr, len); } } } -#line 644 "apr_parser.cc" +#line 652 "apr_parser.cc" break; case 6: // line: LBRACE sexp RBRACE -#line 137 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 145 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { - if (echo && (yystack_[1].value.string) != nullptr) { + if (echo && (yystack_[1].value.string) != NULL) { aprepro.lexer->LexerOutput((yystack_[1].value.string), strlen((yystack_[1].value.string))); } } -#line 653 "apr_parser.cc" +#line 661 "apr_parser.cc" break; case 7: // line: LBRACE aexp RBRACE -#line 141 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 149 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { } -#line 659 "apr_parser.cc" +#line 667 "apr_parser.cc" break; case 8: // line: LBRACE RBRACE -#line 142 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 150 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { } -#line 665 "apr_parser.cc" +#line 673 "apr_parser.cc" break; case 9: // line: error RBRACE -#line 143 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 151 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { yyerrok; } -#line 671 "apr_parser.cc" +#line 679 "apr_parser.cc" break; case 10: // bool: exp LT exp -#line 146 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 154 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) < (yystack_[0].value.val); } -#line 677 "apr_parser.cc" +#line 685 "apr_parser.cc" break; case 11: // bool: exp GT exp -#line 147 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 155 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) > (yystack_[0].value.val); } -#line 683 "apr_parser.cc" +#line 691 "apr_parser.cc" break; case 12: // bool: NOT exp -#line 148 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 156 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = !((yystack_[0].value.val)); } -#line 689 "apr_parser.cc" +#line 697 "apr_parser.cc" break; case 13: // bool: exp LE exp -#line 149 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 157 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) <= (yystack_[0].value.val); } -#line 695 "apr_parser.cc" +#line 703 "apr_parser.cc" break; case 14: // bool: exp GE exp -#line 150 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 158 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) >= (yystack_[0].value.val); } -#line 701 "apr_parser.cc" +#line 709 "apr_parser.cc" break; case 15: // bool: exp EQ exp -#line 151 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 159 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) == (yystack_[0].value.val); } -#line 707 "apr_parser.cc" +#line 715 "apr_parser.cc" break; case 16: // bool: exp NE exp -#line 152 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 160 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) != (yystack_[0].value.val); } -#line 713 "apr_parser.cc" +#line 721 "apr_parser.cc" break; case 17: // bool: exp LOR exp -#line 153 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 161 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); } -#line 719 "apr_parser.cc" +#line 727 "apr_parser.cc" break; case 18: // bool: exp LAND exp -#line 154 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 162 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); } -#line 725 "apr_parser.cc" +#line 733 "apr_parser.cc" break; case 19: // bool: bool LOR bool -#line 155 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 163 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); } -#line 731 "apr_parser.cc" +#line 739 "apr_parser.cc" break; case 20: // bool: bool LAND bool -#line 156 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 164 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); } -#line 737 "apr_parser.cc" +#line 745 "apr_parser.cc" break; case 21: // bool: bool LOR exp -#line 157 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 165 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); } -#line 743 "apr_parser.cc" +#line 751 "apr_parser.cc" break; case 22: // bool: bool LAND exp -#line 158 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 166 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); } -#line 749 "apr_parser.cc" +#line 757 "apr_parser.cc" break; case 23: // bool: exp LOR bool -#line 159 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 167 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); } -#line 755 "apr_parser.cc" +#line 763 "apr_parser.cc" break; case 24: // bool: exp LAND bool -#line 160 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 168 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); } -#line 761 "apr_parser.cc" +#line 769 "apr_parser.cc" break; case 25: // bool: LPAR bool RPAR -#line 161 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 169 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[1].value.val); } -#line 767 "apr_parser.cc" +#line 775 "apr_parser.cc" break; - case 26: // bool: sexp LT sexp -#line 164 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 26: // bool: UNDVAR LOR exp +#line 171 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 || (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 781 "apr_parser.cc" + break; + + case 27: // bool: UNDVAR LAND exp +#line 172 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 && (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 787 "apr_parser.cc" + break; + + case 28: // bool: exp LOR UNDVAR +#line 173 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) || 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 793 "apr_parser.cc" + break; + + case 29: // bool: exp LAND UNDVAR +#line 174 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) && 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 799 "apr_parser.cc" + break; + + case 30: // bool: bool LOR UNDVAR +#line 175 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) || 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 805 "apr_parser.cc" + break; + + case 31: // bool: bool LAND UNDVAR +#line 176 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) && 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 811 "apr_parser.cc" + break; + + case 32: // bool: UNDVAR LOR bool +#line 177 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 || (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 817 "apr_parser.cc" + break; + + case 33: // bool: UNDVAR LAND bool +#line 178 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 && (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 823 "apr_parser.cc" + break; + + case 34: // bool: sexp LT sexp +#line 181 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) < 0 ? 1 : 0); } -#line 773 "apr_parser.cc" +#line 829 "apr_parser.cc" break; - case 27: // bool: sexp GT sexp -#line 165 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 35: // bool: sexp GT sexp +#line 182 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) > 0 ? 1 : 0); } -#line 779 "apr_parser.cc" +#line 835 "apr_parser.cc" break; - case 28: // bool: sexp LE sexp -#line 166 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 36: // bool: sexp LE sexp +#line 183 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) <= 0 ? 1 : 0); } -#line 785 "apr_parser.cc" +#line 841 "apr_parser.cc" break; - case 29: // bool: sexp GE sexp -#line 167 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 37: // bool: sexp GE sexp +#line 184 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) >= 0 ? 1 : 0); } -#line 791 "apr_parser.cc" +#line 847 "apr_parser.cc" break; - case 30: // bool: sexp EQ sexp -#line 168 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 38: // bool: sexp EQ sexp +#line 185 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) == 0 ? 1 : 0); } -#line 797 "apr_parser.cc" +#line 853 "apr_parser.cc" break; - case 31: // bool: sexp NE sexp -#line 169 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 39: // bool: sexp NE sexp +#line 186 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) != 0 ? 1 : 0); } -#line 803 "apr_parser.cc" +#line 859 "apr_parser.cc" break; - case 32: // aexp: AVAR -#line 171 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 40: // bool: UNDVAR LT sexp +#line 188 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) < 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 865 "apr_parser.cc" + break; + + case 41: // bool: UNDVAR GT sexp +#line 189 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) > 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 871 "apr_parser.cc" + break; + + case 42: // bool: UNDVAR LE sexp +#line 190 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) <= 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 877 "apr_parser.cc" + break; + + case 43: // bool: UNDVAR GE sexp +#line 191 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) >= 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 883 "apr_parser.cc" + break; + + case 44: // bool: UNDVAR EQ sexp +#line 192 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) == 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 889 "apr_parser.cc" + break; + + case 45: // bool: UNDVAR NE sexp +#line 193 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) != 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 895 "apr_parser.cc" + break; + + case 46: // bool: sexp LT UNDVAR +#line 195 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") < 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 901 "apr_parser.cc" + break; + + case 47: // bool: sexp GT UNDVAR +#line 196 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") > 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 907 "apr_parser.cc" + break; + + case 48: // bool: sexp LE UNDVAR +#line 197 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") <= 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 913 "apr_parser.cc" + break; + + case 49: // bool: sexp GE UNDVAR +#line 198 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") >= 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 919 "apr_parser.cc" + break; + + case 50: // bool: sexp EQ UNDVAR +#line 199 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") == 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 925 "apr_parser.cc" + break; + + case 51: // bool: sexp NE UNDVAR +#line 200 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") != 0 ? 1 : 0); + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 931 "apr_parser.cc" + break; + + case 52: // bool: UNDVAR LT exp +#line 202 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 < (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 937 "apr_parser.cc" + break; + + case 53: // bool: UNDVAR GT exp +#line 203 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 > (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 943 "apr_parser.cc" + break; + + case 54: // bool: UNDVAR LE exp +#line 204 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 <= (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 949 "apr_parser.cc" + break; + + case 55: // bool: UNDVAR GE exp +#line 205 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 >= (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 955 "apr_parser.cc" + break; + + case 56: // bool: UNDVAR EQ exp +#line 206 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 == (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 961 "apr_parser.cc" + break; + + case 57: // bool: UNDVAR NE exp +#line 207 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = 0 != (yystack_[0].value.val); + undefined_error(aprepro, (yystack_[2].value.tptr)->name); + } +#line 967 "apr_parser.cc" + break; + + case 58: // bool: exp LT UNDVAR +#line 209 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) < 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 973 "apr_parser.cc" + break; + + case 59: // bool: exp GT UNDVAR +#line 210 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) > 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 979 "apr_parser.cc" + break; + + case 60: // bool: exp LE UNDVAR +#line 211 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) <= 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 985 "apr_parser.cc" + break; + + case 61: // bool: exp GE UNDVAR +#line 212 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) >= 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 991 "apr_parser.cc" + break; + + case 62: // bool: exp EQ UNDVAR +#line 213 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) == 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 997 "apr_parser.cc" + break; + + case 63: // bool: exp NE UNDVAR +#line 214 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + { + (yylhs.value.val) = (yystack_[2].value.val) != 0; + undefined_error(aprepro, (yystack_[0].value.tptr)->name); + } +#line 1003 "apr_parser.cc" + break; + + case 64: // aexp: AVAR +#line 216 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = aprepro.make_array(*((yystack_[0].value.tptr)->value.avar)); } -#line 809 "apr_parser.cc" +#line 1009 "apr_parser.cc" break; - case 33: // aexp: AFNCT LPAR sexp RPAR -#line 172 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 65: // aexp: AFNCT LPAR sexp RPAR +#line 217 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.arrfnct_c == nullptr)) + (yystack_[3].value.tptr)->value.arrfnct_c == NULL)) (yylhs.value.arrval) = (*((yystack_[3].value.tptr)->value.arrfnct_c))((yystack_[1].value.string)); else yyerrok; } -#line 820 "apr_parser.cc" +#line 1020 "apr_parser.cc" break; - case 34: // aexp: AFNCT LPAR sexp COMMA exp RPAR -#line 178 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 66: // aexp: AFNCT LPAR sexp COMMA exp RPAR +#line 223 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.arrfnct_cd == nullptr)) + (yystack_[5].value.tptr)->value.arrfnct_cd == NULL)) (yylhs.value.arrval) = (*((yystack_[5].value.tptr)->value.arrfnct_cd))( (yystack_[3].value.string), (yystack_[1].value.val)); else yyerrok; } -#line 831 "apr_parser.cc" +#line 1031 "apr_parser.cc" break; - case 35: // aexp: AFNCT LPAR sexp COMMA sexp RPAR -#line 184 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 67: // aexp: AFNCT LPAR sexp COMMA sexp RPAR +#line 229 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.arrfnct_cc == nullptr)) + (yystack_[5].value.tptr)->value.arrfnct_cc == NULL)) (yylhs.value.arrval) = (*((yystack_[5].value.tptr)->value.arrfnct_cc))( (yystack_[3].value.string), (yystack_[1].value.string)); else yyerrok; } -#line 842 "apr_parser.cc" +#line 1042 "apr_parser.cc" break; - case 36: // aexp: AFNCT LPAR exp COMMA exp COMMA exp RPAR -#line 190 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 68: // aexp: AFNCT LPAR exp COMMA exp COMMA exp RPAR +#line 235 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.arrfnct_ddd == nullptr)) + (yystack_[7].value.tptr)->value.arrfnct_ddd == NULL)) (yylhs.value.arrval) = (*((yystack_[7].value.tptr)->value.arrfnct_ddd))( (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else yyerrok; } -#line 853 "apr_parser.cc" +#line 1053 "apr_parser.cc" break; - case 37: // aexp: AFNCT LPAR exp COMMA exp RPAR -#line 196 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 69: // aexp: AFNCT LPAR exp COMMA exp RPAR +#line 241 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.arrfnct_dd == nullptr)) + (yystack_[5].value.tptr)->value.arrfnct_dd == NULL)) (yylhs.value.arrval) = (*((yystack_[5].value.tptr)->value.arrfnct_dd))( (yystack_[3].value.val), (yystack_[1].value.val)); else yyerrok; } -#line 864 "apr_parser.cc" +#line 1064 "apr_parser.cc" break; - case 38: // aexp: AFNCT LPAR exp RPAR -#line 202 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 70: // aexp: AFNCT LPAR exp RPAR +#line 247 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.arrfnct_d == nullptr)) + (yystack_[3].value.tptr)->value.arrfnct_d == NULL)) (yylhs.value.arrval) = (*((yystack_[3].value.tptr)->value.arrfnct_d))((yystack_[1].value.val)); else yyerrok; } -#line 875 "apr_parser.cc" +#line 1075 "apr_parser.cc" break; - case 39: // aexp: AFNCT LPAR aexp RPAR -#line 208 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 71: // aexp: AFNCT LPAR aexp RPAR +#line 253 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.arrfnct_a == nullptr)) + (yystack_[3].value.tptr)->value.arrfnct_a == NULL)) (yylhs.value.arrval) = (*((yystack_[3].value.tptr)->value.arrfnct_a))((yystack_[1].value.arrval)); else yyerrok; } -#line 886 "apr_parser.cc" +#line 1086 "apr_parser.cc" break; - case 40: // aexp: SVAR EQUAL aexp -#line 214 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 72: // aexp: SVAR EQUAL aexp +#line 259 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); } -#line 895 "apr_parser.cc" +#line 1095 "apr_parser.cc" break; - case 41: // aexp: VAR EQUAL aexp -#line 218 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 73: // aexp: VAR EQUAL aexp +#line 263 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); } -#line 904 "apr_parser.cc" +#line 1104 "apr_parser.cc" break; - case 42: // aexp: AVAR EQUAL aexp -#line 222 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 74: // aexp: AVAR EQUAL aexp +#line 267 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = (yystack_[0].value.arrval); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); @@ -889,21 +1179,21 @@ namespace SEAMS { redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); } -#line 912 "apr_parser.cc" +#line 1112 "apr_parser.cc" break; - case 43: // aexp: UNDVAR EQUAL aexp -#line 225 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 75: // aexp: UNDVAR EQUAL aexp +#line 270 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); } -#line 919 "apr_parser.cc" +#line 1119 "apr_parser.cc" break; - case 44: // aexp: aexp PLU aexp -#line 227 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 76: // aexp: aexp PLU aexp +#line 272 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->cols && (yystack_[2].value.arrval)->rows == (yystack_[0].value.arrval)->rows) { @@ -915,19 +1205,19 @@ namespace SEAMS { yyerrok; } } -#line 932 "apr_parser.cc" +#line 1132 "apr_parser.cc" break; - case 45: // aexp: SUB aexp -#line 235 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 77: // aexp: SUB aexp +#line 280 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = array_scale((yystack_[0].value.arrval), -1.0); } -#line 938 "apr_parser.cc" +#line 1138 "apr_parser.cc" break; - case 46: // aexp: aexp SUB aexp -#line 237 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 78: // aexp: aexp SUB aexp +#line 282 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->cols && (yystack_[2].value.arrval)->rows == (yystack_[0].value.arrval)->rows) { @@ -939,36 +1229,36 @@ namespace SEAMS { yyerrok; } } -#line 951 "apr_parser.cc" +#line 1151 "apr_parser.cc" break; - case 47: // aexp: aexp TIM exp -#line 245 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 79: // aexp: aexp TIM exp +#line 290 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = array_scale((yystack_[2].value.arrval), (yystack_[0].value.val)); } -#line 957 "apr_parser.cc" +#line 1157 "apr_parser.cc" break; - case 48: // aexp: aexp DIV exp -#line 246 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 80: // aexp: aexp DIV exp +#line 291 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = array_scale((yystack_[2].value.arrval), 1.0 / (yystack_[0].value.val)); } -#line 963 "apr_parser.cc" +#line 1163 "apr_parser.cc" break; - case 49: // aexp: exp TIM aexp -#line 247 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 81: // aexp: exp TIM aexp +#line 292 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.arrval) = array_scale((yystack_[0].value.arrval), (yystack_[2].value.val)); } -#line 969 "apr_parser.cc" +#line 1169 "apr_parser.cc" break; - case 50: // aexp: aexp TIM aexp -#line 248 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 82: // aexp: aexp TIM aexp +#line 293 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->rows) { (yylhs.value.arrval) = @@ -980,66 +1270,66 @@ namespace SEAMS { yyerrok; } } -#line 982 "apr_parser.cc" +#line 1182 "apr_parser.cc" break; - case 51: // sexp: QSTRING -#line 257 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 83: // sexp: QSTRING +#line 302 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (yystack_[0].value.string); } -#line 988 "apr_parser.cc" +#line 1188 "apr_parser.cc" break; - case 52: // sexp: SVAR -#line 258 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 84: // sexp: SVAR +#line 303 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (char *)(yystack_[0].value.tptr)->value.svar.c_str(); } -#line 994 "apr_parser.cc" +#line 1194 "apr_parser.cc" break; - case 53: // sexp: IMMSVAR -#line 259 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 85: // sexp: IMMSVAR +#line 304 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (char *)(yystack_[0].value.tptr)->value.svar.c_str(); } -#line 1000 "apr_parser.cc" +#line 1200 "apr_parser.cc" break; - case 54: // sexp: UNDVAR EQUAL sexp -#line 260 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 86: // sexp: UNDVAR EQUAL sexp +#line 305 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); set_type(aprepro, (yystack_[2].value.tptr), Parser::token::SVAR); } -#line 1007 "apr_parser.cc" +#line 1207 "apr_parser.cc" break; - case 55: // sexp: SVAR EQUAL sexp -#line 262 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 87: // sexp: SVAR EQUAL sexp +#line 307 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); redefined_warning(aprepro, (yystack_[2].value.tptr)); } -#line 1015 "apr_parser.cc" +#line 1215 "apr_parser.cc" break; - case 56: // sexp: VAR EQUAL sexp -#line 265 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 88: // sexp: VAR EQUAL sexp +#line 310 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::SVAR); } -#line 1024 "apr_parser.cc" +#line 1224 "apr_parser.cc" break; - case 57: // sexp: AVAR EQUAL sexp -#line 269 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 89: // sexp: AVAR EQUAL sexp +#line 314 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (yystack_[0].value.string); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); @@ -1047,258 +1337,258 @@ namespace SEAMS { redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::SVAR); } -#line 1034 "apr_parser.cc" +#line 1234 "apr_parser.cc" break; - case 58: // sexp: IMMSVAR EQUAL sexp -#line 274 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 90: // sexp: IMMSVAR EQUAL sexp +#line 319 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = (char *)(yystack_[2].value.tptr)->value.svar.c_str(); immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1040 "apr_parser.cc" +#line 1240 "apr_parser.cc" break; - case 59: // sexp: IMMVAR EQUAL sexp -#line 275 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 91: // sexp: IMMVAR EQUAL sexp +#line 320 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { immutable_modify(aprepro, (yystack_[2].value.tptr)); YYERROR; } -#line 1046 "apr_parser.cc" +#line 1246 "apr_parser.cc" break; - case 60: // sexp: SFNCT LPAR sexp RPAR -#line 276 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 92: // sexp: SFNCT LPAR sexp RPAR +#line 321 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.strfnct_c == nullptr)) + (yystack_[3].value.tptr)->value.strfnct_c == NULL)) (yylhs.value.string) = (char *)(*((yystack_[3].value.tptr)->value.strfnct_c))( (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; } -#line 1057 "apr_parser.cc" +#line 1257 "apr_parser.cc" break; - case 61: // sexp: SFNCT LPAR RPAR -#line 282 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 93: // sexp: SFNCT LPAR RPAR +#line 327 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[2].value.tptr), - (yystack_[2].value.tptr)->value.strfnct == nullptr)) + (yystack_[2].value.tptr)->value.strfnct == NULL)) (yylhs.value.string) = (char *)(*((yystack_[2].value.tptr)->value.strfnct))(); else (yylhs.value.string) = (char *)""; } -#line 1068 "apr_parser.cc" +#line 1268 "apr_parser.cc" break; - case 62: // sexp: SFNCT LPAR exp RPAR -#line 288 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 94: // sexp: SFNCT LPAR exp RPAR +#line 333 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.strfnct_d == nullptr)) + (yystack_[3].value.tptr)->value.strfnct_d == NULL)) (yylhs.value.string) = (char *)(*((yystack_[3].value.tptr)->value.strfnct_d))((yystack_[1].value.val)); else (yylhs.value.string) = (char *)""; } -#line 1079 "apr_parser.cc" +#line 1279 "apr_parser.cc" break; - case 63: // sexp: SFNCT LPAR aexp RPAR -#line 294 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 95: // sexp: SFNCT LPAR aexp RPAR +#line 339 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.strfnct_a == nullptr)) + (yystack_[3].value.tptr)->value.strfnct_a == NULL)) (yylhs.value.string) = (char *)(*((yystack_[3].value.tptr)->value.strfnct_a))( (yystack_[1].value.arrval)); else (yylhs.value.string) = (char *)""; } -#line 1090 "apr_parser.cc" +#line 1290 "apr_parser.cc" break; - case 64: // sexp: sexp CONCAT sexp -#line 300 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 96: // sexp: sexp CONCAT sexp +#line 345 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { concat_string((yystack_[2].value.string), (yystack_[0].value.string), &(yylhs.value.string)); } -#line 1096 "apr_parser.cc" +#line 1296 "apr_parser.cc" break; - case 65: // sexp: SFNCT LPAR exp COMMA exp RPAR -#line 301 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 97: // sexp: SFNCT LPAR exp COMMA exp RPAR +#line 346 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.strfnct_dd == nullptr)) + (yystack_[5].value.tptr)->value.strfnct_dd == NULL)) (yylhs.value.string) = (char *)(*((yystack_[5].value.tptr)->value.strfnct_dd))( (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.string) = (char *)""; } -#line 1107 "apr_parser.cc" +#line 1307 "apr_parser.cc" break; - case 66: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp COMMA sexp COMMA sexp RPAR -#line 307 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 98: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp COMMA sexp COMMA sexp RPAR +#line 352 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[11].value.tptr), - (yystack_[11].value.tptr)->value.strfnct_dcccc == nullptr)) + (yystack_[11].value.tptr)->value.strfnct_dcccc == NULL)) (yylhs.value.string) = (char *)(*((yystack_[11].value.tptr)->value.strfnct_dcccc))( (yystack_[9].value.val), (yystack_[7].value.string), (yystack_[5].value.string), (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; } -#line 1118 "apr_parser.cc" +#line 1318 "apr_parser.cc" break; - case 67: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp RPAR -#line 313 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 99: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp RPAR +#line 358 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.strfnct_dcc == nullptr)) + (yystack_[7].value.tptr)->value.strfnct_dcc == NULL)) (yylhs.value.string) = (char *)(*((yystack_[7].value.tptr)->value.strfnct_dcc))( (yystack_[5].value.val), (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; } -#line 1129 "apr_parser.cc" +#line 1329 "apr_parser.cc" break; - case 68: // sexp: SFNCT LPAR sexp COMMA sexp COMMA sexp RPAR -#line 319 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 100: // sexp: SFNCT LPAR sexp COMMA sexp COMMA sexp RPAR +#line 364 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.strfnct_ccc == nullptr)) + (yystack_[7].value.tptr)->value.strfnct_ccc == NULL)) (yylhs.value.string) = (char *)(*((yystack_[7].value.tptr)->value.strfnct_ccc))( (yystack_[5].value.string), (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; } -#line 1140 "apr_parser.cc" +#line 1340 "apr_parser.cc" break; - case 69: // sexp: SFNCT LPAR sexp COMMA sexp RPAR -#line 325 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 101: // sexp: SFNCT LPAR sexp COMMA sexp RPAR +#line 370 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.strfnct_cc == nullptr)) + (yystack_[5].value.tptr)->value.strfnct_cc == NULL)) (yylhs.value.string) = (char *)(*((yystack_[5].value.tptr)->value.strfnct_cc))( (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; } -#line 1151 "apr_parser.cc" +#line 1351 "apr_parser.cc" break; - case 70: // sexp: bool QUEST sexp COLON sexp -#line 331 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 102: // sexp: bool QUEST sexp COLON sexp +#line 376 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.string) = ((yystack_[4].value.val)) ? ((yystack_[2].value.string)) : ((yystack_[0].value.string)); } -#line 1157 "apr_parser.cc" +#line 1357 "apr_parser.cc" break; - case 71: // exp: NUM -#line 333 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 103: // exp: NUM +#line 378 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); } -#line 1163 "apr_parser.cc" +#line 1363 "apr_parser.cc" break; - case 72: // exp: INC NUM -#line 334 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 104: // exp: INC NUM +#line 379 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val) + 1; } -#line 1169 "apr_parser.cc" +#line 1369 "apr_parser.cc" break; - case 73: // exp: DEC NUM -#line 335 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 105: // exp: DEC NUM +#line 380 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val) - 1; } -#line 1175 "apr_parser.cc" +#line 1375 "apr_parser.cc" break; - case 74: // exp: VAR -#line 336 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 106: // exp: VAR +#line 381 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; } -#line 1181 "apr_parser.cc" +#line 1381 "apr_parser.cc" break; - case 75: // exp: IMMVAR -#line 337 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 107: // exp: IMMVAR +#line 382 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; } -#line 1187 "apr_parser.cc" +#line 1387 "apr_parser.cc" break; - case 76: // exp: INC VAR -#line 338 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 108: // exp: INC VAR +#line 383 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ++((yystack_[0].value.tptr)->value.var); } -#line 1193 "apr_parser.cc" +#line 1393 "apr_parser.cc" break; - case 77: // exp: DEC VAR -#line 339 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 109: // exp: DEC VAR +#line 384 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = --((yystack_[0].value.tptr)->value.var); } -#line 1199 "apr_parser.cc" +#line 1399 "apr_parser.cc" break; - case 78: // exp: VAR INC -#line 340 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 110: // exp: VAR INC +#line 385 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)++; } -#line 1205 "apr_parser.cc" +#line 1405 "apr_parser.cc" break; - case 79: // exp: VAR DEC -#line 341 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 111: // exp: VAR DEC +#line 386 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)--; } -#line 1211 "apr_parser.cc" +#line 1411 "apr_parser.cc" break; - case 80: // exp: VAR EQUAL exp -#line 342 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 112: // exp: VAR EQUAL exp +#line 387 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); redefined_warning(aprepro, (yystack_[2].value.tptr)); } -#line 1218 "apr_parser.cc" +#line 1418 "apr_parser.cc" break; - case 81: // exp: SVAR EQUAL exp -#line 344 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 113: // exp: SVAR EQUAL exp +#line 389 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); } -#line 1226 "apr_parser.cc" +#line 1426 "apr_parser.cc" break; - case 82: // exp: AVAR EQUAL exp -#line 347 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 114: // exp: AVAR EQUAL exp +#line 392 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); @@ -1306,47 +1596,47 @@ namespace SEAMS { redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); } -#line 1236 "apr_parser.cc" +#line 1436 "apr_parser.cc" break; - case 83: // exp: VAR EQ_PLUS exp -#line 352 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 115: // exp: VAR EQ_PLUS exp +#line 397 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var += (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; } -#line 1242 "apr_parser.cc" +#line 1442 "apr_parser.cc" break; - case 84: // exp: VAR EQ_MINUS exp -#line 353 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 116: // exp: VAR EQ_MINUS exp +#line 398 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var -= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; } -#line 1248 "apr_parser.cc" +#line 1448 "apr_parser.cc" break; - case 85: // exp: VAR EQ_TIME exp -#line 354 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 117: // exp: VAR EQ_TIME exp +#line 399 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var *= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; } -#line 1254 "apr_parser.cc" +#line 1454 "apr_parser.cc" break; - case 86: // exp: VAR EQ_DIV exp -#line 355 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 118: // exp: VAR EQ_DIV exp +#line 400 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var /= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; } -#line 1260 "apr_parser.cc" +#line 1460 "apr_parser.cc" break; - case 87: // exp: VAR EQ_POW exp -#line 356 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 119: // exp: VAR EQ_POW exp +#line 401 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { reset_error(); (yystack_[2].value.tptr)->value.var = @@ -1354,213 +1644,213 @@ namespace SEAMS { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; SEAMS::math_error(aprepro, "Power"); } -#line 1270 "apr_parser.cc" +#line 1470 "apr_parser.cc" break; - case 88: // exp: INC IMMVAR -#line 361 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 120: // exp: INC IMMVAR +#line 406 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[0].value.tptr)); } -#line 1276 "apr_parser.cc" +#line 1476 "apr_parser.cc" break; - case 89: // exp: DEC IMMVAR -#line 362 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 121: // exp: DEC IMMVAR +#line 407 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[0].value.tptr)); } -#line 1282 "apr_parser.cc" +#line 1482 "apr_parser.cc" break; - case 90: // exp: IMMVAR INC -#line 363 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 122: // exp: IMMVAR INC +#line 408 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[1].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[1].value.tptr)); } -#line 1288 "apr_parser.cc" +#line 1488 "apr_parser.cc" break; - case 91: // exp: IMMVAR DEC -#line 364 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 123: // exp: IMMVAR DEC +#line 409 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[1].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[1].value.tptr)); } -#line 1294 "apr_parser.cc" +#line 1494 "apr_parser.cc" break; - case 92: // exp: IMMVAR EQUAL exp -#line 365 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 124: // exp: IMMVAR EQUAL exp +#line 410 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1300 "apr_parser.cc" +#line 1500 "apr_parser.cc" break; - case 93: // exp: IMMSVAR EQUAL exp -#line 366 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 125: // exp: IMMSVAR EQUAL exp +#line 411 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { immutable_modify(aprepro, (yystack_[2].value.tptr)); YYERROR; } -#line 1306 "apr_parser.cc" +#line 1506 "apr_parser.cc" break; - case 94: // exp: IMMVAR EQ_PLUS exp -#line 367 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 126: // exp: IMMVAR EQ_PLUS exp +#line 412 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1312 "apr_parser.cc" +#line 1512 "apr_parser.cc" break; - case 95: // exp: IMMVAR EQ_MINUS exp -#line 368 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 127: // exp: IMMVAR EQ_MINUS exp +#line 413 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1318 "apr_parser.cc" +#line 1518 "apr_parser.cc" break; - case 96: // exp: IMMVAR EQ_TIME exp -#line 369 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 128: // exp: IMMVAR EQ_TIME exp +#line 414 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1324 "apr_parser.cc" +#line 1524 "apr_parser.cc" break; - case 97: // exp: IMMVAR EQ_DIV exp -#line 370 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 129: // exp: IMMVAR EQ_DIV exp +#line 415 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1330 "apr_parser.cc" +#line 1530 "apr_parser.cc" break; - case 98: // exp: IMMVAR EQ_POW exp -#line 371 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 130: // exp: IMMVAR EQ_POW exp +#line 416 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); } -#line 1336 "apr_parser.cc" +#line 1536 "apr_parser.cc" break; - case 99: // exp: UNDVAR -#line 373 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 131: // exp: UNDVAR +#line 418 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; undefined_error(aprepro, (yystack_[0].value.tptr)->name); } -#line 1343 "apr_parser.cc" +#line 1543 "apr_parser.cc" break; - case 100: // exp: INC UNDVAR -#line 375 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 132: // exp: INC UNDVAR +#line 420 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ++((yystack_[0].value.tptr)->value.var); set_type(aprepro, (yystack_[0].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[0].value.tptr)->name); } -#line 1351 "apr_parser.cc" +#line 1551 "apr_parser.cc" break; - case 101: // exp: DEC UNDVAR -#line 378 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 133: // exp: DEC UNDVAR +#line 423 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = --((yystack_[0].value.tptr)->value.var); set_type(aprepro, (yystack_[0].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[0].value.tptr)->name); } -#line 1359 "apr_parser.cc" +#line 1559 "apr_parser.cc" break; - case 102: // exp: UNDVAR INC -#line 381 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 134: // exp: UNDVAR INC +#line 426 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)++; set_type(aprepro, (yystack_[1].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[1].value.tptr)->name); } -#line 1367 "apr_parser.cc" +#line 1567 "apr_parser.cc" break; - case 103: // exp: UNDVAR DEC -#line 384 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 135: // exp: UNDVAR DEC +#line 429 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)--; set_type(aprepro, (yystack_[1].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[1].value.tptr)->name); } -#line 1375 "apr_parser.cc" +#line 1575 "apr_parser.cc" break; - case 104: // exp: UNDVAR EQUAL exp -#line 387 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 136: // exp: UNDVAR EQUAL exp +#line 432 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); } -#line 1382 "apr_parser.cc" +#line 1582 "apr_parser.cc" break; - case 105: // exp: UNDVAR EQ_PLUS exp -#line 389 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 137: // exp: UNDVAR EQ_PLUS exp +#line 434 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var += (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); } -#line 1390 "apr_parser.cc" +#line 1590 "apr_parser.cc" break; - case 106: // exp: UNDVAR EQ_MINUS exp -#line 392 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 138: // exp: UNDVAR EQ_MINUS exp +#line 437 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var -= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); } -#line 1398 "apr_parser.cc" +#line 1598 "apr_parser.cc" break; - case 107: // exp: UNDVAR EQ_TIME exp -#line 395 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 139: // exp: UNDVAR EQ_TIME exp +#line 440 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var *= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); } -#line 1406 "apr_parser.cc" +#line 1606 "apr_parser.cc" break; - case 108: // exp: UNDVAR EQ_DIV exp -#line 398 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 140: // exp: UNDVAR EQ_DIV exp +#line 443 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yystack_[2].value.tptr)->value.var /= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); } -#line 1414 "apr_parser.cc" +#line 1614 "apr_parser.cc" break; - case 109: // exp: UNDVAR EQ_POW exp -#line 401 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 141: // exp: UNDVAR EQ_POW exp +#line 446 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { reset_error(); (yystack_[2].value.tptr)->value.var = @@ -1570,234 +1860,234 @@ namespace SEAMS { SEAMS::math_error(aprepro, "Power"); undefined_error(aprepro, (yystack_[2].value.tptr)->name); } -#line 1425 "apr_parser.cc" +#line 1625 "apr_parser.cc" break; - case 110: // exp: FNCT LPAR RPAR -#line 408 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 142: // exp: FNCT LPAR RPAR +#line 453 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[2].value.tptr), - (yystack_[2].value.tptr)->value.fnctptr == nullptr)) + (yystack_[2].value.tptr)->value.fnctptr == NULL)) (yylhs.value.val) = (*((yystack_[2].value.tptr)->value.fnctptr))(); else (yylhs.value.val) = 0.0; } -#line 1436 "apr_parser.cc" +#line 1636 "apr_parser.cc" break; - case 111: // exp: FNCT LPAR exp RPAR -#line 415 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 143: // exp: FNCT LPAR exp RPAR +#line 460 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.fnctptr_d == nullptr)) + (yystack_[3].value.tptr)->value.fnctptr_d == NULL)) (yylhs.value.val) = (*((yystack_[3].value.tptr)->value.fnctptr_d))((yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1447 "apr_parser.cc" +#line 1647 "apr_parser.cc" break; - case 112: // exp: FNCT LPAR sexp RPAR -#line 422 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 144: // exp: FNCT LPAR sexp RPAR +#line 467 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.fnctptr_c == nullptr)) + (yystack_[3].value.tptr)->value.fnctptr_c == NULL)) (yylhs.value.val) = (*((yystack_[3].value.tptr)->value.fnctptr_c))((yystack_[1].value.string)); else (yylhs.value.val) = 0.0; } -#line 1458 "apr_parser.cc" +#line 1658 "apr_parser.cc" break; - case 113: // exp: FNCT LPAR aexp RPAR -#line 429 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 145: // exp: FNCT LPAR aexp RPAR +#line 474 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[3].value.tptr), - (yystack_[3].value.tptr)->value.fnctptr_a == nullptr)) + (yystack_[3].value.tptr)->value.fnctptr_a == NULL)) (yylhs.value.val) = (*((yystack_[3].value.tptr)->value.fnctptr_a))((yystack_[1].value.arrval)); else (yylhs.value.val) = 0.0; } -#line 1469 "apr_parser.cc" +#line 1669 "apr_parser.cc" break; - case 114: // exp: FNCT LPAR sexp COMMA exp RPAR -#line 436 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 146: // exp: FNCT LPAR sexp COMMA exp RPAR +#line 481 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.fnctptr_cd == nullptr)) + (yystack_[5].value.tptr)->value.fnctptr_cd == NULL)) (yylhs.value.val) = (*((yystack_[5].value.tptr)->value.fnctptr_cd))( (yystack_[3].value.string), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1480 "apr_parser.cc" +#line 1680 "apr_parser.cc" break; - case 115: // exp: FNCT LPAR exp COMMA sexp RPAR -#line 443 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 147: // exp: FNCT LPAR exp COMMA sexp RPAR +#line 488 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.fnctptr_dc == nullptr)) + (yystack_[5].value.tptr)->value.fnctptr_dc == NULL)) (yylhs.value.val) = (*((yystack_[5].value.tptr)->value.fnctptr_dc))( (yystack_[3].value.val), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; } -#line 1491 "apr_parser.cc" +#line 1691 "apr_parser.cc" break; - case 116: // exp: FNCT LPAR sexp COMMA sexp RPAR -#line 450 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 148: // exp: FNCT LPAR sexp COMMA sexp RPAR +#line 495 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.fnctptr_cc == nullptr)) + (yystack_[5].value.tptr)->value.fnctptr_cc == NULL)) (yylhs.value.val) = (*((yystack_[5].value.tptr)->value.fnctptr_cc))( (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; } -#line 1502 "apr_parser.cc" +#line 1702 "apr_parser.cc" break; - case 117: // exp: FNCT LPAR sexp COMMA sexp COMMA sexp RPAR -#line 457 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 149: // exp: FNCT LPAR sexp COMMA sexp COMMA sexp RPAR +#line 502 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.fnctptr_ccc == nullptr)) + (yystack_[7].value.tptr)->value.fnctptr_ccc == NULL)) (yylhs.value.val) = (*((yystack_[7].value.tptr)->value.fnctptr_ccc))( (yystack_[5].value.string), (yystack_[3].value.string), (yystack_[1].value.string)); else yyerrok; } -#line 1513 "apr_parser.cc" +#line 1713 "apr_parser.cc" break; - case 118: // exp: FNCT LPAR exp COMMA exp RPAR -#line 464 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 150: // exp: FNCT LPAR exp COMMA exp RPAR +#line 509 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[5].value.tptr), - (yystack_[5].value.tptr)->value.fnctptr_dd == nullptr)) + (yystack_[5].value.tptr)->value.fnctptr_dd == NULL)) (yylhs.value.val) = (*((yystack_[5].value.tptr)->value.fnctptr_dd))( (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1524 "apr_parser.cc" +#line 1724 "apr_parser.cc" break; - case 119: // exp: FNCT LPAR exp COMMA exp COMMA exp RPAR -#line 470 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 151: // exp: FNCT LPAR exp COMMA exp COMMA exp RPAR +#line 515 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.fnctptr_ddd == nullptr)) + (yystack_[7].value.tptr)->value.fnctptr_ddd == NULL)) (yylhs.value.val) = (*((yystack_[7].value.tptr)->value.fnctptr_ddd))( (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1535 "apr_parser.cc" +#line 1735 "apr_parser.cc" break; - case 120: // exp: FNCT LPAR sexp COMMA sexp COMMA exp RPAR -#line 476 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 152: // exp: FNCT LPAR sexp COMMA sexp COMMA exp RPAR +#line 521 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[7].value.tptr), - (yystack_[7].value.tptr)->value.fnctptr_ccd == nullptr)) + (yystack_[7].value.tptr)->value.fnctptr_ccd == NULL)) (yylhs.value.val) = (*((yystack_[7].value.tptr)->value.fnctptr_ccd))( (yystack_[5].value.string), (yystack_[3].value.string), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1546 "apr_parser.cc" +#line 1746 "apr_parser.cc" break; - case 121: // exp: FNCT LPAR exp COMMA exp SEMI exp COMMA exp RPAR -#line 482 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 153: // exp: FNCT LPAR exp COMMA exp SEMI exp COMMA exp RPAR +#line 527 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[9].value.tptr), - (yystack_[9].value.tptr)->value.fnctptr_dddd == nullptr)) + (yystack_[9].value.tptr)->value.fnctptr_dddd == NULL)) (yylhs.value.val) = (*((yystack_[9].value.tptr)->value.fnctptr_dddd))( (yystack_[7].value.val), (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1557 "apr_parser.cc" +#line 1757 "apr_parser.cc" break; - case 122: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp RPAR -#line 488 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 154: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp RPAR +#line 533 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[9].value.tptr), - (yystack_[9].value.tptr)->value.fnctptr_dddd == nullptr)) + (yystack_[9].value.tptr)->value.fnctptr_dddd == NULL)) (yylhs.value.val) = (*((yystack_[9].value.tptr)->value.fnctptr_dddd))( (yystack_[7].value.val), (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1568 "apr_parser.cc" +#line 1768 "apr_parser.cc" break; - case 123: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA sexp RPAR -#line 494 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 155: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA sexp RPAR +#line 539 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[11].value.tptr), - (yystack_[11].value.tptr)->value.fnctptr_ddddc == nullptr)) + (yystack_[11].value.tptr)->value.fnctptr_ddddc == NULL)) (yylhs.value.val) = (*((yystack_[11].value.tptr)->value.fnctptr_ddddc))( (yystack_[9].value.val), (yystack_[7].value.val), (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; } -#line 1579 "apr_parser.cc" +#line 1779 "apr_parser.cc" break; - case 124: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA exp COMMA exp RPAR -#line 500 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 156: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA exp COMMA exp RPAR +#line 545 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (arg_check((yystack_[13].value.tptr), - (yystack_[13].value.tptr)->value.fnctptr_dddddd == nullptr)) + (yystack_[13].value.tptr)->value.fnctptr_dddddd == NULL)) (yylhs.value.val) = (*((yystack_[13].value.tptr)->value.fnctptr_dddddd))( (yystack_[11].value.val), (yystack_[9].value.val), (yystack_[7].value.val), (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; } -#line 1590 "apr_parser.cc" +#line 1790 "apr_parser.cc" break; - case 125: // exp: exp PLU exp -#line 506 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 157: // exp: exp PLU exp +#line 551 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) + (yystack_[0].value.val); } -#line 1596 "apr_parser.cc" +#line 1796 "apr_parser.cc" break; - case 126: // exp: exp SUB exp -#line 507 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 158: // exp: exp SUB exp +#line 552 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) - (yystack_[0].value.val); } -#line 1602 "apr_parser.cc" +#line 1802 "apr_parser.cc" break; - case 127: // exp: exp TIM exp -#line 508 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 159: // exp: exp TIM exp +#line 553 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) * (yystack_[0].value.val); } -#line 1608 "apr_parser.cc" +#line 1808 "apr_parser.cc" break; - case 128: // exp: exp DIV exp -#line 509 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 160: // exp: exp DIV exp +#line 554 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if ((yystack_[0].value.val) == 0.) { yyerror(aprepro, "Zero divisor"); @@ -1806,11 +2096,11 @@ namespace SEAMS { else (yylhs.value.val) = (yystack_[2].value.val) / (yystack_[0].value.val); } -#line 1620 "apr_parser.cc" +#line 1820 "apr_parser.cc" break; - case 129: // exp: exp MOD exp -#line 516 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 161: // exp: exp MOD exp +#line 561 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if ((yystack_[0].value.val) == 0.) { yyerror(aprepro, "Zero divisor"); @@ -1819,45 +2109,45 @@ namespace SEAMS { else (yylhs.value.val) = (int)(yystack_[2].value.val) % (int)(yystack_[0].value.val); } -#line 1632 "apr_parser.cc" +#line 1832 "apr_parser.cc" break; - case 130: // exp: SUB exp -#line 523 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 162: // exp: SUB exp +#line 568 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = -(yystack_[0].value.val); } -#line 1638 "apr_parser.cc" +#line 1838 "apr_parser.cc" break; - case 131: // exp: PLU exp -#line 524 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 163: // exp: PLU exp +#line 569 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); } -#line 1644 "apr_parser.cc" +#line 1844 "apr_parser.cc" break; - case 132: // exp: exp POW exp -#line 525 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 164: // exp: exp POW exp +#line 570 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { reset_error(); (yylhs.value.val) = std::pow((yystack_[2].value.val), (yystack_[0].value.val)); SEAMS::math_error(aprepro, "Power"); } -#line 1652 "apr_parser.cc" +#line 1852 "apr_parser.cc" break; - case 133: // exp: LPAR exp RPAR -#line 528 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 165: // exp: LPAR exp RPAR +#line 573 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[1].value.val); } -#line 1658 "apr_parser.cc" +#line 1858 "apr_parser.cc" break; - case 134: // exp: LBRACK exp RBRACK -#line 529 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 166: // exp: LBRACK exp RBRACK +#line 574 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { reset_error(); (yylhs.value.val) = @@ -1865,46 +2155,46 @@ namespace SEAMS { : floor((yystack_[1].value.val))); SEAMS::math_error(aprepro, "floor (int)"); } -#line 1666 "apr_parser.cc" +#line 1866 "apr_parser.cc" break; - case 135: // exp: bool -#line 532 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 167: // exp: bool +#line 577 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[0].value.val)) ? 1 : 0; } -#line 1672 "apr_parser.cc" +#line 1872 "apr_parser.cc" break; - case 136: // exp: bool QUEST exp COLON exp -#line 533 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 168: // exp: bool QUEST exp COLON exp +#line 578 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = ((yystack_[4].value.val)) ? ((yystack_[2].value.val)) : ((yystack_[0].value.val)); } -#line 1678 "apr_parser.cc" +#line 1878 "apr_parser.cc" break; - case 137: // exp: AVAR LBRACK exp RBRACK -#line 534 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 169: // exp: AVAR LBRACK exp RBRACK +#line 579 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = array_value((yystack_[3].value.tptr)->value.avar, (yystack_[1].value.val), 0); } -#line 1684 "apr_parser.cc" +#line 1884 "apr_parser.cc" break; - case 138: // exp: AVAR LBRACK exp COMMA exp RBRACK -#line 535 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 170: // exp: AVAR LBRACK exp COMMA exp RBRACK +#line 580 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = array_value((yystack_[5].value.tptr)->value.avar, (yystack_[3].value.val), (yystack_[1].value.val)); } -#line 1690 "apr_parser.cc" +#line 1890 "apr_parser.cc" break; - case 139: // exp: AVAR LBRACK exp RBRACK EQUAL exp -#line 537 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 171: // exp: AVAR LBRACK exp RBRACK EQUAL exp +#line 582 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); array *arr = (yystack_[5].value.tptr)->value.avar; @@ -1927,11 +2217,11 @@ namespace SEAMS { yyerrok; } } -#line 1716 "apr_parser.cc" +#line 1916 "apr_parser.cc" break; - case 140: // exp: AVAR LBRACK exp COMMA exp RBRACK EQUAL exp -#line 559 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 172: // exp: AVAR LBRACK exp COMMA exp RBRACK EQUAL exp +#line 604 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[0].value.val); array *arr = (yystack_[7].value.tptr)->value.avar; @@ -1952,10 +2242,10 @@ namespace SEAMS { yyerrok; } } -#line 1740 "apr_parser.cc" +#line 1940 "apr_parser.cc" break; -#line 1744 "apr_parser.cc" +#line 1944 "apr_parser.cc" default: break; } @@ -2252,164 +2542,221 @@ namespace SEAMS { return yyres; } - const signed char Parser::yypact_ninf_ = -37; + const signed char Parser::yypact_ninf_ = -25; const signed char Parser::yytable_ninf_ = -1; const short Parser::yypact_[] = { - -37, 2, -37, -7, 281, -37, -37, -37, -37, -37, 233, 284, 0, 311, 11, - -5, 19, 27, 35, 399, 399, -37, 399, 384, 399, 116, 163, 175, 178, 41, - 1151, 384, 399, 399, 399, 399, 399, -37, -37, 384, 399, 399, 399, 399, 399, - -37, -37, 384, 399, 399, 399, 399, 399, 399, -37, -37, 399, 399, 384, 225, - 339, 384, 482, 625, 36, 73, 399, 101, 1199, 889, 1103, 14, -37, 14, 14, - -37, -37, -37, -37, -37, -37, -37, -37, 399, 399, 399, -37, 384, 384, 399, - 384, -37, 399, 399, 399, 399, 399, 399, 399, -37, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 384, 399, 399, 29, 1199, 1218, 1234, 1234, 1234, - 1234, 1234, 29, 1199, 1218, 1234, 1234, 1234, 1234, 1234, 29, 1199, 1218, 1199, 1234, - 1234, 1234, 1234, 1234, 1234, 1199, 1234, 624, 29, 1199, 1218, -37, -15, 78, 654, - -37, 25, 418, 684, 100, 425, 714, 399, 399, 399, 399, 14, -37, -37, 399, - -37, 1165, 1185, 51, 1265, -37, 1279, -36, 1218, -36, 1250, -37, 1250, 12, 1234, - 12, 12, 12, 12, 12, -37, 51, 1265, -37, 1279, -31, -31, -31, -31, -31, - -31, 155, 155, 14, -37, 14, 14, 14, 399, 69, -37, 399, -37, 399, -37, - -37, 399, -37, 399, -37, -37, 399, -37, 399, -37, 1234, 1234, 1234, 1234, 14, - 399, 399, 1128, 399, 449, 916, 141, 595, 455, 485, 943, 515, 970, 744, 1199, - 1234, 96, 1234, 399, -37, -37, -37, 399, -37, 399, 399, -37, 399, -37, -37, - -37, 399, -37, 399, 537, 997, 774, 833, 543, 479, 1024, 1234, -37, -37, 399, - -37, 399, -37, 399, -37, -37, 804, 1051, 509, 399, -37, -37, 399, 565, 862, - 571, -37, 399, -37, 1078, -37}; + -25, 22, -25, -18, 209, -25, -25, -25, -25, -25, 1629, 163, -8, 211, -5, + 154, 6, 51, 58, 471, 471, -25, 471, 426, 471, -2, 379, 71, 80, 1560, + 1665, 426, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, + -25, -25, 426, 471, 471, 471, 471, 471, -25, -25, 426, 471, 471, 471, 471, + 471, 471, -25, -25, 471, 471, 426, 354, 411, 426, 1647, 326, 20, 181, 471, + 120, 343, 1348, 1580, 14, -25, 14, 14, -25, -25, -25, -25, -25, -25, -25, + -25, 471, 486, 531, -25, 426, 426, 471, 426, -25, 546, 591, 606, 651, 666, + 711, 471, -25, 726, 771, 786, 831, 846, 891, 906, 951, 471, 471, 471, 426, + 471, 471, 44, 343, 1698, 1714, 1714, 1714, 1714, 1714, 55, 1745, -25, 1759, 50, + 367, 50, 367, 50, 367, 50, 367, 50, 367, 50, 367, 44, 343, 1698, 1714, + 1714, 1714, 1714, 1714, 44, 343, 1698, 343, 1714, 1714, 1714, 1714, 1714, 1714, 343, + 1714, 1083, 44, 343, 1698, -25, 87, 254, 1113, -25, 167, 264, 1143, 279, 292, + 1173, 471, 471, 471, 471, 14, -25, -25, 471, -25, -24, 1682, 1647, 55, 1745, + 1647, -25, 1759, 9, 1698, 9, 1730, -25, 1730, 1647, 50, 1714, 1647, 50, 1647, + 50, 1647, 50, 1647, 50, 1647, 50, -25, 1647, 55, 1745, 1647, -25, 1759, 1647, + 367, 1647, 367, 1647, 367, 1647, 367, 1647, 367, 1647, 367, 27, 27, 14, -25, + 14, 14, 14, 471, 101, -25, 471, -25, 471, -25, -25, 471, -25, 471, -25, + -25, 471, -25, 471, -25, 1714, 1714, 1714, 1714, 14, 471, 471, 1605, 471, 967, + 1375, 42, 1054, 977, 937, 1402, 108, 1429, 1203, 343, 1714, 117, 1714, 471, -25, + -25, -25, 471, -25, 471, 471, -25, 471, -25, -25, -25, 471, -25, 471, 133, + 1456, 1233, 1292, 298, 1002, 1483, 1714, -25, -25, 471, -25, 471, -25, 471, -25, + -25, 1263, 1510, 994, 471, -25, -25, 471, 1024, 1321, 1030, -25, 471, -25, 1537, + -25}; const unsigned char Parser::yydefact_[] = { - 2, 0, 1, 0, 0, 4, 3, 9, 71, 51, 99, 74, 52, 75, 53, 32, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, - 103, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 0, 0, 90, 91, 0, - 0, 0, 0, 0, 0, 99, 74, 52, 0, 0, 135, 0, 0, 0, 131, 45, 130, 12, 72, - 100, 76, 88, 73, 101, 77, 89, 0, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43, 54, 104, 105, 106, 107, 108, 109, 41, 56, 80, 83, 84, 85, 86, 87, 40, 55, 81, - 59, 92, 94, 95, 96, 97, 98, 58, 93, 0, 42, 57, 82, 110, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 25, 133, 0, 134, 0, 0, 19, 21, 20, - 22, 44, 0, 46, 48, 50, 47, 26, 0, 27, 28, 29, 30, 31, 64, 23, 17, 24, 18, - 10, 11, 13, 14, 15, 16, 125, 126, 128, 49, 127, 129, 132, 0, 137, 113, 0, 112, 0, - 111, 63, 0, 60, 0, 62, 39, 0, 33, 0, 38, 104, 80, 81, 82, 127, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 136, 138, 139, 0, 116, 114, 115, - 0, 118, 0, 0, 69, 0, 65, 35, 34, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, - 140, 117, 120, 0, 119, 0, 68, 0, 67, 36, 0, 0, 0, 0, 122, 121, 0, 0, 0, - 0, 123, 0, 66, 0, 124}; - - const signed char Parser::yypgoto_[] = {-37, -37, -37, -13, 104, 89, -4}; - - const unsigned char Parser::yydefgoto_[] = {0, 1, 6, 27, 28, 68, 179}; + 2, 0, 1, 0, 0, 4, 3, 9, 103, 83, 131, 106, 84, 107, 85, 64, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 110, 111, 0, 0, + 0, 0, 0, 0, 0, 122, 123, 0, 0, 0, 0, 0, 0, 131, 106, 84, 0, 0, 167, + 0, 0, 0, 163, 77, 162, 12, 104, 132, 108, 120, 105, 133, 109, 121, 0, 0, 0, 7, + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 75, 86, 136, 137, 138, 139, 140, 141, 32, 26, 33, + 27, 40, 52, 41, 53, 42, 54, 43, 55, 44, 56, 45, 57, 73, 88, 112, 115, 116, 117, + 118, 119, 72, 87, 113, 91, 124, 126, 127, 128, 129, 130, 90, 125, 0, 74, 89, 114, 142, + 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 25, 165, 0, 166, + 0, 0, 30, 19, 21, 31, 20, 22, 76, 0, 78, 80, 82, 79, 46, 34, 0, 47, 35, + 48, 36, 49, 37, 50, 38, 51, 39, 96, 28, 23, 17, 29, 24, 18, 58, 10, 59, 11, + 60, 13, 61, 14, 62, 15, 63, 16, 157, 158, 160, 81, 159, 161, 164, 0, 169, 145, 0, + 144, 0, 143, 95, 0, 92, 0, 94, 71, 0, 65, 0, 70, 136, 112, 113, 114, 159, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 168, 170, 171, 0, 148, + 146, 147, 0, 150, 0, 0, 101, 0, 97, 67, 66, 0, 69, 0, 0, 0, 0, 0, 0, + 0, 0, 172, 149, 152, 0, 151, 0, 100, 0, 99, 68, 0, 0, 0, 0, 154, 153, 0, + 0, 0, 0, 155, 0, 98, 0, 156}; + + const signed char Parser::yypgoto_[] = {-25, -25, -25, -12, 106, 91, -4}; + + const unsigned char Parser::yydefgoto_[] = {0, 1, 6, 27, 28, 76, 206}; const short Parser::yytable_[] = { - 30, 205, 2, 3, 89, 90, 67, 108, 109, 110, 164, 112, 57, 7, 113, 69, 70, 58, 71, - 73, 74, 4, 47, 87, 88, 89, 90, 116, 117, 118, 119, 120, 121, 56, 59, 124, 125, 126, - 127, 128, 129, 210, 60, 132, 134, 135, 136, 137, 138, 139, 61, 5, 141, 142, 145, 149, 153, - 156, 159, 113, 98, 91, 161, 87, 88, 89, 90, 87, 88, 89, 90, 168, 170, 92, 93, 94, - 95, 96, 97, 167, 169, 171, 85, 173, 173, 175, 177, 186, 188, 98, 57, 228, 206, 29, 207, - 160, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 200, 201, 202, 92, 93, 94, 95, - 96, 97, 215, 162, 258, 75, 115, 76, 77, 0, 78, 0, 98, 72, 123, 83, 0, 84, 85, - 0, 0, 114, 131, 133, 87, 88, 89, 90, 0, 122, 0, 140, 0, 144, 148, 152, 155, 130, - 0, 220, 221, 222, 223, 246, 0, 0, 224, 0, 143, 147, 151, 154, 79, 0, 80, 81, 0, - 82, 166, 92, 93, 94, 95, 96, 97, 0, 0, 178, 180, 181, 182, 183, 184, 185, 0, 98, - 0, 172, 174, 0, 176, 110, 164, 112, 86, 227, 113, 0, 230, 83, 232, 84, 85, 0, 0, - 235, 0, 0, 237, 0, 238, 199, 87, 88, 89, 90, 0, 0, 240, 0, 242, 0, 0, 0, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 260, 19, 146, 20, 261, 0, 262, 115, - 123, 131, 144, 0, 0, 265, 0, 266, 31, 32, 33, 34, 35, 36, 0, 0, 22, 23, 276, - 0, 277, 0, 24, 0, 25, 26, 0, 0, 284, 0, 0, 0, 37, 38, 0, 0, 289, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 229, 19, 231, 20, 0, 233, 21, 234, 0, - 0, 236, 39, 40, 41, 42, 43, 44, 0, 0, 239, 0, 0, 0, 0, 22, 23, 0, 0, - 0, 0, 24, 0, 25, 26, 0, 45, 46, 259, 48, 49, 50, 51, 52, 53, 263, 0, 264, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 150, 20, 54, 55, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 283, 0, 0, 285, 0, 0, 0, 0, 0, 22, 23, 0, - 0, 0, 0, 24, 0, 25, 26, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, - 19, 0, 20, 8, 9, 62, 63, 64, 13, 14, 65, 16, 17, 0, 0, 19, 0, 20, 0, - 0, 0, 0, 0, 22, 23, 0, 0, 0, 0, 24, 0, 25, 26, 211, 0, 212, 0, 0, - 22, 66, 216, 0, 217, 0, 24, 0, 25, 26, 0, 0, 0, 92, 93, 94, 95, 96, 97, - 0, 92, 93, 94, 95, 96, 97, 243, 0, 244, 98, 0, 0, 250, 0, 251, 0, 98, 0, - 0, 0, 0, 0, 0, 0, 92, 93, 94, 95, 96, 97, 92, 93, 94, 95, 96, 97, 273, - 0, 274, 0, 98, 0, 252, 0, 0, 0, 98, 157, 32, 33, 34, 35, 36, 0, 92, 93, - 94, 95, 96, 97, 92, 93, 94, 95, 96, 97, 282, 0, 0, 0, 98, 37, 38, 0, 254, - 0, 98, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 95, 96, 97, 92, 93, 94, 95, - 96, 97, 267, 0, 0, 0, 98, 0, 272, 0, 0, 0, 98, 0, 0, 0, 0, 0, 92, - 93, 94, 95, 96, 97, 92, 93, 94, 95, 96, 97, 286, 0, 0, 0, 98, 0, 288, 0, - 0, 0, 98, 0, 0, 0, 0, 0, 92, 93, 94, 95, 96, 97, 92, 93, 94, 95, 96, - 97, 247, 0, 248, 0, 98, 0, 0, 249, 0, 0, 98, 0, 0, 0, 0, 0, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 203, 0, 113, 0, 204, 0, 0, 0, - 0, 158, 40, 41, 42, 43, 44, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 164, 112, 0, 208, 113, 209, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 213, 113, 214, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 0, 218, 113, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 0, 256, 113, - 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 164, 112, 0, 269, 113, 270, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, - 0, 279, 113, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 271, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 164, 112, 287, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 163, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, - 112, 245, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 164, 112, 253, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 255, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 164, 112, 268, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 275, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 164, 112, 281, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 290, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, - 165, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 164, 112, 241, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 99, 0, 113, 0, 0, 0, 0, - 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 225, 0, 113, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 226, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 0, 0, 113, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 0, 0, 113, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 164, 112, 0, 0, 113, 100, 101, 102, 103, 104, 105, 106, 107, 0, 0, 0, 0, - 112, 0, 0, 113, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 0, 0, 113, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 164, 112, 0, 0, 113}; + 30, 83, 7, 84, 85, 265, 86, 75, 100, 101, 102, 103, 104, 105, 55, 77, 78, 64, + 79, 81, 82, 67, 2, 3, 106, 130, 132, 124, 125, 126, 127, 128, 129, 131, 133, 135, + 137, 139, 141, 143, 145, 4, 183, 148, 149, 150, 151, 152, 153, 97, 98, 156, 158, 159, + 160, 161, 162, 163, 286, 121, 165, 166, 169, 173, 177, 180, 68, 118, 188, 120, 185, 5, + 121, 69, 100, 101, 102, 103, 104, 105, 193, 196, 95, 96, 97, 98, 93, 191, 194, 197, + 106, 199, 199, 201, 203, 29, 219, 222, 106, 91, 94, 92, 93, 245, 220, 223, 225, 227, + 229, 231, 233, 235, 236, 237, 238, 240, 241, 242, 95, 96, 97, 98, 123, 268, 294, 95, + 96, 97, 98, 80, 134, 136, 138, 140, 142, 144, 186, 122, 147, 298, 100, 101, 102, 103, + 104, 105, 155, 157, 91, 307, 92, 93, 0, 146, 0, 164, 106, 168, 172, 176, 179, 154, + 0, 0, 0, 100, 101, 102, 103, 104, 105, 65, 167, 171, 175, 178, 66, 260, 261, 262, + 263, 106, 190, 250, 264, 47, 48, 49, 50, 51, 52, 205, 208, 210, 212, 214, 216, 217, + 65, 0, 0, 198, 200, 184, 202, 95, 96, 97, 98, 53, 54, 0, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 0, 19, 239, 20, 0, 0, 21, 0, 0, 0, 56, + 57, 58, 59, 60, 61, 267, 0, 0, 270, 0, 272, 0, 0, 22, 23, 275, 0, 0, + 277, 24, 278, 25, 26, 62, 63, 0, 0, 0, 280, 0, 282, 0, 0, 0, 246, 0, + 247, 0, 123, 147, 155, 168, 0, 0, 251, 300, 252, 0, 0, 301, 0, 302, 100, 101, + 102, 103, 104, 105, 305, 0, 306, 255, 100, 101, 102, 103, 104, 105, 106, 0, 0, 316, + 256, 317, 257, 0, 0, 0, 106, 0, 312, 324, 0, 95, 96, 97, 98, 0, 0, 329, + 100, 101, 102, 103, 104, 105, 100, 101, 102, 103, 104, 105, 0, 269, 0, 271, 106, 0, + 273, 0, 274, 0, 106, 276, 182, 48, 49, 50, 51, 52, 0, 0, 279, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 170, 20, 53, 54, 299, 100, 101, 102, + 103, 104, 105, 303, 87, 304, 88, 89, 0, 90, 0, 0, 0, 106, 22, 23, 0, 0, + 0, 0, 24, 0, 25, 26, 0, 0, 318, 116, 117, 118, 188, 120, 323, 0, 121, 325, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 174, 20, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, + 23, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 23, 0, 0, + 0, 0, 24, 0, 25, 26, 8, 9, 70, 71, 72, 13, 14, 73, 16, 17, 0, 0, + 19, 0, 20, 8, 9, 192, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, + 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, + 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 195, 71, 72, 13, + 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 204, 71, 72, 13, 14, 73, 16, + 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, + 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, + 8, 9, 207, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 209, + 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, + 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, + 0, 0, 24, 0, 25, 26, 8, 9, 211, 71, 72, 13, 14, 73, 16, 17, 0, 0, + 19, 0, 20, 8, 9, 213, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, + 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, + 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 215, 71, 72, 13, + 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 218, 71, 72, 13, 14, 73, 16, + 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, + 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, + 8, 9, 221, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 224, + 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, + 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, + 0, 0, 24, 0, 25, 26, 8, 9, 226, 71, 72, 13, 14, 73, 16, 17, 0, 0, + 19, 0, 20, 8, 9, 228, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, + 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, + 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 230, 71, 72, 13, + 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 232, 71, 72, 13, 14, 73, 16, + 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, + 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 292, 25, 26, + 8, 9, 234, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 100, 101, 102, + 103, 104, 105, 0, 0, 0, 0, 0, 0, 283, 0, 284, 0, 106, 0, 0, 0, 22, + 74, 290, 0, 291, 0, 24, 0, 25, 26, 100, 101, 102, 103, 104, 105, 0, 0, 0, + 322, 100, 101, 102, 103, 104, 105, 106, 313, 0, 314, 0, 0, 0, 0, 0, 0, 106, + 100, 101, 102, 103, 104, 105, 0, 0, 100, 101, 102, 103, 104, 105, 326, 0, 106, 0, + 0, 0, 328, 0, 0, 0, 106, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, + 100, 101, 102, 103, 104, 105, 287, 0, 288, 0, 106, 0, 0, 289, 0, 0, 106, 0, + 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 243, + 0, 121, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 248, 121, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 0, 253, 121, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 258, + 121, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 296, 121, 297, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 188, 120, 0, 309, 121, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 319, + 121, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 311, 0, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 188, 120, 327, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 187, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 285, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 293, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 295, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 308, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 315, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 321, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 330, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 99, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 188, 120, 281, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 31, 32, 33, 34, 35, + 36, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 181, 32, 33, 34, 35, + 36, 45, 46, 37, 38, 39, 40, 41, 42, 43, 44, 107, 0, 0, 0, 0, 0, 0, + 0, 45, 46, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, + 121, 266, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 121, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 108, 109, 110, 111, + 112, 113, 114, 115, 0, 0, 0, 0, 120, 0, 0, 121, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 188, 120, 0, 0, 121, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 188, 120, 0, 0, 121}; const short Parser::yycheck_[] = { - 4, 16, 0, 1, 40, 41, 19, 38, 39, 40, 41, 42, 17, 20, 45, 19, 20, 22, 22, - 23, 24, 19, 22, 38, 39, 40, 41, 31, 32, 33, 34, 35, 36, 22, 15, 39, 40, 41, - 42, 43, 44, 16, 15, 47, 48, 49, 50, 51, 52, 53, 15, 49, 56, 57, 58, 59, 60, - 61, 22, 45, 48, 20, 66, 38, 39, 40, 41, 38, 39, 40, 41, 84, 85, 32, 33, 34, - 35, 36, 37, 83, 84, 85, 31, 87, 88, 89, 90, 100, 101, 48, 17, 22, 14, 4, 16, - 22, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 32, 33, 34, 35, - 36, 37, 16, 16, 22, 3, 31, 5, 6, -1, 8, -1, 48, 23, 39, 28, -1, 30, 31, - -1, -1, 31, 47, 48, 38, 39, 40, 41, -1, 39, -1, 56, -1, 58, 59, 60, 61, 47, - -1, 157, 158, 159, 160, 16, -1, -1, 164, -1, 58, 59, 60, 61, 3, -1, 5, 6, -1, - 8, 83, 32, 33, 34, 35, 36, 37, -1, -1, 92, 93, 94, 95, 96, 97, 98, -1, 48, - -1, 87, 88, -1, 90, 40, 41, 42, 20, 203, 45, -1, 206, 28, 208, 30, 31, -1, -1, - 213, -1, -1, 216, -1, 218, 111, 38, 39, 40, 41, -1, -1, 226, -1, 228, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 243, 15, 16, 17, 247, -1, 249, 157, - 158, 159, 160, -1, -1, 256, -1, 258, 22, 23, 24, 25, 26, 27, -1, -1, 38, 39, 269, - -1, 271, -1, 44, -1, 46, 47, -1, -1, 279, -1, -1, -1, 46, 47, -1, -1, 287, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 206, 15, 208, 17, -1, 211, 20, 213, -1, - -1, 216, 22, 23, 24, 25, 26, 27, -1, -1, 225, -1, -1, -1, -1, 38, 39, -1, -1, - -1, -1, 44, -1, 46, 47, -1, 46, 47, 243, 22, 23, 24, 25, 26, 27, 250, -1, 252, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 46, 47, -1, -1, - -1, 273, -1, -1, -1, -1, -1, 279, -1, -1, 282, -1, -1, -1, -1, -1, 38, 39, -1, - -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, - 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, - -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 14, -1, 16, -1, -1, - 38, 39, 14, -1, 16, -1, 44, -1, 46, 47, -1, -1, -1, 32, 33, 34, 35, 36, 37, - -1, 32, 33, 34, 35, 36, 37, 14, -1, 16, 48, -1, -1, 14, -1, 16, -1, 48, -1, - -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 14, - -1, 16, -1, 48, -1, 14, -1, -1, -1, 48, 22, 23, 24, 25, 26, 27, -1, 32, 33, - 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 14, -1, -1, -1, 48, 46, 47, -1, 16, - -1, 48, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, - 36, 37, 16, -1, -1, -1, 48, -1, 16, -1, -1, -1, 48, -1, -1, -1, -1, -1, 32, - 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 16, -1, -1, -1, 48, -1, 16, -1, - -1, -1, 48, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, - 37, 14, -1, 16, -1, 48, -1, -1, 21, -1, -1, 48, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 14, -1, 45, -1, 18, -1, -1, -1, - -1, 22, 23, 24, 25, 26, 27, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, -1, 14, 45, 16, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, 16, -1, -1, + 4, 3, 20, 5, 6, 29, 8, 19, 32, 33, 34, 35, 36, 37, 22, 19, 20, 22, 22, + 23, 24, 15, 0, 1, 48, 37, 38, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 19, 22, 47, 48, 49, 50, 51, 52, 40, 41, 55, 56, 57, 58, 59, 60, + 61, 16, 45, 64, 65, 66, 67, 68, 69, 15, 40, 41, 42, 74, 49, 45, 15, 32, 33, + 34, 35, 36, 37, 92, 93, 38, 39, 40, 41, 31, 91, 92, 93, 48, 95, 96, 97, 98, + 4, 108, 109, 48, 28, 20, 30, 31, 16, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 38, 39, 40, 41, 31, 22, 16, 38, 39, 40, 41, 23, 39, 40, 41, + 42, 43, 44, 16, 31, 47, 22, 32, 33, 34, 35, 36, 37, 55, 56, 28, 16, 30, 31, + -1, 47, -1, 64, 48, 66, 67, 68, 69, 55, -1, -1, -1, 32, 33, 34, 35, 36, 37, + 17, 66, 67, 68, 69, 22, 181, 182, 183, 184, 48, 91, 16, 188, 22, 23, 24, 25, 26, + 27, 100, 101, 102, 103, 104, 105, 106, 17, -1, -1, 95, 96, 22, 98, 38, 39, 40, 41, + 46, 47, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 119, 17, -1, + -1, 20, -1, -1, -1, 22, 23, 24, 25, 26, 27, 243, -1, -1, 246, -1, 248, -1, -1, + 38, 39, 253, -1, -1, 256, 44, 258, 46, 47, 46, 47, -1, -1, -1, 266, -1, 268, -1, + -1, -1, 14, -1, 16, -1, 181, 182, 183, 184, -1, -1, 14, 283, 16, -1, -1, 287, -1, + 289, 32, 33, 34, 35, 36, 37, 296, -1, 298, 16, 32, 33, 34, 35, 36, 37, 48, -1, + -1, 309, 14, 311, 16, -1, -1, -1, 48, -1, 16, 319, -1, 38, 39, 40, 41, -1, -1, + 327, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, -1, 246, -1, 248, 48, -1, + 251, -1, 253, -1, 48, 256, 22, 23, 24, 25, 26, 27, -1, -1, 265, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 46, 47, 283, 32, 33, 34, 35, 36, + 37, 290, 3, 292, 5, 6, -1, 8, -1, -1, -1, 48, 38, 39, -1, -1, -1, -1, 44, + -1, 46, 47, -1, -1, 313, 38, 39, 40, 41, 42, 319, -1, 45, 322, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, + -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, + -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, + 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, + 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, + -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, + -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, + -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, + -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, + -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, + -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, + -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, + 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, + -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, + 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, + -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, + 44, 14, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, 14, -1, 16, -1, 48, -1, -1, + -1, 38, 39, 14, -1, 16, -1, 44, -1, 46, 47, 32, 33, 34, 35, 36, 37, -1, -1, + -1, 14, 32, 33, 34, 35, 36, 37, 48, 14, -1, 16, -1, -1, -1, -1, -1, -1, 48, + 32, 33, 34, 35, 36, 37, -1, -1, 32, 33, 34, 35, 36, 37, 16, -1, 48, -1, -1, + -1, 16, -1, -1, -1, 48, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, + 34, 35, 36, 37, 14, -1, 16, -1, 48, -1, -1, 21, -1, -1, 48, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 14, -1, 45, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, @@ -2417,9 +2764,15 @@ namespace SEAMS { 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 14, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 14, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, 14, 45, 16, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, -1, 14, 45, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 14, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 14, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, @@ -2429,51 +2782,53 @@ namespace SEAMS { 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 20, -1, 45, -1, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 29, -1, 45, - 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 32, 33, 34, 35, - 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, - 42, -1, -1, 45, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45}; + 40, 41, 42, 20, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, + 36, 37, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 22, 23, + 24, 25, 26, 27, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, 22, 23, 24, + 25, 26, 27, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 20, -1, -1, -1, -1, -1, + -1, -1, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, + 45, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, 42, -1, -1, 45, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, -1, -1, 45, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45}; const signed char Parser::yystos_[] = { 0, 51, 0, 1, 19, 49, 52, 20, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 20, 38, - 39, 44, 46, 47, 53, 54, 55, 56, 22, 23, 24, 25, 26, 27, 46, 47, 22, 23, 24, 25, 26, 27, 46, - 47, 22, 22, 23, 24, 25, 26, 27, 46, 47, 22, 17, 22, 15, 15, 15, 5, 6, 7, 10, 39, 53, 55, - 56, 56, 56, 54, 56, 56, 3, 5, 6, 8, 3, 5, 6, 8, 28, 30, 31, 20, 38, 39, 40, 41, 20, - 32, 33, 34, 35, 36, 37, 48, 20, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 54, - 55, 56, 56, 56, 56, 56, 56, 54, 55, 56, 56, 56, 56, 56, 56, 54, 55, 56, 55, 56, 56, 56, 56, - 56, 56, 55, 56, 56, 54, 55, 56, 16, 54, 55, 56, 16, 54, 55, 56, 54, 55, 56, 22, 22, 22, 22, - 56, 16, 16, 41, 18, 55, 56, 53, 56, 53, 56, 54, 56, 54, 56, 54, 56, 55, 56, 55, 55, 55, 55, - 55, 55, 53, 56, 53, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 54, 56, 56, 56, 14, 18, 16, 14, - 16, 14, 16, 16, 14, 16, 14, 16, 16, 14, 16, 14, 16, 56, 56, 56, 56, 56, 29, 29, 56, 22, 55, - 56, 55, 56, 55, 55, 56, 55, 56, 56, 55, 56, 18, 56, 14, 16, 16, 16, 14, 16, 21, 14, 16, 14, - 16, 16, 16, 14, 16, 22, 55, 56, 56, 56, 55, 55, 56, 56, 16, 16, 14, 16, 14, 16, 14, 16, 16, - 56, 56, 55, 14, 16, 16, 14, 55, 56, 55, 16, 14, 16, 56, 16}; + 39, 44, 46, 47, 53, 54, 55, 56, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 46, + 47, 22, 23, 24, 25, 26, 27, 46, 47, 22, 22, 23, 24, 25, 26, 27, 46, 47, 22, 17, 22, 15, 15, + 15, 5, 6, 7, 10, 39, 53, 55, 56, 56, 56, 54, 56, 56, 3, 5, 6, 8, 3, 5, 6, 8, 28, + 30, 31, 20, 38, 39, 40, 41, 20, 32, 33, 34, 35, 36, 37, 48, 20, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 45, 54, 55, 56, 56, 56, 56, 56, 56, 53, 56, 53, 56, 55, 56, 55, 56, + 55, 56, 55, 56, 55, 56, 55, 56, 54, 55, 56, 56, 56, 56, 56, 56, 54, 55, 56, 55, 56, 56, 56, + 56, 56, 56, 55, 56, 56, 54, 55, 56, 16, 54, 55, 56, 16, 54, 55, 56, 54, 55, 56, 22, 22, 22, + 22, 56, 16, 16, 41, 18, 55, 56, 5, 53, 56, 5, 53, 56, 54, 56, 54, 56, 54, 56, 5, 55, 56, + 5, 55, 5, 55, 5, 55, 5, 55, 5, 55, 55, 5, 53, 56, 5, 53, 56, 5, 56, 5, 56, 5, 56, + 5, 56, 5, 56, 5, 56, 56, 56, 56, 54, 56, 56, 56, 14, 18, 16, 14, 16, 14, 16, 16, 14, 16, + 14, 16, 16, 14, 16, 14, 16, 56, 56, 56, 56, 56, 29, 29, 56, 22, 55, 56, 55, 56, 55, 55, 56, + 55, 56, 56, 55, 56, 18, 56, 14, 16, 16, 16, 14, 16, 21, 14, 16, 14, 16, 16, 16, 14, 16, 22, + 55, 56, 56, 56, 55, 55, 56, 56, 16, 16, 14, 16, 14, 16, 14, 16, 16, 56, 56, 55, 14, 16, 16, + 14, 55, 56, 55, 16, 14, 16, 56, 16}; const signed char Parser::yyr1_[] = { - 0, 50, 51, 51, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}; + 0, 50, 51, 51, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}; const signed char Parser::yyr2_[] = { - 0, 2, 0, 2, 1, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 4, 6, 6, 8, 6, 4, 4, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, - 3, 3, 4, 3, 4, 4, 3, 6, 12, 8, 8, 6, 5, 1, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 6, 6, - 6, 8, 6, 8, 8, 10, 10, 12, 14, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 1, 5, 4, 6, 6, 8}; + 0, 2, 0, 2, 1, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 4, 6, 6, 8, 6, 4, 4, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 4, 3, 4, 4, 3, 6, 12, 8, 8, 6, 5, 1, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, + 4, 6, 6, 6, 8, 6, 8, 8, 10, 10, 12, 14, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 1, 5, 4, 6, 6, 8}; #if SEAMSDEBUG || 1 // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. @@ -2540,14 +2895,16 @@ namespace SEAMS { #if SEAMSDEBUG const short Parser::yyrline_[] = { - 0, 125, 125, 126, 129, 130, 137, 141, 142, 143, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 166, 167, 168, 169, 171, 172, 178, 184, - 190, 196, 202, 208, 214, 218, 222, 225, 227, 235, 237, 245, 246, 247, 248, 257, 258, 259, - 260, 262, 265, 269, 274, 275, 276, 282, 288, 294, 300, 301, 307, 313, 319, 325, 331, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 344, 347, 352, 353, 354, 355, 356, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 373, 375, 378, 381, 384, 387, 389, 392, 395, - 398, 401, 408, 415, 422, 429, 436, 443, 450, 457, 464, 470, 476, 482, 488, 494, 500, 506, - 507, 508, 509, 516, 523, 524, 525, 528, 529, 532, 533, 534, 535, 536, 558}; + 0, 127, 127, 128, 131, 132, 145, 149, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, + 183, 184, 185, 186, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 202, 203, + 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 216, 217, 223, 229, 235, 241, 247, 253, + 259, 263, 267, 270, 272, 280, 282, 290, 291, 292, 293, 302, 303, 304, 305, 307, 310, 314, + 319, 320, 321, 327, 333, 339, 345, 346, 352, 358, 364, 370, 376, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 389, 392, 397, 398, 399, 400, 401, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 418, 420, 423, 426, 429, 432, 434, 437, 440, 443, 446, 453, 460, + 467, 474, 481, 488, 495, 502, 509, 515, 521, 527, 533, 539, 545, 551, 552, 553, 554, 561, + 568, 569, 570, 573, 574, 577, 578, 579, 580, 581, 603}; void Parser::yy_stack_print_() const { @@ -2600,8 +2957,8 @@ namespace SEAMS { } } // namespace SEAMS -#line 2649 "apr_parser.cc" +#line 2966 "apr_parser.cc" -#line 581 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 626 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" void SEAMS::Parser::error(const std::string &m) { aprepro.error(m); } diff --git a/packages/seacas/libraries/aprepro_lib/aprepro.yy b/packages/seacas/libraries/aprepro_lib/aprepro.yy index 7e48f20e59..a36fda0df5 100644 --- a/packages/seacas/libraries/aprepro_lib/aprepro.yy +++ b/packages/seacas/libraries/aprepro_lib/aprepro.yy @@ -4,18 +4,19 @@ // // See packages/seacas/LICENSE for details %{ -#include "aprepro.h" -#include "apr_util.h" #include "apr_array.h" +#include "apr_util.h" +#include "aprepro.h" -#include #include #include #include #include +#include #include +#include +#include #include -#include namespace { void reset_error() @@ -166,6 +167,15 @@ bool: exp LT exp { $$ = $1 < $3; } | exp LOR bool { $$ = $1 || $3; } | exp LAND bool { $$ = $1 && $3; } | LPAR bool RPAR { $$ = $2; } + + | UNDVAR LOR exp { $$ = 0 || $3; undefined_error(aprepro, $1->name); } + | UNDVAR LAND exp { $$ = 0 && $3; undefined_error(aprepro, $1->name); } + | exp LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } + | exp LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } + | bool LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } + | bool LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } + | UNDVAR LOR bool { $$ = 0 || $3; undefined_error(aprepro, $1->name); } + | UNDVAR LAND bool { $$ = 0 && $3; undefined_error(aprepro, $1->name); } ; bool: sexp LT sexp { $$ = (strcmp($1,$3) < 0 ? 1 : 0); } @@ -175,6 +185,34 @@ bool: sexp LT sexp { $$ = (strcmp($1,$3) < 0 ? 1 : 0); } | sexp EQ sexp { $$ = (strcmp($1,$3) == 0 ? 1 : 0); } | sexp NE sexp { $$ = (strcmp($1,$3) != 0 ? 1 : 0); } + | UNDVAR LT sexp { $$ = (strcmp("",$3) < 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR GT sexp { $$ = (strcmp("",$3) > 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR LE sexp { $$ = (strcmp("",$3) <= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR GE sexp { $$ = (strcmp("",$3) >= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR EQ sexp { $$ = (strcmp("",$3) == 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR NE sexp { $$ = (strcmp("",$3) != 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + + | sexp LT UNDVAR { $$ = (strcmp($1,"") < 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + | sexp GT UNDVAR { $$ = (strcmp($1,"") > 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + | sexp LE UNDVAR { $$ = (strcmp($1,"") <= 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + | sexp GE UNDVAR { $$ = (strcmp($1,"") >= 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + | sexp EQ UNDVAR { $$ = (strcmp($1,"") == 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + | sexp NE UNDVAR { $$ = (strcmp($1,"") != 0 ? 1 : 0); undefined_error(aprepro, $3->name); } + + | UNDVAR LT exp { $$ = 0 < $3; undefined_error(aprepro, $1->name); } + | UNDVAR GT exp { $$ = 0 > $3; undefined_error(aprepro, $1->name); } + | UNDVAR LE exp { $$ = 0 <= $3; undefined_error(aprepro, $1->name); } + | UNDVAR GE exp { $$ = 0 >= $3; undefined_error(aprepro, $1->name); } + | UNDVAR EQ exp { $$ = 0 == $3; undefined_error(aprepro, $1->name); } + | UNDVAR NE exp { $$ = 0 != $3; undefined_error(aprepro, $1->name); } + + | exp LT UNDVAR { $$ = $1 < 0; undefined_error(aprepro, $3->name); } + | exp GT UNDVAR { $$ = $1 > 0; undefined_error(aprepro, $3->name); } + | exp LE UNDVAR { $$ = $1 <= 0; undefined_error(aprepro, $3->name); } + | exp GE UNDVAR { $$ = $1 >= 0; undefined_error(aprepro, $3->name); } + | exp EQ UNDVAR { $$ = $1 == 0; undefined_error(aprepro, $3->name); } + | exp NE UNDVAR { $$ = $1 != 0; undefined_error(aprepro, $3->name); } + aexp: AVAR { $$ = aprepro.make_array(*($1->value.avar)); } | AFNCT LPAR sexp RPAR { if (arg_check($1, $1->value.arrfnct_c == NULL)) @@ -352,7 +390,7 @@ exp: NUM { $$ = $1; } redefined_warning(aprepro, $1); set_type(aprepro, $1, token::VAR); } | AVAR EQUAL exp { $$ = $3; - aprepro.redefine_array($1->value.avar); + aprepro.redefine_array($1->value.avar); $1->value.var= $3; redefined_warning(aprepro, $1); set_type(aprepro, $1, token::VAR); } diff --git a/packages/seacas/libraries/aprepro_lib/aprepro_parser.h b/packages/seacas/libraries/aprepro_lib/aprepro_parser.h index 3c99dfe7d8..0b2eb4fcd9 100644 --- a/packages/seacas/libraries/aprepro_lib/aprepro_parser.h +++ b/packages/seacas/libraries/aprepro_lib/aprepro_parser.h @@ -2,7 +2,7 @@ // Skeleton interface for Bison LALR(1) parsers in C++ -// Copyright (C) 2002-2015, 2018-2021, 2023 Free Software Foundation, Inc. +// Copyright (C) 2002-2015, 2018-2021 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 @@ -44,7 +44,6 @@ #ifndef YY_SEAMS_APREPRO_PARSER_H_INCLUDED #define YY_SEAMS_APREPRO_PARSER_H_INCLUDED -// NOLINTBEGIN #include // std::abort #include #include @@ -192,7 +191,7 @@ namespace SEAMS { #else /// Symbol semantic values. union value_type { -#line 69 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" +#line 71 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" double val; /* For returning numbers. */ struct symrec *tptr; /* For returning symbol-table pointers */ @@ -781,7 +780,7 @@ namespace SEAMS { /// Constants. enum { - yylast_ = 1324, ///< Last index in yytable_. + yylast_ = 1804, ///< Last index in yytable_. yynnts_ = 7, ///< Number of nonterminal symbols. yyfinal_ = 2 ///< Termination state number. }; @@ -793,5 +792,4 @@ namespace SEAMS { } // namespace SEAMS #line 881 "aprepro_parser.h" -// NOLINTEND #endif // !YY_SEAMS_APREPRO_PARSER_H_INCLUDED From e480bca9acb5408626bdcd5db5a76893c3c7df6d Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Mon, 22 Apr 2024 17:14:51 -0600 Subject: [PATCH 07/19] IOSS: Fix upper/lower suffix determination for composite fields --- packages/seacas/libraries/ioss/src/Ioss_Utils.C | 14 ++++++++++---- packages/seacas/libraries/ioss/src/main/io_shell.C | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/seacas/libraries/ioss/src/Ioss_Utils.C b/packages/seacas/libraries/ioss/src/Ioss_Utils.C index d42b91e482..a9c8978fc8 100644 --- a/packages/seacas/libraries/ioss/src/Ioss_Utils.C +++ b/packages/seacas/libraries/ioss/src/Ioss_Utils.C @@ -5,9 +5,6 @@ // See packages/seacas/LICENSE for details #include "Ioss_CodeTypes.h" -#include "Ioss_DatabaseIO.h" -#include "Ioss_FileInfo.h" -#include "Ioss_Utils.h" #include #include #include @@ -35,10 +32,13 @@ #endif #include +#include "Ioss_CompositeVariableType.h" +#include "Ioss_DatabaseIO.h" #include "Ioss_ElementBlock.h" #include "Ioss_ElementTopology.h" #include "Ioss_EntityType.h" #include "Ioss_Field.h" +#include "Ioss_FileInfo.h" #include "Ioss_GroupingEntity.h" #include "Ioss_IOFactory.h" #include "Ioss_NodeBlock.h" @@ -47,6 +47,7 @@ #include "Ioss_Region.h" #include "Ioss_SideBlock.h" #include "Ioss_State.h" +#include "Ioss_Utils.h" #include "Ioss_VariableType.h" #if defined(__IOSS_WINDOWS__) @@ -606,7 +607,12 @@ namespace { // Are suffices upper or lowercase... std::vector tmp; field_tokenize(names[which_names[0]], suffix_separator, tmp); - Ioss::Suffix suffix{tmp[tmp.size() - 1]}; + + // If a composite variable, then need to check the interior suffix, not the last (which + // will be 1,2,...) + bool is_composite = dynamic_cast( + field.transformed_storage()) != nullptr; + Ioss::Suffix suffix{tmp[tmp.size() - (is_composite ? 2 : 1)]}; field.set_suffices_uppercase(suffix.is_uppercase()); field.set_index(index); for (const auto &which_name : which_names) { diff --git a/packages/seacas/libraries/ioss/src/main/io_shell.C b/packages/seacas/libraries/ioss/src/main/io_shell.C index 48fc2cbfa6..903c54b4df 100644 --- a/packages/seacas/libraries/ioss/src/main/io_shell.C +++ b/packages/seacas/libraries/ioss/src/main/io_shell.C @@ -42,7 +42,7 @@ namespace { std::string codename; - std::string version = "6.5 (2024/04/03)"; + std::string version = "6.6 (2024/04/22)"; bool mem_stats = false; From ebece95f55e735c496c07d5587e9fef629599a86 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 23 Apr 2024 14:43:12 -0600 Subject: [PATCH 08/19] APREPRO: Fix to_string when fmt:: full precision output being used --- .../libraries/aprepro_lib/apr_aprepro.cc | 4 ++-- .../libraries/aprepro_lib/apr_builtin.cc | 21 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc index b3d2baed43..57007b9edf 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc @@ -33,8 +33,8 @@ #endif namespace { - const std::string version_short{"6.28"}; - const std::string version_date{"(2024/04/22)"}; + const std::string version_short{"6.29"}; + const std::string version_date{"(2024/04/23)"}; const std::string version_string = version_short + " " + version_date; void output_copyright(); diff --git a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc index fb6def4643..a5e58bd364 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc @@ -598,18 +598,25 @@ namespace SEAMS { const char *do_tostring(double x) { - char *tmp; - static char tmpstr[128]; + char *tmp; if (x == 0.0) { new_string("0", &tmp); return (tmp); } - SEAMS::symrec *format; - format = aprepro->getsym("_FORMAT"); - snprintf(tmpstr, 128, format->value.svar.c_str(), x); - new_string(tmpstr, &tmp); - return (tmp); + const SEAMS::symrec *format = aprepro->getsym("_FORMAT"); + if (format->value.svar.empty()) { + std::ostringstream lines; + fmt::print(lines, "{}", x); + new_string(lines.str(), &tmp); + return tmp; + } + else { + static char tmpstr[128]; + snprintf(tmpstr, 128, format->value.svar.c_str(), x); + new_string(tmpstr, &tmp); + return (tmp); + } } const char *do_output(char *filename) From 4929ff40422fceb3488912e80567b1a9c36bf1cb Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 23 Apr 2024 14:47:34 -0600 Subject: [PATCH 09/19] APREPRO: Refactor last change --- packages/seacas/libraries/aprepro_lib/apr_builtin.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc index a5e58bd364..a6af6761c1 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_builtin.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_builtin.cc @@ -612,10 +612,9 @@ namespace SEAMS { return tmp; } else { - static char tmpstr[128]; - snprintf(tmpstr, 128, format->value.svar.c_str(), x); - new_string(tmpstr, &tmp); - return (tmp); + auto tmpstr = fmt::sprintf(format->value.svar, x); + new_string(tmpstr.c_str(), &tmp); + return tmp; } } From 051d9611021cdf77a907a064e3a14270910a46c3 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 23 Apr 2024 18:48:40 -0600 Subject: [PATCH 10/19] IOSS: heartbeat - add HEARTBEAT_FLUSH_INTERVAL property, document 0 will flush every step --- packages/seacas/libraries/ioss/src/Ioss_Doxygen.h | 3 ++- .../seacas/libraries/ioss/src/heartbeat/Iohb_DatabaseIO.C | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/seacas/libraries/ioss/src/Ioss_Doxygen.h b/packages/seacas/libraries/ioss/src/Ioss_Doxygen.h index c816aa0889..d3c20468da 100644 --- a/packages/seacas/libraries/ioss/src/Ioss_Doxygen.h +++ b/packages/seacas/libraries/ioss/src/Ioss_Doxygen.h @@ -182,7 +182,8 @@ file. Then, the first file will be reopened and steps 0.7, 0.8, and Property | Value | Description -----------------------|:------:|----------------------------------------------------------- FILE_FORMAT | [default], spyhis, csv, ts_csv, text, ts_text | predefined formats for heartbeat output. The ones starting with `ts_` output timestamps. - FLUSH_INTERVAL | int | Minimum time interval between flushing heartbeat data to disk. Default is 10 seconds + FLUSH_INTERVAL | int | Minimum time interval between flushing heartbeat data to disk. Default is 10 seconds. Set to 0 to flush every step (bad performance) + HEARTBEAT_FLUSH_INTERVAL | int | Minimum time interval between flushing heartbeat data to disk. Default is 10 seconds (Same as FLUSH_INTERVAL, but doesn't affect other database types) TIME_STAMP_FORMAT | [%H:%M:%S] | Format used to format time stamp. See strftime man page SHOW_TIME_STAMP | on/off | Should the output lines be preceded by the timestamp FIELD_SEPARATOR | [, ] | separator to be used between output fields. diff --git a/packages/seacas/libraries/ioss/src/heartbeat/Iohb_DatabaseIO.C b/packages/seacas/libraries/ioss/src/heartbeat/Iohb_DatabaseIO.C index ee019a6a46..32b02b82d2 100644 --- a/packages/seacas/libraries/ioss/src/heartbeat/Iohb_DatabaseIO.C +++ b/packages/seacas/libraries/ioss/src/heartbeat/Iohb_DatabaseIO.C @@ -1,4 +1,4 @@ -// Copyright(C) 1999-2023 National Technology & Engineering Solutions +// Copyright(C) 1999-2024 National Technology & Engineering Solutions // of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with // NTESS, the U.S. Government retains certain rights in this software. // @@ -209,6 +209,10 @@ namespace Iohb { new_this->flushInterval_ = properties.get("FLUSH_INTERVAL").get_int(); } + if (properties.exists("HEARTBEAT_FLUSH_INTERVAL")) { + new_this->flushInterval_ = properties.get("HEARTBEAT_FLUSH_INTERVAL").get_int(); + } + if (properties.exists("TIME_STAMP_FORMAT")) { new_this->tsFormat = properties.get("TIME_STAMP_FORMAT").get_string(); } @@ -332,6 +336,7 @@ namespace Iohb { // Flush the buffer to disk... // flush if there is more than 'flushInterval_' seconds since the last flush to avoid // the flush eating up cpu time for small fast jobs... + // If want a flush every step for some reason, set `flushInterval_` to 0.0. // This code is derived from code in finalize_write() in Ioex_DatabaseIO.C // See other comments there... From d306cdda641677b2affb0f1a5b75d50cc36c288d Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Wed, 1 May 2024 08:04:05 -0600 Subject: [PATCH 11/19] Allow apps to be called internally by other mpi apps... --- packages/seacas/applications/slice/Slice.C | 6 ++++++ .../libraries/ioss/src/main/io_info_main.C | 19 ++++++++++++++++--- .../seacas/libraries/ioss/src/main/io_shell.C | 17 +++++++++++++++-- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/packages/seacas/applications/slice/Slice.C b/packages/seacas/applications/slice/Slice.C index ce92e300e6..cbd1961c7b 100644 --- a/packages/seacas/applications/slice/Slice.C +++ b/packages/seacas/applications/slice/Slice.C @@ -408,6 +408,12 @@ int main(int argc, char *argv[]) } #ifdef SEACAS_HAVE_MPI + MPI_Comm parentcomm; + MPI_Comm_get_parent(&parentcomm); + if (parentcomm != MPI_COMM_NULL) { + int istatus = EXIT_SUCCESS; + MPI_Send(&istatus, 1, MPI_INT, 0, 0, parentcomm); + } MPI_Finalize(); #endif fmt::print(stderr, "\nHigh-Water Memory Use: {} bytes\n", diff --git a/packages/seacas/libraries/ioss/src/main/io_info_main.C b/packages/seacas/libraries/ioss/src/main/io_info_main.C index a61782367c..d528681661 100644 --- a/packages/seacas/libraries/ioss/src/main/io_info_main.C +++ b/packages/seacas/libraries/ioss/src/main/io_info_main.C @@ -1,5 +1,5 @@ /* - * Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions + * Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * NTESS, the U.S. Government retains certain rights in this software. * @@ -22,14 +22,27 @@ namespace { std::string codename; - std::string version = "1.05"; + std::string version = "1.06"; + +#ifdef SEACAS_HAVE_MPI + void mpi_finalize() + { + MPI_Comm parentcomm; + MPI_Comm_get_parent(&parentcomm); + if (parentcomm != MPI_COMM_NULL) { + int istatus = EXIT_SUCCESS; + MPI_Send(&istatus, 1, MPI_INT, 0, 0, parentcomm); + } + MPI_Finalize(); + } +#endif } // namespace int main(int argc, char *argv[]) { #ifdef SEACAS_HAVE_MPI MPI_Init(&argc, &argv); - ON_BLOCK_EXIT(MPI_Finalize); + ON_BLOCK_EXIT(mpi_finalize); #endif Info::Interface interFace; diff --git a/packages/seacas/libraries/ioss/src/main/io_shell.C b/packages/seacas/libraries/ioss/src/main/io_shell.C index 903c54b4df..42ab148be3 100644 --- a/packages/seacas/libraries/ioss/src/main/io_shell.C +++ b/packages/seacas/libraries/ioss/src/main/io_shell.C @@ -42,7 +42,7 @@ namespace { std::string codename; - std::string version = "6.6 (2024/04/22)"; + std::string version = "6.7 (2024/05/01)"; bool mem_stats = false; @@ -75,13 +75,26 @@ namespace { options.ignore_qa_info = interFace.ignore_qa_info; return options; } + +#ifdef SEACAS_HAVE_MPI + void mpi_finalize() + { + MPI_Comm parentcomm; + MPI_Comm_get_parent(&parentcomm); + if (parentcomm != MPI_COMM_NULL) { + int istatus = EXIT_SUCCESS; + MPI_Send(&istatus, 1, MPI_INT, 0, 0, parentcomm); + } + MPI_Finalize(); + } +#endif } // namespace int main(int argc, char *argv[]) { #ifdef SEACAS_HAVE_MPI MPI_Init(&argc, &argv); - ON_BLOCK_EXIT(MPI_Finalize); + ON_BLOCK_EXIT(mpi_finalize); #endif Ioss::ParallelUtils pu{}; int rank = pu.parallel_rank(); From 690fc76eea53417221e8ac7ca77c8df24a94497a Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Wed, 1 May 2024 15:55:30 -0600 Subject: [PATCH 12/19] EXODUS: Add missing ifdef for older netCDF --- .../seacas/libraries/exodus/src/ex_put_concat_elem_block.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/seacas/libraries/exodus/src/ex_put_concat_elem_block.c b/packages/seacas/libraries/exodus/src/ex_put_concat_elem_block.c index 0d839323d5..f5c7ad17bf 100644 --- a/packages/seacas/libraries/exodus/src/ex_put_concat_elem_block.c +++ b/packages/seacas/libraries/exodus/src/ex_put_concat_elem_block.c @@ -1,5 +1,5 @@ /* - * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions + * Copyright(C) 1999-2020, 2022, 2023, 2024 National Technology & Engineering Solutions * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with * NTESS, the U.S. Government retains certain rights in this software. * @@ -271,8 +271,10 @@ int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, char *const ex_err_fn(exoid, __func__, errmsg, status); goto error_ret; /* exit define mode and return */ } +#if defined(EX_CAN_USE_NC_DEF_VAR_FILL) int fill = NC_FILL_CHAR; nc_def_var_fill(exoid, temp, 0, &fill); +#endif eb_array[iblk] = temp; dims[0] = numelbdim; From d59d4312aa4d271c2afd4bacfdb8e896fa2d8d83 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 7 May 2024 09:28:38 -0400 Subject: [PATCH 13/19] APREPRO: Do not add #lines on generated bison --- cmake/FortranSettings.cmake | 18 ------------------ .../libraries/aprepro_lib/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 cmake/FortranSettings.cmake diff --git a/cmake/FortranSettings.cmake b/cmake/FortranSettings.cmake deleted file mode 100644 index 2d87f84142..0000000000 --- a/cmake/FortranSettings.cmake +++ /dev/null @@ -1,18 +0,0 @@ -ADD_DEFINITIONS(-DBuild64) - -IF ("${FC_FN_UNDERSCORE}" STREQUAL "UNDER") - ADD_DEFINITIONS(-DADDC_) -ENDIF() - -IF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") - SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fcray-pointer -fdefault-real-8 -fdefault-integer-8 -fno-range-check") -ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "LLVMFlang") - SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fdefault-integer-8") -ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "XL") - SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qintsize=8 -qrealsize=8") -ELSEIF ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Cray") - SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -sdefault64") -ELSE() - SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -i8") -ENDIF() - diff --git a/packages/seacas/libraries/aprepro_lib/CMakeLists.txt b/packages/seacas/libraries/aprepro_lib/CMakeLists.txt index 51fb1fc194..13fcf791dd 100644 --- a/packages/seacas/libraries/aprepro_lib/CMakeLists.txt +++ b/packages/seacas/libraries/aprepro_lib/CMakeLists.txt @@ -78,7 +78,7 @@ if(GENERATE_BISON_FILES) add_custom_command(OUTPUT apr_parser.cc COMMAND ${BISON_EXE} - ARGS --defines=aprepro_parser.h --output apr_parser.cc + ARGS --no-lines --defines=aprepro_parser.h --output apr_parser.cc ${CMAKE_CURRENT_SOURCE_DIR}/aprepro.yy MAIN_DEPENDENCY aprepro.yy WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} From 7ef1273bd3169e6ae9dfa83de1a6b5c1989ba79c Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 7 May 2024 09:29:55 -0400 Subject: [PATCH 14/19] APREPRO: Better error for "X CMP string"; inf = divide by 0 --- .../libraries/aprepro_lib/apr_parser.cc | 1672 ++++++----------- .../seacas/libraries/aprepro_lib/aprepro.yy | 56 +- .../libraries/aprepro_lib/aprepro_parser.h | 7 +- 3 files changed, 658 insertions(+), 1077 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_parser.cc b/packages/seacas/libraries/aprepro_lib/apr_parser.cc index 4d13f03a95..45a3392132 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_parser.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_parser.cc @@ -38,7 +38,6 @@ #define yylex SEAMSlex // First part of user prologue. -#line 6 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" #include "apr_array.h" #include "apr_util.h" @@ -77,12 +76,9 @@ namespace SEAMS { extern bool echo; } -#line 84 "apr_parser.cc" - #include "aprepro_parser.h" // Second part of user prologue. -#line 112 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" #include "apr_scanner.h" #include "aprepro.h" @@ -93,8 +89,6 @@ namespace SEAMS { #undef yylex #define yylex aprepro.lexer->lex -#line 103 "apr_parser.cc" - #ifndef YY_ #if defined YYENABLE_NLS && YYENABLE_NLS #if ENABLE_NLS @@ -165,7 +159,6 @@ namespace SEAMS { #define YYRECOVERING() (!!yyerrstatus_) namespace SEAMS { -#line 177 "apr_parser.cc" /// Build a parser object. Parser::Parser(class Aprepro &aprepro_yyarg) @@ -387,6 +380,7 @@ namespace SEAMS { int yylen = 0; // Error handling. + int yynerrs_ = 0; int yyerrstatus_ = 0; /// The lookahead symbol. @@ -518,16 +512,12 @@ namespace SEAMS { { switch (yyn) { case 4: // line: '\n' -#line 131 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (echo) aprepro.lexer->LexerOutput("\n", 1); - } -#line 634 "apr_parser.cc" - break; + } break; case 5: // line: LBRACE exp RBRACE -#line 132 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (echo) { SEAMS::symrec *format = aprepro.getsym("_FORMAT"); @@ -542,523 +532,427 @@ namespace SEAMS { aprepro.lexer->LexerOutput(tmpstr, len); } } - } -#line 652 "apr_parser.cc" - break; + } break; case 6: // line: LBRACE sexp RBRACE -#line 145 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { if (echo && (yystack_[1].value.string) != NULL) { aprepro.lexer->LexerOutput((yystack_[1].value.string), strlen((yystack_[1].value.string))); } - } -#line 661 "apr_parser.cc" - break; + } break; case 7: // line: LBRACE aexp RBRACE -#line 149 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { - } -#line 667 "apr_parser.cc" - break; + } break; case 8: // line: LBRACE RBRACE -#line 150 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { - } -#line 673 "apr_parser.cc" - break; + } break; case 9: // line: error RBRACE -#line 151 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { yyerrok; - } -#line 679 "apr_parser.cc" - break; + } break; case 10: // bool: exp LT exp -#line 154 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) < (yystack_[0].value.val); - } -#line 685 "apr_parser.cc" - break; + } break; case 11: // bool: exp GT exp -#line 155 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) > (yystack_[0].value.val); - } -#line 691 "apr_parser.cc" - break; + } break; case 12: // bool: NOT exp -#line 156 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = !((yystack_[0].value.val)); - } -#line 697 "apr_parser.cc" - break; + } break; case 13: // bool: exp LE exp -#line 157 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) <= (yystack_[0].value.val); - } -#line 703 "apr_parser.cc" - break; + } break; case 14: // bool: exp GE exp -#line 158 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) >= (yystack_[0].value.val); - } -#line 709 "apr_parser.cc" - break; + } break; case 15: // bool: exp EQ exp -#line 159 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) == (yystack_[0].value.val); - } -#line 715 "apr_parser.cc" - break; + } break; case 16: // bool: exp NE exp -#line 160 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) != (yystack_[0].value.val); - } -#line 721 "apr_parser.cc" - break; + } break; case 17: // bool: exp LOR exp -#line 161 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); - } -#line 727 "apr_parser.cc" - break; + } break; case 18: // bool: exp LAND exp -#line 162 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); - } -#line 733 "apr_parser.cc" - break; + } break; case 19: // bool: bool LOR bool -#line 163 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); - } -#line 739 "apr_parser.cc" - break; + } break; case 20: // bool: bool LAND bool -#line 164 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); - } -#line 745 "apr_parser.cc" - break; + } break; case 21: // bool: bool LOR exp -#line 165 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); - } -#line 751 "apr_parser.cc" - break; + } break; case 22: // bool: bool LAND exp -#line 166 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); - } -#line 757 "apr_parser.cc" - break; + } break; case 23: // bool: exp LOR bool -#line 167 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || (yystack_[0].value.val); - } -#line 763 "apr_parser.cc" - break; + } break; case 24: // bool: exp LAND bool -#line 168 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && (yystack_[0].value.val); - } -#line 769 "apr_parser.cc" - break; + } break; case 25: // bool: LPAR bool RPAR -#line 169 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[1].value.val); - } -#line 775 "apr_parser.cc" - break; + } break; case 26: // bool: UNDVAR LOR exp -#line 171 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = 0 || (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 781 "apr_parser.cc" - break; + } break; case 27: // bool: UNDVAR LAND exp -#line 172 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = 0 && (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 787 "apr_parser.cc" - break; + } break; case 28: // bool: exp LOR UNDVAR -#line 173 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 793 "apr_parser.cc" - break; + } break; case 29: // bool: exp LAND UNDVAR -#line 174 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 799 "apr_parser.cc" - break; + } break; case 30: // bool: bool LOR UNDVAR -#line 175 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) || 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 805 "apr_parser.cc" - break; + } break; case 31: // bool: bool LAND UNDVAR -#line 176 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (yystack_[2].value.val) && 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 811 "apr_parser.cc" - break; + } break; case 32: // bool: UNDVAR LOR bool -#line 177 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = 0 || (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 817 "apr_parser.cc" - break; + } break; case 33: // bool: UNDVAR LAND bool -#line 178 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = 0 && (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 823 "apr_parser.cc" - break; + } break; case 34: // bool: sexp LT sexp -#line 181 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) < 0 ? 1 : 0); - } -#line 829 "apr_parser.cc" - break; + } break; case 35: // bool: sexp GT sexp -#line 182 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) > 0 ? 1 : 0); - } -#line 835 "apr_parser.cc" - break; + } break; case 36: // bool: sexp LE sexp -#line 183 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) <= 0 ? 1 : 0); - } -#line 841 "apr_parser.cc" - break; + } break; case 37: // bool: sexp GE sexp -#line 184 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) >= 0 ? 1 : 0); - } -#line 847 "apr_parser.cc" - break; + } break; case 38: // bool: sexp EQ sexp -#line 185 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) == 0 ? 1 : 0); - } -#line 853 "apr_parser.cc" - break; + } break; case 39: // bool: sexp NE sexp -#line 186 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" { (yylhs.value.val) = (strcmp((yystack_[2].value.string), (yystack_[0].value.string)) != 0 ? 1 : 0); - } -#line 859 "apr_parser.cc" - break; + } break; + + case 40: // bool: exp LT sexp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; + + case 41: // bool: exp GT sexp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; + + case 42: // bool: exp LE sexp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; + + case 43: // bool: exp GE sexp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; + + case 44: // bool: exp EQ sexp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; - case 40: // bool: UNDVAR LT sexp -#line 188 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 45: // bool: exp NE sexp + { + (yylhs.value.val) = true; + yyerror(aprepro, "Comparison of arithmetic with string not defined"); + yyerrok; + } break; + + case 46: // bool: sexp LT exp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 47: // bool: sexp GT exp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 48: // bool: sexp LE exp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 49: // bool: sexp GE exp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 50: // bool: sexp EQ exp + { + (yylhs.value.val) = false; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 51: // bool: sexp NE exp + { + (yylhs.value.val) = true; + yyerror(aprepro, "Comparison of string with arithmetic not defined"); + yyerrok; + } break; + + case 52: // bool: UNDVAR LT sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) < 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 865 "apr_parser.cc" - break; + } break; - case 41: // bool: UNDVAR GT sexp -#line 189 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 53: // bool: UNDVAR GT sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) > 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 871 "apr_parser.cc" - break; + } break; - case 42: // bool: UNDVAR LE sexp -#line 190 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 54: // bool: UNDVAR LE sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) <= 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 877 "apr_parser.cc" - break; + } break; - case 43: // bool: UNDVAR GE sexp -#line 191 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 55: // bool: UNDVAR GE sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) >= 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 883 "apr_parser.cc" - break; + } break; - case 44: // bool: UNDVAR EQ sexp -#line 192 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 56: // bool: UNDVAR EQ sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) == 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 889 "apr_parser.cc" - break; + } break; - case 45: // bool: UNDVAR NE sexp -#line 193 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 57: // bool: UNDVAR NE sexp { (yylhs.value.val) = (strcmp("", (yystack_[0].value.string)) != 0 ? 1 : 0); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 895 "apr_parser.cc" - break; + } break; - case 46: // bool: sexp LT UNDVAR -#line 195 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 58: // bool: sexp LT UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") < 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 901 "apr_parser.cc" - break; + } break; - case 47: // bool: sexp GT UNDVAR -#line 196 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 59: // bool: sexp GT UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") > 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 907 "apr_parser.cc" - break; + } break; - case 48: // bool: sexp LE UNDVAR -#line 197 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 60: // bool: sexp LE UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") <= 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 913 "apr_parser.cc" - break; + } break; - case 49: // bool: sexp GE UNDVAR -#line 198 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 61: // bool: sexp GE UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") >= 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 919 "apr_parser.cc" - break; + } break; - case 50: // bool: sexp EQ UNDVAR -#line 199 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 62: // bool: sexp EQ UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") == 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 925 "apr_parser.cc" - break; + } break; - case 51: // bool: sexp NE UNDVAR -#line 200 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 63: // bool: sexp NE UNDVAR { (yylhs.value.val) = (strcmp((yystack_[2].value.string), "") != 0 ? 1 : 0); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 931 "apr_parser.cc" - break; + } break; - case 52: // bool: UNDVAR LT exp -#line 202 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 64: // bool: UNDVAR LT exp { (yylhs.value.val) = 0 < (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 937 "apr_parser.cc" - break; + } break; - case 53: // bool: UNDVAR GT exp -#line 203 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 65: // bool: UNDVAR GT exp { (yylhs.value.val) = 0 > (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 943 "apr_parser.cc" - break; + } break; - case 54: // bool: UNDVAR LE exp -#line 204 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 66: // bool: UNDVAR LE exp { (yylhs.value.val) = 0 <= (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 949 "apr_parser.cc" - break; + } break; - case 55: // bool: UNDVAR GE exp -#line 205 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 67: // bool: UNDVAR GE exp { (yylhs.value.val) = 0 >= (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 955 "apr_parser.cc" - break; + } break; - case 56: // bool: UNDVAR EQ exp -#line 206 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 68: // bool: UNDVAR EQ exp { (yylhs.value.val) = 0 == (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 961 "apr_parser.cc" - break; + } break; - case 57: // bool: UNDVAR NE exp -#line 207 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 69: // bool: UNDVAR NE exp { (yylhs.value.val) = 0 != (yystack_[0].value.val); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 967 "apr_parser.cc" - break; + } break; - case 58: // bool: exp LT UNDVAR -#line 209 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 70: // bool: exp LT UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) < 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 973 "apr_parser.cc" - break; + } break; - case 59: // bool: exp GT UNDVAR -#line 210 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 71: // bool: exp GT UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) > 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 979 "apr_parser.cc" - break; + } break; - case 60: // bool: exp LE UNDVAR -#line 211 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 72: // bool: exp LE UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) <= 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 985 "apr_parser.cc" - break; + } break; - case 61: // bool: exp GE UNDVAR -#line 212 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 73: // bool: exp GE UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) >= 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 991 "apr_parser.cc" - break; + } break; - case 62: // bool: exp EQ UNDVAR -#line 213 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 74: // bool: exp EQ UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) == 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 997 "apr_parser.cc" - break; + } break; - case 63: // bool: exp NE UNDVAR -#line 214 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 75: // bool: exp NE UNDVAR { (yylhs.value.val) = (yystack_[2].value.val) != 0; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 1003 "apr_parser.cc" - break; + } break; - case 64: // aexp: AVAR -#line 216 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 76: // aexp: AVAR { (yylhs.value.arrval) = aprepro.make_array(*((yystack_[0].value.tptr)->value.avar)); - } -#line 1009 "apr_parser.cc" - break; + } break; - case 65: // aexp: AFNCT LPAR sexp RPAR -#line 217 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 77: // aexp: AFNCT LPAR sexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.arrfnct_c == NULL)) @@ -1066,12 +960,9 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.arrfnct_c))((yystack_[1].value.string)); else yyerrok; - } -#line 1020 "apr_parser.cc" - break; + } break; - case 66: // aexp: AFNCT LPAR sexp COMMA exp RPAR -#line 223 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 78: // aexp: AFNCT LPAR sexp COMMA exp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.arrfnct_cd == NULL)) @@ -1079,12 +970,9 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.val)); else yyerrok; - } -#line 1031 "apr_parser.cc" - break; + } break; - case 67: // aexp: AFNCT LPAR sexp COMMA sexp RPAR -#line 229 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 79: // aexp: AFNCT LPAR sexp COMMA sexp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.arrfnct_cc == NULL)) @@ -1092,12 +980,9 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.string)); else yyerrok; - } -#line 1042 "apr_parser.cc" - break; + } break; - case 68: // aexp: AFNCT LPAR exp COMMA exp COMMA exp RPAR -#line 235 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 80: // aexp: AFNCT LPAR exp COMMA exp COMMA exp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.arrfnct_ddd == NULL)) @@ -1105,12 +990,9 @@ namespace SEAMS { (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else yyerrok; - } -#line 1053 "apr_parser.cc" - break; + } break; - case 69: // aexp: AFNCT LPAR exp COMMA exp RPAR -#line 241 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 81: // aexp: AFNCT LPAR exp COMMA exp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.arrfnct_dd == NULL)) @@ -1118,12 +1000,9 @@ namespace SEAMS { (yystack_[3].value.val), (yystack_[1].value.val)); else yyerrok; - } -#line 1064 "apr_parser.cc" - break; + } break; - case 70: // aexp: AFNCT LPAR exp RPAR -#line 247 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 82: // aexp: AFNCT LPAR exp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.arrfnct_d == NULL)) @@ -1131,12 +1010,9 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.arrfnct_d))((yystack_[1].value.val)); else yyerrok; - } -#line 1075 "apr_parser.cc" - break; + } break; - case 71: // aexp: AFNCT LPAR aexp RPAR -#line 253 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 83: // aexp: AFNCT LPAR aexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.arrfnct_a == NULL)) @@ -1144,56 +1020,41 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.arrfnct_a))((yystack_[1].value.arrval)); else yyerrok; - } -#line 1086 "apr_parser.cc" - break; + } break; - case 72: // aexp: SVAR EQUAL aexp -#line 259 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 84: // aexp: SVAR EQUAL aexp { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); - } -#line 1095 "apr_parser.cc" - break; + } break; - case 73: // aexp: VAR EQUAL aexp -#line 263 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 85: // aexp: VAR EQUAL aexp { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); - } -#line 1104 "apr_parser.cc" - break; + } break; - case 74: // aexp: AVAR EQUAL aexp -#line 267 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 86: // aexp: AVAR EQUAL aexp { (yylhs.value.arrval) = (yystack_[0].value.arrval); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); - } -#line 1112 "apr_parser.cc" - break; + } break; - case 75: // aexp: UNDVAR EQUAL aexp -#line 270 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 87: // aexp: UNDVAR EQUAL aexp { (yylhs.value.arrval) = (yystack_[0].value.arrval); (yystack_[2].value.tptr)->value.avar = (yystack_[0].value.arrval); set_type(aprepro, (yystack_[2].value.tptr), token::AVAR); - } -#line 1119 "apr_parser.cc" - break; + } break; - case 76: // aexp: aexp PLU aexp -#line 272 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 88: // aexp: aexp PLU aexp { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->cols && (yystack_[2].value.arrval)->rows == (yystack_[0].value.arrval)->rows) { @@ -1204,20 +1065,14 @@ namespace SEAMS { yyerror(aprepro, "Arrays do not have same row and column count"); yyerrok; } - } -#line 1132 "apr_parser.cc" - break; + } break; - case 77: // aexp: SUB aexp -#line 280 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 89: // aexp: SUB aexp { (yylhs.value.arrval) = array_scale((yystack_[0].value.arrval), -1.0); - } -#line 1138 "apr_parser.cc" - break; + } break; - case 78: // aexp: aexp SUB aexp -#line 282 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 90: // aexp: aexp SUB aexp { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->cols && (yystack_[2].value.arrval)->rows == (yystack_[0].value.arrval)->rows) { @@ -1228,37 +1083,25 @@ namespace SEAMS { yyerror(aprepro, "Arrays do not have same row and column count"); yyerrok; } - } -#line 1151 "apr_parser.cc" - break; + } break; - case 79: // aexp: aexp TIM exp -#line 290 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 91: // aexp: aexp TIM exp { (yylhs.value.arrval) = array_scale((yystack_[2].value.arrval), (yystack_[0].value.val)); - } -#line 1157 "apr_parser.cc" - break; + } break; - case 80: // aexp: aexp DIV exp -#line 291 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 92: // aexp: aexp DIV exp { (yylhs.value.arrval) = array_scale((yystack_[2].value.arrval), 1.0 / (yystack_[0].value.val)); - } -#line 1163 "apr_parser.cc" - break; + } break; - case 81: // aexp: exp TIM aexp -#line 292 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 93: // aexp: exp TIM aexp { (yylhs.value.arrval) = array_scale((yystack_[0].value.arrval), (yystack_[2].value.val)); - } -#line 1169 "apr_parser.cc" - break; + } break; - case 82: // aexp: aexp TIM aexp -#line 293 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 94: // aexp: aexp TIM aexp { if ((yystack_[2].value.arrval)->cols == (yystack_[0].value.arrval)->rows) { (yylhs.value.arrval) = @@ -1269,97 +1112,67 @@ namespace SEAMS { "Column count of first array does not match row count of second array"); yyerrok; } - } -#line 1182 "apr_parser.cc" - break; + } break; - case 83: // sexp: QSTRING -#line 302 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 95: // sexp: QSTRING { (yylhs.value.string) = (yystack_[0].value.string); - } -#line 1188 "apr_parser.cc" - break; + } break; - case 84: // sexp: SVAR -#line 303 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 96: // sexp: SVAR { (yylhs.value.string) = (char *)(yystack_[0].value.tptr)->value.svar.c_str(); - } -#line 1194 "apr_parser.cc" - break; + } break; - case 85: // sexp: IMMSVAR -#line 304 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 97: // sexp: IMMSVAR { (yylhs.value.string) = (char *)(yystack_[0].value.tptr)->value.svar.c_str(); - } -#line 1200 "apr_parser.cc" - break; + } break; - case 86: // sexp: UNDVAR EQUAL sexp -#line 305 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 98: // sexp: UNDVAR EQUAL sexp { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); set_type(aprepro, (yystack_[2].value.tptr), Parser::token::SVAR); - } -#line 1207 "apr_parser.cc" - break; + } break; - case 87: // sexp: SVAR EQUAL sexp -#line 307 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 99: // sexp: SVAR EQUAL sexp { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); redefined_warning(aprepro, (yystack_[2].value.tptr)); - } -#line 1215 "apr_parser.cc" - break; + } break; - case 88: // sexp: VAR EQUAL sexp -#line 310 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 100: // sexp: VAR EQUAL sexp { (yylhs.value.string) = (yystack_[0].value.string); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::SVAR); - } -#line 1224 "apr_parser.cc" - break; + } break; - case 89: // sexp: AVAR EQUAL sexp -#line 314 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 101: // sexp: AVAR EQUAL sexp { (yylhs.value.string) = (yystack_[0].value.string); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); (yystack_[2].value.tptr)->value.svar = (yystack_[0].value.string); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::SVAR); - } -#line 1234 "apr_parser.cc" - break; + } break; - case 90: // sexp: IMMSVAR EQUAL sexp -#line 319 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 102: // sexp: IMMSVAR EQUAL sexp { (yylhs.value.string) = (char *)(yystack_[2].value.tptr)->value.svar.c_str(); immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1240 "apr_parser.cc" - break; + } break; - case 91: // sexp: IMMVAR EQUAL sexp -#line 320 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 103: // sexp: IMMVAR EQUAL sexp { immutable_modify(aprepro, (yystack_[2].value.tptr)); YYERROR; - } -#line 1246 "apr_parser.cc" - break; + } break; - case 92: // sexp: SFNCT LPAR sexp RPAR -#line 321 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 104: // sexp: SFNCT LPAR sexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.strfnct_c == NULL)) @@ -1367,24 +1180,18 @@ namespace SEAMS { (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; - } -#line 1257 "apr_parser.cc" - break; + } break; - case 93: // sexp: SFNCT LPAR RPAR -#line 327 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 105: // sexp: SFNCT LPAR RPAR { if (arg_check((yystack_[2].value.tptr), (yystack_[2].value.tptr)->value.strfnct == NULL)) (yylhs.value.string) = (char *)(*((yystack_[2].value.tptr)->value.strfnct))(); else (yylhs.value.string) = (char *)""; - } -#line 1268 "apr_parser.cc" - break; + } break; - case 94: // sexp: SFNCT LPAR exp RPAR -#line 333 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 106: // sexp: SFNCT LPAR exp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.strfnct_d == NULL)) @@ -1392,12 +1199,9 @@ namespace SEAMS { (char *)(*((yystack_[3].value.tptr)->value.strfnct_d))((yystack_[1].value.val)); else (yylhs.value.string) = (char *)""; - } -#line 1279 "apr_parser.cc" - break; + } break; - case 95: // sexp: SFNCT LPAR aexp RPAR -#line 339 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 107: // sexp: SFNCT LPAR aexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.strfnct_a == NULL)) @@ -1405,21 +1209,15 @@ namespace SEAMS { (yystack_[1].value.arrval)); else (yylhs.value.string) = (char *)""; - } -#line 1290 "apr_parser.cc" - break; + } break; - case 96: // sexp: sexp CONCAT sexp -#line 345 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 108: // sexp: sexp CONCAT sexp { concat_string((yystack_[2].value.string), (yystack_[0].value.string), &(yylhs.value.string)); - } -#line 1296 "apr_parser.cc" - break; + } break; - case 97: // sexp: SFNCT LPAR exp COMMA exp RPAR -#line 346 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 109: // sexp: SFNCT LPAR exp COMMA exp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.strfnct_dd == NULL)) @@ -1427,12 +1225,9 @@ namespace SEAMS { (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.string) = (char *)""; - } -#line 1307 "apr_parser.cc" - break; + } break; - case 98: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp COMMA sexp COMMA sexp RPAR -#line 352 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 110: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp COMMA sexp COMMA sexp RPAR { if (arg_check((yystack_[11].value.tptr), (yystack_[11].value.tptr)->value.strfnct_dcccc == NULL)) @@ -1441,12 +1236,9 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; - } -#line 1318 "apr_parser.cc" - break; + } break; - case 99: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp RPAR -#line 358 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 111: // sexp: SFNCT LPAR exp COMMA sexp COMMA sexp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.strfnct_dcc == NULL)) @@ -1454,12 +1246,9 @@ namespace SEAMS { (yystack_[5].value.val), (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; - } -#line 1329 "apr_parser.cc" - break; + } break; - case 100: // sexp: SFNCT LPAR sexp COMMA sexp COMMA sexp RPAR -#line 364 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 112: // sexp: SFNCT LPAR sexp COMMA sexp COMMA sexp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.strfnct_ccc == NULL)) @@ -1468,12 +1257,9 @@ namespace SEAMS { (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; - } -#line 1340 "apr_parser.cc" - break; + } break; - case 101: // sexp: SFNCT LPAR sexp COMMA sexp RPAR -#line 370 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 113: // sexp: SFNCT LPAR sexp COMMA sexp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.strfnct_cc == NULL)) @@ -1481,376 +1267,256 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.string) = (char *)""; - } -#line 1351 "apr_parser.cc" - break; + } break; - case 102: // sexp: bool QUEST sexp COLON sexp -#line 376 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 114: // sexp: bool QUEST sexp COLON sexp { (yylhs.value.string) = ((yystack_[4].value.val)) ? ((yystack_[2].value.string)) : ((yystack_[0].value.string)); - } -#line 1357 "apr_parser.cc" - break; + } break; - case 103: // exp: NUM -#line 378 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 115: // exp: NUM { (yylhs.value.val) = (yystack_[0].value.val); - } -#line 1363 "apr_parser.cc" - break; + } break; - case 104: // exp: INC NUM -#line 379 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 116: // exp: INC NUM { (yylhs.value.val) = (yystack_[0].value.val) + 1; - } -#line 1369 "apr_parser.cc" - break; + } break; - case 105: // exp: DEC NUM -#line 380 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 117: // exp: DEC NUM { (yylhs.value.val) = (yystack_[0].value.val) - 1; - } -#line 1375 "apr_parser.cc" - break; + } break; - case 106: // exp: VAR -#line 381 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 118: // exp: VAR { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; - } -#line 1381 "apr_parser.cc" - break; + } break; - case 107: // exp: IMMVAR -#line 382 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 119: // exp: IMMVAR { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; - } -#line 1387 "apr_parser.cc" - break; + } break; - case 108: // exp: INC VAR -#line 383 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 120: // exp: INC VAR { (yylhs.value.val) = ++((yystack_[0].value.tptr)->value.var); - } -#line 1393 "apr_parser.cc" - break; + } break; - case 109: // exp: DEC VAR -#line 384 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 121: // exp: DEC VAR { (yylhs.value.val) = --((yystack_[0].value.tptr)->value.var); - } -#line 1399 "apr_parser.cc" - break; + } break; - case 110: // exp: VAR INC -#line 385 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 122: // exp: VAR INC { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)++; - } -#line 1405 "apr_parser.cc" - break; + } break; - case 111: // exp: VAR DEC -#line 386 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 123: // exp: VAR DEC { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)--; - } -#line 1411 "apr_parser.cc" - break; + } break; - case 112: // exp: VAR EQUAL exp -#line 387 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 124: // exp: VAR EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); redefined_warning(aprepro, (yystack_[2].value.tptr)); - } -#line 1418 "apr_parser.cc" - break; + } break; - case 113: // exp: SVAR EQUAL exp -#line 389 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 125: // exp: SVAR EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); - } -#line 1426 "apr_parser.cc" - break; + } break; - case 114: // exp: AVAR EQUAL exp -#line 392 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 126: // exp: AVAR EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); aprepro.redefine_array((yystack_[2].value.tptr)->value.avar); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); redefined_warning(aprepro, (yystack_[2].value.tptr)); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); - } -#line 1436 "apr_parser.cc" - break; + } break; - case 115: // exp: VAR EQ_PLUS exp -#line 397 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 127: // exp: VAR EQ_PLUS exp { (yystack_[2].value.tptr)->value.var += (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; - } -#line 1442 "apr_parser.cc" - break; + } break; - case 116: // exp: VAR EQ_MINUS exp -#line 398 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 128: // exp: VAR EQ_MINUS exp { (yystack_[2].value.tptr)->value.var -= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; - } -#line 1448 "apr_parser.cc" - break; + } break; - case 117: // exp: VAR EQ_TIME exp -#line 399 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 129: // exp: VAR EQ_TIME exp { (yystack_[2].value.tptr)->value.var *= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; - } -#line 1454 "apr_parser.cc" - break; + } break; - case 118: // exp: VAR EQ_DIV exp -#line 400 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 130: // exp: VAR EQ_DIV exp { (yystack_[2].value.tptr)->value.var /= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; - } -#line 1460 "apr_parser.cc" - break; + } break; - case 119: // exp: VAR EQ_POW exp -#line 401 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 131: // exp: VAR EQ_POW exp { reset_error(); (yystack_[2].value.tptr)->value.var = std::pow((yystack_[2].value.tptr)->value.var, (yystack_[0].value.val)); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; SEAMS::math_error(aprepro, "Power"); - } -#line 1470 "apr_parser.cc" - break; + } break; - case 120: // exp: INC IMMVAR -#line 406 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 132: // exp: INC IMMVAR { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[0].value.tptr)); - } -#line 1476 "apr_parser.cc" - break; + } break; - case 121: // exp: DEC IMMVAR -#line 407 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 133: // exp: DEC IMMVAR { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[0].value.tptr)); - } -#line 1482 "apr_parser.cc" - break; + } break; - case 122: // exp: IMMVAR INC -#line 408 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 134: // exp: IMMVAR INC { (yylhs.value.val) = (yystack_[1].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[1].value.tptr)); - } -#line 1488 "apr_parser.cc" - break; + } break; - case 123: // exp: IMMVAR DEC -#line 409 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 135: // exp: IMMVAR DEC { (yylhs.value.val) = (yystack_[1].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[1].value.tptr)); - } -#line 1494 "apr_parser.cc" - break; + } break; - case 124: // exp: IMMVAR EQUAL exp -#line 410 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 136: // exp: IMMVAR EQUAL exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1500 "apr_parser.cc" - break; + } break; - case 125: // exp: IMMSVAR EQUAL exp -#line 411 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 137: // exp: IMMSVAR EQUAL exp { immutable_modify(aprepro, (yystack_[2].value.tptr)); YYERROR; - } -#line 1506 "apr_parser.cc" - break; + } break; - case 126: // exp: IMMVAR EQ_PLUS exp -#line 412 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 138: // exp: IMMVAR EQ_PLUS exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1512 "apr_parser.cc" - break; + } break; - case 127: // exp: IMMVAR EQ_MINUS exp -#line 413 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 139: // exp: IMMVAR EQ_MINUS exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1518 "apr_parser.cc" - break; + } break; - case 128: // exp: IMMVAR EQ_TIME exp -#line 414 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 140: // exp: IMMVAR EQ_TIME exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1524 "apr_parser.cc" - break; + } break; - case 129: // exp: IMMVAR EQ_DIV exp -#line 415 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 141: // exp: IMMVAR EQ_DIV exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1530 "apr_parser.cc" - break; + } break; - case 130: // exp: IMMVAR EQ_POW exp -#line 416 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 142: // exp: IMMVAR EQ_POW exp { (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; immutable_modify(aprepro, (yystack_[2].value.tptr)); - } -#line 1536 "apr_parser.cc" - break; + } break; - case 131: // exp: UNDVAR -#line 418 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 143: // exp: UNDVAR { (yylhs.value.val) = (yystack_[0].value.tptr)->value.var; undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 1543 "apr_parser.cc" - break; + } break; - case 132: // exp: INC UNDVAR -#line 420 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 144: // exp: INC UNDVAR { (yylhs.value.val) = ++((yystack_[0].value.tptr)->value.var); set_type(aprepro, (yystack_[0].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 1551 "apr_parser.cc" - break; + } break; - case 133: // exp: DEC UNDVAR -#line 423 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 145: // exp: DEC UNDVAR { (yylhs.value.val) = --((yystack_[0].value.tptr)->value.var); set_type(aprepro, (yystack_[0].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[0].value.tptr)->name); - } -#line 1559 "apr_parser.cc" - break; + } break; - case 134: // exp: UNDVAR INC -#line 426 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 146: // exp: UNDVAR INC { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)++; set_type(aprepro, (yystack_[1].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[1].value.tptr)->name); - } -#line 1567 "apr_parser.cc" - break; + } break; - case 135: // exp: UNDVAR DEC -#line 429 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 147: // exp: UNDVAR DEC { (yylhs.value.val) = ((yystack_[1].value.tptr)->value.var)--; set_type(aprepro, (yystack_[1].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[1].value.tptr)->name); - } -#line 1575 "apr_parser.cc" - break; + } break; - case 136: // exp: UNDVAR EQUAL exp -#line 432 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 148: // exp: UNDVAR EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); (yystack_[2].value.tptr)->value.var = (yystack_[0].value.val); set_type(aprepro, (yystack_[2].value.tptr), token::VAR); - } -#line 1582 "apr_parser.cc" - break; + } break; - case 137: // exp: UNDVAR EQ_PLUS exp -#line 434 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 149: // exp: UNDVAR EQ_PLUS exp { (yystack_[2].value.tptr)->value.var += (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 1590 "apr_parser.cc" - break; + } break; - case 138: // exp: UNDVAR EQ_MINUS exp -#line 437 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 150: // exp: UNDVAR EQ_MINUS exp { (yystack_[2].value.tptr)->value.var -= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 1598 "apr_parser.cc" - break; + } break; - case 139: // exp: UNDVAR EQ_TIME exp -#line 440 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 151: // exp: UNDVAR EQ_TIME exp { (yystack_[2].value.tptr)->value.var *= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 1606 "apr_parser.cc" - break; + } break; - case 140: // exp: UNDVAR EQ_DIV exp -#line 443 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 152: // exp: UNDVAR EQ_DIV exp { (yystack_[2].value.tptr)->value.var /= (yystack_[0].value.val); (yylhs.value.val) = (yystack_[2].value.tptr)->value.var; set_type(aprepro, (yystack_[2].value.tptr), token::VAR); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 1614 "apr_parser.cc" - break; + } break; - case 141: // exp: UNDVAR EQ_POW exp -#line 446 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 153: // exp: UNDVAR EQ_POW exp { reset_error(); (yystack_[2].value.tptr)->value.var = @@ -1859,24 +1525,18 @@ namespace SEAMS { set_type(aprepro, (yystack_[2].value.tptr), token::VAR); SEAMS::math_error(aprepro, "Power"); undefined_error(aprepro, (yystack_[2].value.tptr)->name); - } -#line 1625 "apr_parser.cc" - break; + } break; - case 142: // exp: FNCT LPAR RPAR -#line 453 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 154: // exp: FNCT LPAR RPAR { if (arg_check((yystack_[2].value.tptr), (yystack_[2].value.tptr)->value.fnctptr == NULL)) (yylhs.value.val) = (*((yystack_[2].value.tptr)->value.fnctptr))(); else (yylhs.value.val) = 0.0; - } -#line 1636 "apr_parser.cc" - break; + } break; - case 143: // exp: FNCT LPAR exp RPAR -#line 460 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 155: // exp: FNCT LPAR exp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.fnctptr_d == NULL)) @@ -1884,12 +1544,9 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.fnctptr_d))((yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1647 "apr_parser.cc" - break; + } break; - case 144: // exp: FNCT LPAR sexp RPAR -#line 467 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 156: // exp: FNCT LPAR sexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.fnctptr_c == NULL)) @@ -1897,12 +1554,9 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.fnctptr_c))((yystack_[1].value.string)); else (yylhs.value.val) = 0.0; - } -#line 1658 "apr_parser.cc" - break; + } break; - case 145: // exp: FNCT LPAR aexp RPAR -#line 474 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 157: // exp: FNCT LPAR aexp RPAR { if (arg_check((yystack_[3].value.tptr), (yystack_[3].value.tptr)->value.fnctptr_a == NULL)) @@ -1910,12 +1564,9 @@ namespace SEAMS { (*((yystack_[3].value.tptr)->value.fnctptr_a))((yystack_[1].value.arrval)); else (yylhs.value.val) = 0.0; - } -#line 1669 "apr_parser.cc" - break; + } break; - case 146: // exp: FNCT LPAR sexp COMMA exp RPAR -#line 481 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 158: // exp: FNCT LPAR sexp COMMA exp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.fnctptr_cd == NULL)) @@ -1923,12 +1574,9 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1680 "apr_parser.cc" - break; + } break; - case 147: // exp: FNCT LPAR exp COMMA sexp RPAR -#line 488 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 159: // exp: FNCT LPAR exp COMMA sexp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.fnctptr_dc == NULL)) @@ -1936,12 +1584,9 @@ namespace SEAMS { (yystack_[3].value.val), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; - } -#line 1691 "apr_parser.cc" - break; + } break; - case 148: // exp: FNCT LPAR sexp COMMA sexp RPAR -#line 495 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 160: // exp: FNCT LPAR sexp COMMA sexp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.fnctptr_cc == NULL)) @@ -1949,12 +1594,9 @@ namespace SEAMS { (yystack_[3].value.string), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; - } -#line 1702 "apr_parser.cc" - break; + } break; - case 149: // exp: FNCT LPAR sexp COMMA sexp COMMA sexp RPAR -#line 502 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 161: // exp: FNCT LPAR sexp COMMA sexp COMMA sexp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.fnctptr_ccc == NULL)) @@ -1963,12 +1605,9 @@ namespace SEAMS { (yystack_[1].value.string)); else yyerrok; - } -#line 1713 "apr_parser.cc" - break; + } break; - case 150: // exp: FNCT LPAR exp COMMA exp RPAR -#line 509 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 162: // exp: FNCT LPAR exp COMMA exp RPAR { if (arg_check((yystack_[5].value.tptr), (yystack_[5].value.tptr)->value.fnctptr_dd == NULL)) @@ -1976,12 +1615,9 @@ namespace SEAMS { (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1724 "apr_parser.cc" - break; + } break; - case 151: // exp: FNCT LPAR exp COMMA exp COMMA exp RPAR -#line 515 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 163: // exp: FNCT LPAR exp COMMA exp COMMA exp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.fnctptr_ddd == NULL)) @@ -1989,12 +1625,9 @@ namespace SEAMS { (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1735 "apr_parser.cc" - break; + } break; - case 152: // exp: FNCT LPAR sexp COMMA sexp COMMA exp RPAR -#line 521 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 164: // exp: FNCT LPAR sexp COMMA sexp COMMA exp RPAR { if (arg_check((yystack_[7].value.tptr), (yystack_[7].value.tptr)->value.fnctptr_ccd == NULL)) @@ -2002,12 +1635,9 @@ namespace SEAMS { (yystack_[5].value.string), (yystack_[3].value.string), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1746 "apr_parser.cc" - break; + } break; - case 153: // exp: FNCT LPAR exp COMMA exp SEMI exp COMMA exp RPAR -#line 527 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 165: // exp: FNCT LPAR exp COMMA exp SEMI exp COMMA exp RPAR { if (arg_check((yystack_[9].value.tptr), (yystack_[9].value.tptr)->value.fnctptr_dddd == NULL)) @@ -2016,12 +1646,9 @@ namespace SEAMS { (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1757 "apr_parser.cc" - break; + } break; - case 154: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp RPAR -#line 533 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 166: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp RPAR { if (arg_check((yystack_[9].value.tptr), (yystack_[9].value.tptr)->value.fnctptr_dddd == NULL)) @@ -2030,12 +1657,9 @@ namespace SEAMS { (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1768 "apr_parser.cc" - break; + } break; - case 155: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA sexp RPAR -#line 539 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 167: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA sexp RPAR { if (arg_check((yystack_[11].value.tptr), (yystack_[11].value.tptr)->value.fnctptr_ddddc == NULL)) @@ -2044,12 +1668,9 @@ namespace SEAMS { (yystack_[3].value.val), (yystack_[1].value.string)); else (yylhs.value.val) = 0.0; - } -#line 1779 "apr_parser.cc" - break; + } break; - case 156: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA exp COMMA exp RPAR -#line 545 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 168: // exp: FNCT LPAR exp COMMA exp COMMA exp COMMA exp COMMA exp COMMA exp RPAR { if (arg_check((yystack_[13].value.tptr), (yystack_[13].value.tptr)->value.fnctptr_dddddd == NULL)) @@ -2058,143 +1679,100 @@ namespace SEAMS { (yystack_[5].value.val), (yystack_[3].value.val), (yystack_[1].value.val)); else (yylhs.value.val) = 0.0; - } -#line 1790 "apr_parser.cc" - break; + } break; - case 157: // exp: exp PLU exp -#line 551 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 169: // exp: exp PLU exp { (yylhs.value.val) = (yystack_[2].value.val) + (yystack_[0].value.val); - } -#line 1796 "apr_parser.cc" - break; + } break; - case 158: // exp: exp SUB exp -#line 552 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 170: // exp: exp SUB exp { (yylhs.value.val) = (yystack_[2].value.val) - (yystack_[0].value.val); - } -#line 1802 "apr_parser.cc" - break; + } break; - case 159: // exp: exp TIM exp -#line 553 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 171: // exp: exp TIM exp { (yylhs.value.val) = (yystack_[2].value.val) * (yystack_[0].value.val); - } -#line 1808 "apr_parser.cc" - break; + } break; - case 160: // exp: exp DIV exp -#line 554 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 172: // exp: exp DIV exp { if ((yystack_[0].value.val) == 0.) { + (yylhs.value.val) = std::numeric_limits::infinity(); yyerror(aprepro, "Zero divisor"); yyerrok; } else (yylhs.value.val) = (yystack_[2].value.val) / (yystack_[0].value.val); - } -#line 1820 "apr_parser.cc" - break; + } break; - case 161: // exp: exp MOD exp -#line 561 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 173: // exp: exp MOD exp { if ((yystack_[0].value.val) == 0.) { + (yylhs.value.val) = (int)(yystack_[2].value.val); yyerror(aprepro, "Zero divisor"); yyerrok; } else (yylhs.value.val) = (int)(yystack_[2].value.val) % (int)(yystack_[0].value.val); - } -#line 1832 "apr_parser.cc" - break; + } break; - case 162: // exp: SUB exp -#line 568 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 174: // exp: SUB exp { (yylhs.value.val) = -(yystack_[0].value.val); - } -#line 1838 "apr_parser.cc" - break; + } break; - case 163: // exp: PLU exp -#line 569 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 175: // exp: PLU exp { (yylhs.value.val) = (yystack_[0].value.val); - } -#line 1844 "apr_parser.cc" - break; + } break; - case 164: // exp: exp POW exp -#line 570 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 176: // exp: exp POW exp { reset_error(); (yylhs.value.val) = std::pow((yystack_[2].value.val), (yystack_[0].value.val)); SEAMS::math_error(aprepro, "Power"); - } -#line 1852 "apr_parser.cc" - break; + } break; - case 165: // exp: LPAR exp RPAR -#line 573 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 177: // exp: LPAR exp RPAR { (yylhs.value.val) = (yystack_[1].value.val); - } -#line 1858 "apr_parser.cc" - break; + } break; - case 166: // exp: LBRACK exp RBRACK -#line 574 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 178: // exp: LBRACK exp RBRACK { reset_error(); (yylhs.value.val) = (double)((yystack_[1].value.val) < 0 ? -floor(-((yystack_[1].value.val))) : floor((yystack_[1].value.val))); SEAMS::math_error(aprepro, "floor (int)"); - } -#line 1866 "apr_parser.cc" - break; + } break; - case 167: // exp: bool -#line 577 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 179: // exp: bool { (yylhs.value.val) = ((yystack_[0].value.val)) ? 1 : 0; - } -#line 1872 "apr_parser.cc" - break; + } break; - case 168: // exp: bool QUEST exp COLON exp -#line 578 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 180: // exp: bool QUEST exp COLON exp { (yylhs.value.val) = ((yystack_[4].value.val)) ? ((yystack_[2].value.val)) : ((yystack_[0].value.val)); - } -#line 1878 "apr_parser.cc" - break; + } break; - case 169: // exp: AVAR LBRACK exp RBRACK -#line 579 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 181: // exp: AVAR LBRACK exp RBRACK { (yylhs.value.val) = array_value((yystack_[3].value.tptr)->value.avar, (yystack_[1].value.val), 0); - } -#line 1884 "apr_parser.cc" - break; + } break; - case 170: // exp: AVAR LBRACK exp COMMA exp RBRACK -#line 580 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 182: // exp: AVAR LBRACK exp COMMA exp RBRACK { (yylhs.value.val) = array_value((yystack_[5].value.tptr)->value.avar, (yystack_[3].value.val), (yystack_[1].value.val)); - } -#line 1890 "apr_parser.cc" - break; + } break; - case 171: // exp: AVAR LBRACK exp RBRACK EQUAL exp -#line 582 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 183: // exp: AVAR LBRACK exp RBRACK EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); array *arr = (yystack_[5].value.tptr)->value.avar; @@ -2216,12 +1794,9 @@ namespace SEAMS { yyerror(aprepro, "Row or Column index out of range"); yyerrok; } - } -#line 1916 "apr_parser.cc" - break; + } break; - case 172: // exp: AVAR LBRACK exp COMMA exp RBRACK EQUAL exp -#line 604 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" + case 184: // exp: AVAR LBRACK exp COMMA exp RBRACK EQUAL exp { (yylhs.value.val) = (yystack_[0].value.val); array *arr = (yystack_[7].value.tptr)->value.avar; @@ -2241,11 +1816,7 @@ namespace SEAMS { yyerror(aprepro, "Row or Column index out of range"); yyerrok; } - } -#line 1940 "apr_parser.cc" - break; - -#line 1944 "apr_parser.cc" + } break; default: break; } @@ -2272,6 +1843,7 @@ namespace SEAMS { yyerrlab: // If not already recovering from an error, report this error. if (!yyerrstatus_) { + ++yynerrs_; context yyctx(*this, yyla); std::string msg = yysyntax_error_(yyctx); error(YY_MOVE(msg)); @@ -2547,197 +2119,180 @@ namespace SEAMS { const signed char Parser::yytable_ninf_ = -1; const short Parser::yypact_[] = { - -25, 22, -25, -18, 209, -25, -25, -25, -25, -25, 1629, 163, -8, 211, -5, - 154, 6, 51, 58, 471, 471, -25, 471, 426, 471, -2, 379, 71, 80, 1560, - 1665, 426, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, - -25, -25, 426, 471, 471, 471, 471, 471, -25, -25, 426, 471, 471, 471, 471, - 471, 471, -25, -25, 471, 471, 426, 354, 411, 426, 1647, 326, 20, 181, 471, - 120, 343, 1348, 1580, 14, -25, 14, 14, -25, -25, -25, -25, -25, -25, -25, - -25, 471, 486, 531, -25, 426, 426, 471, 426, -25, 546, 591, 606, 651, 666, - 711, 471, -25, 726, 771, 786, 831, 846, 891, 906, 951, 471, 471, 471, 426, - 471, 471, 44, 343, 1698, 1714, 1714, 1714, 1714, 1714, 55, 1745, -25, 1759, 50, - 367, 50, 367, 50, 367, 50, 367, 50, 367, 50, 367, 44, 343, 1698, 1714, - 1714, 1714, 1714, 1714, 44, 343, 1698, 343, 1714, 1714, 1714, 1714, 1714, 1714, 343, - 1714, 1083, 44, 343, 1698, -25, 87, 254, 1113, -25, 167, 264, 1143, 279, 292, - 1173, 471, 471, 471, 471, 14, -25, -25, 471, -25, -24, 1682, 1647, 55, 1745, - 1647, -25, 1759, 9, 1698, 9, 1730, -25, 1730, 1647, 50, 1714, 1647, 50, 1647, - 50, 1647, 50, 1647, 50, 1647, 50, -25, 1647, 55, 1745, 1647, -25, 1759, 1647, - 367, 1647, 367, 1647, 367, 1647, 367, 1647, 367, 1647, 367, 27, 27, 14, -25, - 14, 14, 14, 471, 101, -25, 471, -25, 471, -25, -25, 471, -25, 471, -25, - -25, 471, -25, 471, -25, 1714, 1714, 1714, 1714, 14, 471, 471, 1605, 471, 967, - 1375, 42, 1054, 977, 937, 1402, 108, 1429, 1203, 343, 1714, 117, 1714, 471, -25, - -25, -25, 471, -25, 471, 471, -25, 471, -25, -25, -25, 471, -25, 471, 133, - 1456, 1233, 1292, 298, 1002, 1483, 1714, -25, -25, 471, -25, 471, -25, 471, -25, - -25, 1263, 1510, 994, 471, -25, -25, 471, 1024, 1321, 1030, -25, 471, -25, 1537, - -25}; + -25, 22, -25, -13, 224, -25, -25, -25, -25, -25, 1649, -21, -8, 306, -5, + 68, 6, 27, 44, 380, 380, -25, 380, 445, 380, 122, 252, 38, 176, 47, + 1685, 445, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, + -25, -25, 445, 380, 380, 380, 380, 380, -25, -25, 445, 380, 380, 380, 380, + 380, 380, -25, -25, 380, 380, 445, 333, 400, 445, 1667, 979, 56, 165, 380, + 160, -24, 1386, 1600, 4, -25, 4, 4, -25, -25, -25, -25, -25, -25, -25, + -25, 380, 460, 505, -25, 445, 445, 380, 445, -25, 520, 565, 580, 625, 640, + 685, 380, -25, 700, 745, 760, 805, 820, 865, 880, 925, 380, 380, 380, 445, + 380, 380, 262, -24, 1735, 1751, 1751, 1751, 1751, 1751, 55, 1782, -25, 1796, 70, + 208, 70, 208, 70, 208, 70, 208, 70, 208, 70, 208, 262, -24, 1735, 1751, + 1751, 1751, 1751, 1751, 262, -24, 1735, -24, 1751, 1751, 1751, 1751, 1751, 1751, -24, + 1751, 1121, 262, -24, 1735, -25, 34, 251, 1151, -25, 120, 276, 1181, 130, 941, + 1211, 380, 380, 380, 380, 4, -25, -25, 380, -25, 1699, 1719, 1667, 55, 1782, + 1667, -25, 1796, 93, 1735, 93, 1767, -25, 1767, 1667, 70, 208, 1667, 70, 208, + 1667, 70, 208, 1667, 70, 208, 1667, 70, 208, 1667, 70, 208, -25, 1751, 1667, + 55, 1782, 1667, -25, 1796, 1667, 70, 208, 1667, 70, 208, 1667, 70, 208, 1667, + 70, 208, 1667, 70, 208, 1667, 70, 208, 110, 110, 4, -25, 4, 4, 4, + 380, 104, -25, 380, -25, 380, -25, -25, 380, -25, 380, -25, -25, 380, -25, + 380, -25, 1751, 1751, 1751, 1751, 4, 380, 380, 1625, 380, 951, 1413, 87, 1092, + 976, 911, 1440, 1012, 1467, 1241, -24, 1751, 121, 1751, 380, -25, -25, -25, 380, + -25, 380, 380, -25, 380, -25, -25, -25, 380, -25, 380, 1034, 1494, 1271, 1330, + 1040, 982, 1521, 1751, -25, -25, 380, -25, 380, -25, 380, -25, -25, 1301, 1548, + 1006, 380, -25, -25, 380, 1062, 1359, 1068, -25, 380, -25, 1575, -25}; const unsigned char Parser::yydefact_[] = { - 2, 0, 1, 0, 0, 4, 3, 9, 103, 83, 131, 106, 84, 107, 85, 64, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 110, 111, 0, 0, - 0, 0, 0, 0, 0, 122, 123, 0, 0, 0, 0, 0, 0, 131, 106, 84, 0, 0, 167, - 0, 0, 0, 163, 77, 162, 12, 104, 132, 108, 120, 105, 133, 109, 121, 0, 0, 0, 7, + 2, 0, 1, 0, 0, 4, 3, 9, 115, 95, 143, 118, 96, 119, 97, 76, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 146, 147, 0, 0, 0, 0, 0, 0, 122, 123, 0, 0, + 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, 0, 0, 0, 143, 118, 96, 0, 0, 179, + 0, 0, 0, 175, 89, 174, 12, 116, 144, 120, 132, 117, 145, 121, 133, 0, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 86, 136, 137, 138, 139, 140, 141, 32, 26, 33, - 27, 40, 52, 41, 53, 42, 54, 43, 55, 44, 56, 45, 57, 73, 88, 112, 115, 116, 117, - 118, 119, 72, 87, 113, 91, 124, 126, 127, 128, 129, 130, 90, 125, 0, 74, 89, 114, 142, - 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 25, 165, 0, 166, - 0, 0, 30, 19, 21, 31, 20, 22, 76, 0, 78, 80, 82, 79, 46, 34, 0, 47, 35, - 48, 36, 49, 37, 50, 38, 51, 39, 96, 28, 23, 17, 29, 24, 18, 58, 10, 59, 11, - 60, 13, 61, 14, 62, 15, 63, 16, 157, 158, 160, 81, 159, 161, 164, 0, 169, 145, 0, - 144, 0, 143, 95, 0, 92, 0, 94, 71, 0, 65, 0, 70, 136, 112, 113, 114, 159, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 168, 170, 171, 0, 148, - 146, 147, 0, 150, 0, 0, 101, 0, 97, 67, 66, 0, 69, 0, 0, 0, 0, 0, 0, - 0, 0, 172, 149, 152, 0, 151, 0, 100, 0, 99, 68, 0, 0, 0, 0, 154, 153, 0, - 0, 0, 0, 155, 0, 98, 0, 156}; - - const signed char Parser::yypgoto_[] = {-25, -25, -25, -12, 106, 91, -4}; - - const unsigned char Parser::yydefgoto_[] = {0, 1, 6, 27, 28, 76, 206}; + 0, 0, 0, 0, 0, 0, 0, 0, 87, 98, 148, 149, 150, 151, 152, 153, 32, 26, 33, + 27, 52, 64, 53, 65, 54, 66, 55, 67, 56, 68, 57, 69, 85, 100, 124, 127, 128, 129, + 130, 131, 84, 99, 125, 103, 136, 138, 139, 140, 141, 142, 102, 137, 0, 86, 101, 126, 154, + 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 25, 177, 0, 178, + 0, 0, 30, 19, 21, 31, 20, 22, 88, 0, 90, 92, 94, 91, 58, 34, 46, 59, 35, + 47, 60, 36, 48, 61, 37, 49, 62, 38, 50, 63, 39, 51, 108, 0, 28, 23, 17, 29, + 24, 18, 70, 40, 10, 71, 41, 11, 72, 42, 13, 73, 43, 14, 74, 44, 15, 75, 45, + 16, 169, 170, 172, 93, 171, 173, 176, 0, 181, 157, 0, 156, 0, 155, 107, 0, 104, 0, + 106, 83, 0, 77, 0, 82, 148, 124, 125, 126, 171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 180, 182, 183, 0, 160, 158, 159, 0, 162, 0, 0, 113, + 0, 109, 79, 78, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 184, 161, 164, 0, 163, + 0, 112, 0, 111, 80, 0, 0, 0, 0, 166, 165, 0, 0, 0, 0, 167, 0, 110, 0, + 168}; + + const signed char Parser::yypgoto_[] = {-25, -25, -25, 39, 126, 98, -4}; + + const unsigned char Parser::yydefgoto_[] = {0, 1, 6, 27, 28, 76, 223}; const short Parser::yytable_[] = { - 30, 83, 7, 84, 85, 265, 86, 75, 100, 101, 102, 103, 104, 105, 55, 77, 78, 64, - 79, 81, 82, 67, 2, 3, 106, 130, 132, 124, 125, 126, 127, 128, 129, 131, 133, 135, - 137, 139, 141, 143, 145, 4, 183, 148, 149, 150, 151, 152, 153, 97, 98, 156, 158, 159, - 160, 161, 162, 163, 286, 121, 165, 166, 169, 173, 177, 180, 68, 118, 188, 120, 185, 5, - 121, 69, 100, 101, 102, 103, 104, 105, 193, 196, 95, 96, 97, 98, 93, 191, 194, 197, - 106, 199, 199, 201, 203, 29, 219, 222, 106, 91, 94, 92, 93, 245, 220, 223, 225, 227, - 229, 231, 233, 235, 236, 237, 238, 240, 241, 242, 95, 96, 97, 98, 123, 268, 294, 95, - 96, 97, 98, 80, 134, 136, 138, 140, 142, 144, 186, 122, 147, 298, 100, 101, 102, 103, - 104, 105, 155, 157, 91, 307, 92, 93, 0, 146, 0, 164, 106, 168, 172, 176, 179, 154, - 0, 0, 0, 100, 101, 102, 103, 104, 105, 65, 167, 171, 175, 178, 66, 260, 261, 262, - 263, 106, 190, 250, 264, 47, 48, 49, 50, 51, 52, 205, 208, 210, 212, 214, 216, 217, - 65, 0, 0, 198, 200, 184, 202, 95, 96, 97, 98, 53, 54, 0, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 0, 19, 239, 20, 0, 0, 21, 0, 0, 0, 56, - 57, 58, 59, 60, 61, 267, 0, 0, 270, 0, 272, 0, 0, 22, 23, 275, 0, 0, - 277, 24, 278, 25, 26, 62, 63, 0, 0, 0, 280, 0, 282, 0, 0, 0, 246, 0, - 247, 0, 123, 147, 155, 168, 0, 0, 251, 300, 252, 0, 0, 301, 0, 302, 100, 101, - 102, 103, 104, 105, 305, 0, 306, 255, 100, 101, 102, 103, 104, 105, 106, 0, 0, 316, - 256, 317, 257, 0, 0, 0, 106, 0, 312, 324, 0, 95, 96, 97, 98, 0, 0, 329, - 100, 101, 102, 103, 104, 105, 100, 101, 102, 103, 104, 105, 0, 269, 0, 271, 106, 0, - 273, 0, 274, 0, 106, 276, 182, 48, 49, 50, 51, 52, 0, 0, 279, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 170, 20, 53, 54, 299, 100, 101, 102, - 103, 104, 105, 303, 87, 304, 88, 89, 0, 90, 0, 0, 0, 106, 22, 23, 0, 0, - 0, 0, 24, 0, 25, 26, 0, 0, 318, 116, 117, 118, 188, 120, 323, 0, 121, 325, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 174, 20, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, - 23, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 23, 0, 0, - 0, 0, 24, 0, 25, 26, 8, 9, 70, 71, 72, 13, 14, 73, 16, 17, 0, 0, - 19, 0, 20, 8, 9, 192, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, - 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, - 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 195, 71, 72, 13, - 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 204, 71, 72, 13, 14, 73, 16, - 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, - 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, - 8, 9, 207, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 209, - 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, - 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, - 0, 0, 24, 0, 25, 26, 8, 9, 211, 71, 72, 13, 14, 73, 16, 17, 0, 0, - 19, 0, 20, 8, 9, 213, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, - 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, - 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 215, 71, 72, 13, - 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 218, 71, 72, 13, 14, 73, 16, - 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, - 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, - 8, 9, 221, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 224, - 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, - 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, - 0, 0, 24, 0, 25, 26, 8, 9, 226, 71, 72, 13, 14, 73, 16, 17, 0, 0, - 19, 0, 20, 8, 9, 228, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, - 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, - 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 230, 71, 72, 13, - 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 232, 71, 72, 13, 14, 73, 16, - 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, - 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 292, 25, 26, - 8, 9, 234, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 100, 101, 102, - 103, 104, 105, 0, 0, 0, 0, 0, 0, 283, 0, 284, 0, 106, 0, 0, 0, 22, - 74, 290, 0, 291, 0, 24, 0, 25, 26, 100, 101, 102, 103, 104, 105, 0, 0, 0, - 322, 100, 101, 102, 103, 104, 105, 106, 313, 0, 314, 0, 0, 0, 0, 0, 0, 106, - 100, 101, 102, 103, 104, 105, 0, 0, 100, 101, 102, 103, 104, 105, 326, 0, 106, 0, - 0, 0, 328, 0, 0, 0, 106, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, - 100, 101, 102, 103, 104, 105, 287, 0, 288, 0, 106, 0, 0, 289, 0, 0, 106, 0, - 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 243, - 0, 121, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 248, 121, 249, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 0, 253, 121, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 258, - 121, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 296, 121, 297, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 188, 120, 0, 309, 121, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 319, - 121, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 311, 0, 121, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 188, 120, 327, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 187, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 188, 120, 285, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 293, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 188, 120, 295, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 308, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 188, 120, 315, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 321, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 188, 120, 330, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 99, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 188, 120, 281, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 31, 32, 33, 34, 35, - 36, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 181, 32, 33, 34, 35, - 36, 45, 46, 37, 38, 39, 40, 41, 42, 43, 44, 107, 0, 0, 0, 0, 0, 0, - 0, 45, 46, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, - 121, 266, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 121, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 108, 109, 110, 111, - 112, 113, 114, 115, 0, 0, 0, 0, 120, 0, 0, 121, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 188, 120, 0, 0, 121, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 188, 120, 0, 0, 121}; + 30, 47, 48, 49, 50, 51, 52, 7, 100, 101, 102, 103, 104, 105, 55, 77, 78, 64, 79, + 81, 82, 67, 2, 3, 106, 53, 54, 124, 125, 126, 127, 128, 129, 131, 133, 135, 137, 139, + 141, 143, 145, 4, 68, 148, 149, 150, 151, 152, 153, 121, 257, 156, 158, 159, 160, 161, 162, + 163, 75, 69, 165, 166, 169, 173, 177, 180, 91, 99, 92, 93, 185, 5, 95, 96, 97, 98, + 130, 132, 183, 100, 101, 102, 103, 104, 105, 65, 93, 191, 194, 197, 66, 199, 199, 201, 203, + 106, 206, 209, 212, 215, 218, 221, 29, 298, 226, 229, 232, 235, 238, 241, 244, 247, 248, 249, + 250, 252, 253, 254, 106, 100, 101, 102, 103, 104, 105, 83, 280, 84, 85, 123, 86, 193, 196, + 97, 98, 106, 262, 134, 136, 138, 140, 142, 144, 310, 0, 147, 267, 225, 228, 80, 118, 188, + 120, 155, 157, 121, 0, 122, 95, 96, 97, 98, 164, 0, 168, 172, 176, 179, 95, 96, 97, + 98, 0, 146, 0, 0, 186, 272, 273, 274, 275, 154, 65, 0, 276, 0, 0, 184, 91, 190, + 92, 93, 167, 171, 175, 178, 94, 0, 205, 208, 211, 214, 217, 220, 222, 0, 0, 0, 231, + 234, 237, 240, 243, 246, 95, 96, 97, 98, 0, 0, 0, 198, 200, 0, 202, 0, 0, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 0, 20, 0, 0, 21, 251, 116, + 117, 118, 188, 120, 279, 0, 121, 282, 87, 284, 88, 89, 0, 90, 287, 22, 23, 289, 258, + 290, 259, 24, 0, 25, 26, 0, 0, 292, 0, 294, 0, 0, 123, 147, 155, 168, 100, 101, + 102, 103, 104, 105, 0, 263, 312, 264, 0, 0, 313, 0, 314, 0, 106, 95, 96, 97, 98, + 317, 0, 318, 0, 100, 101, 102, 103, 104, 105, 0, 0, 0, 328, 0, 329, 0, 0, 0, + 0, 106, 0, 0, 336, 56, 57, 58, 59, 60, 61, 0, 341, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 0, 19, 170, 20, 0, 62, 63, 0, 0, 281, 0, 283, 0, 0, + 285, 0, 286, 0, 0, 288, 0, 0, 0, 0, 22, 23, 0, 0, 291, 0, 24, 0, 25, + 26, 0, 0, 8, 9, 70, 71, 72, 13, 14, 73, 16, 17, 311, 0, 19, 0, 20, 0, + 0, 315, 0, 316, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 19, 174, 20, + 22, 74, 0, 0, 0, 330, 24, 0, 25, 26, 0, 335, 0, 0, 337, 0, 0, 0, 0, + 0, 22, 23, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 0, 19, 0, 20, 8, 9, 192, 71, 72, 13, 14, 73, 16, 17, 0, 0, + 19, 0, 20, 0, 0, 0, 0, 0, 22, 23, 0, 0, 0, 0, 24, 0, 25, 26, 0, + 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 195, 71, 72, + 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 204, 71, 72, 13, 14, 73, 16, + 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, + 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, + 207, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 210, 71, 72, 13, + 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, + 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, + 26, 8, 9, 213, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 216, + 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, + 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, + 24, 0, 25, 26, 8, 9, 219, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, + 8, 9, 224, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, 0, 0, 0, + 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, 22, 74, 0, + 0, 0, 0, 24, 0, 25, 26, 8, 9, 227, 71, 72, 13, 14, 73, 16, 17, 0, 0, + 19, 0, 20, 8, 9, 230, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 0, + 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, 0, 0, 0, + 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 233, 71, 72, 13, 14, 73, 16, + 17, 0, 0, 19, 0, 20, 8, 9, 236, 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, + 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 0, 0, + 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, 26, 8, 9, 239, 71, 72, 13, + 14, 73, 16, 17, 0, 0, 19, 0, 20, 8, 9, 242, 71, 72, 13, 14, 73, 16, 17, + 0, 0, 19, 0, 20, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 0, 25, + 26, 0, 0, 0, 0, 0, 22, 74, 0, 0, 0, 0, 24, 304, 25, 26, 8, 9, 245, + 71, 72, 13, 14, 73, 16, 17, 0, 0, 19, 0, 20, 100, 101, 102, 103, 104, 105, 0, + 0, 0, 0, 0, 0, 268, 0, 269, 0, 106, 0, 0, 0, 22, 74, 295, 0, 296, 0, + 24, 0, 25, 26, 100, 101, 102, 103, 104, 105, 0, 0, 0, 0, 100, 101, 102, 103, 104, + 105, 106, 302, 0, 303, 0, 0, 0, 325, 0, 326, 106, 0, 182, 48, 49, 50, 51, 52, + 0, 100, 101, 102, 103, 104, 105, 100, 101, 102, 103, 104, 105, 334, 0, 0, 0, 106, 53, + 54, 0, 306, 0, 106, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 100, + 101, 102, 103, 104, 105, 319, 0, 0, 0, 106, 0, 324, 0, 0, 0, 106, 0, 0, 0, + 0, 0, 100, 101, 102, 103, 104, 105, 100, 101, 102, 103, 104, 105, 338, 0, 0, 0, 106, + 0, 340, 0, 0, 0, 106, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 100, 101, + 102, 103, 104, 105, 299, 0, 300, 0, 106, 0, 0, 301, 0, 0, 106, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 255, 0, 121, 0, 256, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 0, 260, 121, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 265, 121, + 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 0, 270, 121, 271, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 0, 308, 121, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 321, 121, 322, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 188, 120, 0, 331, 121, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 323, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 188, 120, 339, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 187, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 188, 120, 297, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 305, 0, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, + 120, 307, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 188, 120, 320, 0, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 327, 0, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 188, 120, 333, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 342, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 188, 120, 189, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 188, 120, 293, 0, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 31, + 32, 33, 34, 35, 36, 0, 0, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 181, 32, + 33, 34, 35, 36, 45, 46, 37, 38, 39, 40, 41, 42, 43, 44, 107, 0, 0, 0, 0, + 0, 0, 0, 45, 46, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 277, + 0, 121, 100, 101, 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 278, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 121, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121, 108, 109, 110, 111, 112, 113, 114, 115, + 0, 0, 0, 0, 120, 0, 0, 121, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, + 120, 0, 0, 121, 110, 111, 112, 113, 114, 115, 116, 117, 118, 188, 120, 0, 0, 121}; const short Parser::yycheck_[] = { - 4, 3, 20, 5, 6, 29, 8, 19, 32, 33, 34, 35, 36, 37, 22, 19, 20, 22, 22, - 23, 24, 15, 0, 1, 48, 37, 38, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 19, 22, 47, 48, 49, 50, 51, 52, 40, 41, 55, 56, 57, 58, 59, 60, - 61, 16, 45, 64, 65, 66, 67, 68, 69, 15, 40, 41, 42, 74, 49, 45, 15, 32, 33, - 34, 35, 36, 37, 92, 93, 38, 39, 40, 41, 31, 91, 92, 93, 48, 95, 96, 97, 98, - 4, 108, 109, 48, 28, 20, 30, 31, 16, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 38, 39, 40, 41, 31, 22, 16, 38, 39, 40, 41, 23, 39, 40, 41, - 42, 43, 44, 16, 31, 47, 22, 32, 33, 34, 35, 36, 37, 55, 56, 28, 16, 30, 31, - -1, 47, -1, 64, 48, 66, 67, 68, 69, 55, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 17, 66, 67, 68, 69, 22, 181, 182, 183, 184, 48, 91, 16, 188, 22, 23, 24, 25, 26, - 27, 100, 101, 102, 103, 104, 105, 106, 17, -1, -1, 95, 96, 22, 98, 38, 39, 40, 41, - 46, 47, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 119, 17, -1, - -1, 20, -1, -1, -1, 22, 23, 24, 25, 26, 27, 243, -1, -1, 246, -1, 248, -1, -1, - 38, 39, 253, -1, -1, 256, 44, 258, 46, 47, 46, 47, -1, -1, -1, 266, -1, 268, -1, - -1, -1, 14, -1, 16, -1, 181, 182, 183, 184, -1, -1, 14, 283, 16, -1, -1, 287, -1, - 289, 32, 33, 34, 35, 36, 37, 296, -1, 298, 16, 32, 33, 34, 35, 36, 37, 48, -1, - -1, 309, 14, 311, 16, -1, -1, -1, 48, -1, 16, 319, -1, 38, 39, 40, 41, -1, -1, - 327, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, -1, 246, -1, 248, 48, -1, - 251, -1, 253, -1, 48, 256, 22, 23, 24, 25, 26, 27, -1, -1, 265, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 46, 47, 283, 32, 33, 34, 35, 36, - 37, 290, 3, 292, 5, 6, -1, 8, -1, -1, -1, 48, 38, 39, -1, -1, -1, -1, 44, - -1, 46, 47, -1, -1, 313, 38, 39, 40, 41, 42, 319, -1, 45, 322, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, - -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, - -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, - 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, - 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, - -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, - 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, - -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, - -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, - -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, + 4, 22, 23, 24, 25, 26, 27, 20, 32, 33, 34, 35, 36, 37, 22, 19, 20, 22, 22, + 23, 24, 15, 0, 1, 48, 46, 47, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 19, 15, 47, 48, 49, 50, 51, 52, 45, 16, 55, 56, 57, 58, 59, 60, + 61, 19, 15, 64, 65, 66, 67, 68, 69, 28, 20, 30, 31, 74, 49, 38, 39, 40, 41, + 37, 38, 22, 32, 33, 34, 35, 36, 37, 17, 31, 91, 92, 93, 22, 95, 96, 97, 98, + 48, 100, 101, 102, 103, 104, 105, 4, 16, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 48, 32, 33, 34, 35, 36, 37, 3, 22, 5, 6, 31, 8, 92, 93, + 40, 41, 48, 16, 39, 40, 41, 42, 43, 44, 22, -1, 47, 16, 108, 109, 23, 40, 41, + 42, 55, 56, 45, -1, 31, 38, 39, 40, 41, 64, -1, 66, 67, 68, 69, 38, 39, 40, + 41, -1, 47, -1, -1, 16, 181, 182, 183, 184, 55, 17, -1, 188, -1, -1, 22, 28, 91, + 30, 31, 66, 67, 68, 69, 20, -1, 100, 101, 102, 103, 104, 105, 106, -1, -1, -1, 110, + 111, 112, 113, 114, 115, 38, 39, 40, 41, -1, -1, -1, 95, 96, -1, 98, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, -1, 17, -1, -1, 20, 119, 38, + 39, 40, 41, 42, 255, -1, 45, 258, 3, 260, 5, 6, -1, 8, 265, 38, 39, 268, 14, + 270, 16, 44, -1, 46, 47, -1, -1, 278, -1, 280, -1, -1, 181, 182, 183, 184, 32, 33, + 34, 35, 36, 37, -1, 14, 295, 16, -1, -1, 299, -1, 301, -1, 48, 38, 39, 40, 41, + 308, -1, 310, -1, 32, 33, 34, 35, 36, 37, -1, -1, -1, 321, -1, 323, -1, -1, -1, + -1, 48, -1, -1, 331, 22, 23, 24, 25, 26, 27, -1, 339, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, -1, 15, 16, 17, -1, 46, 47, -1, -1, 258, -1, 260, -1, -1, + 263, -1, 265, -1, -1, 268, -1, -1, -1, -1, 38, 39, -1, -1, 277, -1, 44, -1, 46, + 47, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 295, -1, 15, -1, 17, -1, + -1, 302, -1, 304, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, + 38, 39, -1, -1, -1, 325, 44, -1, 46, 47, -1, 331, -1, -1, 334, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, + 11, 12, 13, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -2749,11 +2304,27 @@ namespace SEAMS { 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, - 44, 14, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, - 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, 14, -1, 16, -1, 48, -1, -1, - -1, 38, 39, 14, -1, 16, -1, 44, -1, 46, 47, 32, 33, 34, 35, 36, 37, -1, -1, - -1, 14, 32, 33, 34, 35, 36, 37, 48, 14, -1, 16, -1, -1, -1, -1, -1, -1, 48, - 32, 33, 34, 35, 36, 37, -1, -1, 32, 33, 34, 35, 36, 37, 16, -1, 48, -1, -1, + 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, -1, -1, -1, + -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, 38, 39, -1, + -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, -1, + -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, + 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, + -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, -1, -1, + -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, 47, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, 17, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, -1, 46, + 47, -1, -1, -1, -1, -1, 38, 39, -1, -1, -1, -1, 44, 14, 46, 47, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, 17, 32, 33, 34, 35, 36, 37, -1, + -1, -1, -1, -1, -1, 14, -1, 16, -1, 48, -1, -1, -1, 38, 39, 14, -1, 16, -1, + 44, -1, 46, 47, 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, 32, 33, 34, 35, 36, + 37, 48, 14, -1, 16, -1, -1, -1, 14, -1, 16, 48, -1, 22, 23, 24, 25, 26, 27, + -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 14, -1, -1, -1, 48, 46, + 47, -1, 16, -1, 48, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, + 33, 34, 35, 36, 37, 16, -1, -1, -1, 48, -1, 16, -1, -1, -1, 48, -1, -1, -1, + -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 16, -1, -1, -1, 48, -1, 16, -1, -1, -1, 48, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 32, 33, 34, 35, 36, 37, 14, -1, 16, -1, 48, -1, -1, 21, -1, -1, 48, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 14, -1, 45, -1, 18, @@ -2782,18 +2353,18 @@ namespace SEAMS { 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 20, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, - 36, 37, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 22, 23, - 24, 25, 26, 27, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, 22, 23, 24, - 25, 26, 27, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 20, -1, -1, -1, -1, -1, - -1, -1, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, - 45, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, 35, 36, - 37, -1, -1, -1, -1, 42, -1, -1, 45, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, -1, -1, 45, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45}; + 40, 41, 42, 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 18, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 22, + 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, 22, 23, + 24, 25, 26, 27, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 20, -1, -1, -1, -1, + -1, -1, -1, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 29, + -1, 45, 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, 42, -1, -1, 45, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, -1, -1, 45, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -1, -1, 45}; const signed char Parser::yystos_[] = { 0, 51, 0, 1, 19, 49, 52, 20, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 17, 20, 38, @@ -2805,30 +2376,32 @@ namespace SEAMS { 55, 56, 55, 56, 55, 56, 55, 56, 54, 55, 56, 56, 56, 56, 56, 56, 54, 55, 56, 55, 56, 56, 56, 56, 56, 56, 55, 56, 56, 54, 55, 56, 16, 54, 55, 56, 16, 54, 55, 56, 54, 55, 56, 22, 22, 22, 22, 56, 16, 16, 41, 18, 55, 56, 5, 53, 56, 5, 53, 56, 54, 56, 54, 56, 54, 56, 5, 55, 56, - 5, 55, 5, 55, 5, 55, 5, 55, 5, 55, 55, 5, 53, 56, 5, 53, 56, 5, 56, 5, 56, 5, 56, - 5, 56, 5, 56, 5, 56, 56, 56, 56, 54, 56, 56, 56, 14, 18, 16, 14, 16, 14, 16, 16, 14, 16, - 14, 16, 16, 14, 16, 14, 16, 56, 56, 56, 56, 56, 29, 29, 56, 22, 55, 56, 55, 56, 55, 55, 56, - 55, 56, 56, 55, 56, 18, 56, 14, 16, 16, 16, 14, 16, 21, 14, 16, 14, 16, 16, 16, 14, 16, 22, - 55, 56, 56, 56, 55, 55, 56, 56, 16, 16, 14, 16, 14, 16, 14, 16, 16, 56, 56, 55, 14, 16, 16, - 14, 55, 56, 55, 16, 14, 16, 56, 16}; + 5, 55, 56, 5, 55, 56, 5, 55, 56, 5, 55, 56, 5, 55, 56, 55, 56, 5, 53, 56, 5, 53, 56, + 5, 55, 56, 5, 55, 56, 5, 55, 56, 5, 55, 56, 5, 55, 56, 5, 55, 56, 56, 56, 56, 54, 56, + 56, 56, 14, 18, 16, 14, 16, 14, 16, 16, 14, 16, 14, 16, 16, 14, 16, 14, 16, 56, 56, 56, 56, + 56, 29, 29, 56, 22, 55, 56, 55, 56, 55, 55, 56, 55, 56, 56, 55, 56, 18, 56, 14, 16, 16, 16, + 14, 16, 21, 14, 16, 14, 16, 16, 16, 14, 16, 22, 55, 56, 56, 56, 55, 55, 56, 56, 16, 16, 14, + 16, 14, 16, 14, 16, 16, 56, 56, 55, 14, 16, 16, 14, 55, 56, 55, 16, 14, 16, 56, 16}; const signed char Parser::yyr1_[] = { - 0, 50, 51, 51, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}; + 0, 50, 51, 51, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}; const signed char Parser::yyr2_[] = { - 0, 2, 0, 2, 1, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 4, 6, 6, 8, 6, 4, 4, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 1, 1, 1, 3, - 3, 3, 3, 3, 3, 4, 3, 4, 4, 3, 6, 12, 8, 8, 6, 5, 1, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, - 4, 6, 6, 6, 8, 6, 8, 8, 10, 10, 12, 14, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 1, 5, 4, 6, 6, 8}; + 0, 2, 0, 2, 1, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 6, 6, 8, + 6, 4, 4, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, + 3, 6, 12, 8, 8, 6, 5, 1, 2, 2, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 6, 6, 6, 8, + 6, 8, 8, 10, 10, 12, 14, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 1, 5, 4, 6, 6, 8}; #if SEAMSDEBUG || 1 // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. @@ -2895,16 +2468,16 @@ namespace SEAMS { #if SEAMSDEBUG const short Parser::yyrline_[] = { - 0, 127, 127, 128, 131, 132, 145, 149, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, - 183, 184, 185, 186, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 202, 203, - 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 216, 217, 223, 229, 235, 241, 247, 253, - 259, 263, 267, 270, 272, 280, 282, 290, 291, 292, 293, 302, 303, 304, 305, 307, 310, 314, - 319, 320, 321, 327, 333, 339, 345, 346, 352, 358, 364, 370, 376, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 389, 392, 397, 398, 399, 400, 401, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 418, 420, 423, 426, 429, 432, 434, 437, 440, 443, 446, 453, 460, - 467, 474, 481, 488, 495, 502, 509, 515, 521, 527, 533, 539, 545, 551, 552, 553, 554, 561, - 568, 569, 570, 573, 574, 577, 578, 579, 580, 581, 603}; + 0, 127, 127, 128, 131, 132, 145, 149, 150, 151, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 181, 182, 183, 184, + 185, 186, 188, 189, 190, 191, 192, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, + 207, 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, + 230, 231, 237, 243, 249, 255, 261, 267, 273, 277, 281, 284, 286, 294, 296, 304, 305, 306, 307, + 316, 317, 318, 319, 321, 324, 328, 333, 334, 335, 341, 347, 353, 359, 360, 366, 372, 378, 384, + 390, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 403, 406, 411, 412, 413, 414, 415, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 432, 434, 437, 440, 443, 446, 448, 451, 454, + 457, 460, 467, 474, 481, 488, 495, 502, 509, 516, 523, 529, 535, 541, 547, 553, 559, 565, 566, + 567, 568, 576, 584, 585, 586, 589, 590, 593, 594, 595, 596, 597, 619}; void Parser::yy_stack_print_() const { @@ -2957,8 +2530,5 @@ namespace SEAMS { } } // namespace SEAMS -#line 2966 "apr_parser.cc" - -#line 626 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" void SEAMS::Parser::error(const std::string &m) { aprepro.error(m); } diff --git a/packages/seacas/libraries/aprepro_lib/aprepro.yy b/packages/seacas/libraries/aprepro_lib/aprepro.yy index a36fda0df5..23387e9a40 100644 --- a/packages/seacas/libraries/aprepro_lib/aprepro.yy +++ b/packages/seacas/libraries/aprepro_lib/aprepro.yy @@ -168,29 +168,43 @@ bool: exp LT exp { $$ = $1 < $3; } | exp LAND bool { $$ = $1 && $3; } | LPAR bool RPAR { $$ = $2; } - | UNDVAR LOR exp { $$ = 0 || $3; undefined_error(aprepro, $1->name); } - | UNDVAR LAND exp { $$ = 0 && $3; undefined_error(aprepro, $1->name); } - | exp LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } - | exp LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } - | bool LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } - | bool LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } - | UNDVAR LOR bool { $$ = 0 || $3; undefined_error(aprepro, $1->name); } - | UNDVAR LAND bool { $$ = 0 && $3; undefined_error(aprepro, $1->name); } + | UNDVAR LOR exp { $$ = 0 || $3; undefined_error(aprepro, $1->name); } + | UNDVAR LAND exp { $$ = 0 && $3; undefined_error(aprepro, $1->name); } + | exp LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } + | exp LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } + | bool LOR UNDVAR { $$ = $1 || 0; undefined_error(aprepro, $3->name); } + | bool LAND UNDVAR { $$ = $1 && 0; undefined_error(aprepro, $3->name); } + | UNDVAR LOR bool { $$ = 0 || $3; undefined_error(aprepro, $1->name); } + | UNDVAR LAND bool { $$ = 0 && $3; undefined_error(aprepro, $1->name); } ; bool: sexp LT sexp { $$ = (strcmp($1,$3) < 0 ? 1 : 0); } | sexp GT sexp { $$ = (strcmp($1,$3) > 0 ? 1 : 0); } - | sexp LE sexp { $$ = (strcmp($1,$3) <= 0 ? 1 : 0); } - | sexp GE sexp { $$ = (strcmp($1,$3) >= 0 ? 1 : 0); } - | sexp EQ sexp { $$ = (strcmp($1,$3) == 0 ? 1 : 0); } - | sexp NE sexp { $$ = (strcmp($1,$3) != 0 ? 1 : 0); } + | sexp LE sexp { $$ = (strcmp($1,$3) <= 0 ? 1 : 0); } + | sexp GE sexp { $$ = (strcmp($1,$3) >= 0 ? 1 : 0); } + | sexp EQ sexp { $$ = (strcmp($1,$3) == 0 ? 1 : 0); } + | sexp NE sexp { $$ = (strcmp($1,$3) != 0 ? 1 : 0); } + + | exp LT sexp { $$ = false; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + | exp GT sexp { $$ = false; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + | exp LE sexp { $$ = false; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + | exp GE sexp { $$ = false; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + | exp EQ sexp { $$ = false; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + | exp NE sexp { $$ = true; yyerror(aprepro, "Comparison of arithmetic with string not defined"); yyerrok;} + + | sexp LT exp { $$ = false; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} + | sexp GT exp { $$ = false; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} + | sexp LE exp { $$ = false; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} + | sexp GE exp { $$ = false; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} + | sexp EQ exp { $$ = false; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} + | sexp NE exp { $$ = true; yyerror(aprepro, "Comparison of string with arithmetic not defined"); yyerrok;} | UNDVAR LT sexp { $$ = (strcmp("",$3) < 0 ? 1 : 0); undefined_error(aprepro, $1->name); } | UNDVAR GT sexp { $$ = (strcmp("",$3) > 0 ? 1 : 0); undefined_error(aprepro, $1->name); } - | UNDVAR LE sexp { $$ = (strcmp("",$3) <= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } - | UNDVAR GE sexp { $$ = (strcmp("",$3) >= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } - | UNDVAR EQ sexp { $$ = (strcmp("",$3) == 0 ? 1 : 0); undefined_error(aprepro, $1->name); } - | UNDVAR NE sexp { $$ = (strcmp("",$3) != 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR LE sexp { $$ = (strcmp("",$3) <= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR GE sexp { $$ = (strcmp("",$3) >= 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR EQ sexp { $$ = (strcmp("",$3) == 0 ? 1 : 0); undefined_error(aprepro, $1->name); } + | UNDVAR NE sexp { $$ = (strcmp("",$3) != 0 ? 1 : 0); undefined_error(aprepro, $1->name); } | sexp LT UNDVAR { $$ = (strcmp($1,"") < 0 ? 1 : 0); undefined_error(aprepro, $3->name); } | sexp GT UNDVAR { $$ = (strcmp($1,"") > 0 ? 1 : 0); undefined_error(aprepro, $3->name); } @@ -201,10 +215,10 @@ bool: sexp LT sexp { $$ = (strcmp($1,$3) < 0 ? 1 : 0); } | UNDVAR LT exp { $$ = 0 < $3; undefined_error(aprepro, $1->name); } | UNDVAR GT exp { $$ = 0 > $3; undefined_error(aprepro, $1->name); } - | UNDVAR LE exp { $$ = 0 <= $3; undefined_error(aprepro, $1->name); } - | UNDVAR GE exp { $$ = 0 >= $3; undefined_error(aprepro, $1->name); } - | UNDVAR EQ exp { $$ = 0 == $3; undefined_error(aprepro, $1->name); } - | UNDVAR NE exp { $$ = 0 != $3; undefined_error(aprepro, $1->name); } + | UNDVAR LE exp { $$ = 0 <= $3; undefined_error(aprepro, $1->name); } + | UNDVAR GE exp { $$ = 0 >= $3; undefined_error(aprepro, $1->name); } + | UNDVAR EQ exp { $$ = 0 == $3; undefined_error(aprepro, $1->name); } + | UNDVAR NE exp { $$ = 0 != $3; undefined_error(aprepro, $1->name); } | exp LT UNDVAR { $$ = $1 < 0; undefined_error(aprepro, $3->name); } | exp GT UNDVAR { $$ = $1 > 0; undefined_error(aprepro, $3->name); } @@ -553,6 +567,7 @@ exp: NUM { $$ = $1; } | exp TIM exp { $$ = $1 * $3; } | exp DIV exp { if ($3 == 0.) { + $$ = std::numeric_limits::infinity(); yyerror(aprepro, "Zero divisor"); yyerrok; } @@ -560,6 +575,7 @@ exp: NUM { $$ = $1; } $$ = $1 / $3; } | exp MOD exp { if ($3 == 0.) { + $$ = (int)$1; yyerror(aprepro, "Zero divisor"); yyerrok; } diff --git a/packages/seacas/libraries/aprepro_lib/aprepro_parser.h b/packages/seacas/libraries/aprepro_lib/aprepro_parser.h index 0b2eb4fcd9..6b926df66b 100644 --- a/packages/seacas/libraries/aprepro_lib/aprepro_parser.h +++ b/packages/seacas/libraries/aprepro_lib/aprepro_parser.h @@ -177,7 +177,6 @@ #endif /* ! defined SEAMSDEBUG */ namespace SEAMS { -#line 190 "aprepro_parser.h" /// A Bison parser. class Parser @@ -191,14 +190,11 @@ namespace SEAMS { #else /// Symbol semantic values. union value_type { -#line 71 "/Users/gdsjaar/src/seacas/packages/seacas/libraries/aprepro_lib/aprepro.yy" double val; /* For returning numbers. */ struct symrec *tptr; /* For returning symbol-table pointers */ char *string; /* For returning quoted strings */ struct array *arrval; /* For returning arrays */ - -#line 215 "aprepro_parser.h" }; #endif /// Backward compatibility (Bison 3.8). @@ -780,7 +776,7 @@ namespace SEAMS { /// Constants. enum { - yylast_ = 1804, ///< Last index in yytable_. + yylast_ = 1841, ///< Last index in yytable_. yynnts_ = 7, ///< Number of nonterminal symbols. yyfinal_ = 2 ///< Termination state number. }; @@ -790,6 +786,5 @@ namespace SEAMS { }; } // namespace SEAMS -#line 881 "aprepro_parser.h" #endif // !YY_SEAMS_APREPRO_PARSER_H_INCLUDED From d963a3dbbe512ba9f87fe549e8ed4a8d493d1ede Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Tue, 7 May 2024 09:45:46 -0400 Subject: [PATCH 15/19] APREPRO: Update version for last change --- packages/seacas/libraries/aprepro_lib/apr_aprepro.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc index 57007b9edf..5826263c90 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc @@ -33,8 +33,8 @@ #endif namespace { - const std::string version_short{"6.29"}; - const std::string version_date{"(2024/04/23)"}; + const std::string version_short{"6.30"}; + const std::string version_date{"(2024/05/07)"}; const std::string version_string = version_short + " " + version_date; void output_copyright(); From ee84e4cc32fafd4919d83d137a7d76f270de348a Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Mon, 13 May 2024 13:40:51 -0600 Subject: [PATCH 16/19] APREPRO: Fix erfc function -- was overriding erf function --- packages/seacas/libraries/aprepro_lib/apr_aprepro.cc | 4 ++-- packages/seacas/libraries/aprepro_lib/apr_init.cc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc index 5826263c90..6058de08d4 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_aprepro.cc @@ -33,8 +33,8 @@ #endif namespace { - const std::string version_short{"6.30"}; - const std::string version_date{"(2024/05/07)"}; + const std::string version_short{"6.31"}; + const std::string version_date{"(2024/05/13)"}; const std::string version_string = version_short + " " + version_date; void output_copyright(); diff --git a/packages/seacas/libraries/aprepro_lib/apr_init.cc b/packages/seacas/libraries/aprepro_lib/apr_init.cc index ce8c16b2c7..62b0686896 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_init.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_init.cc @@ -1,4 +1,4 @@ -// Copyright(C) 1999-2023 National Technology & Engineering Solutions +// Copyright(C) 1999-2024 National Technology & Engineering Solutions // of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with // NTESS, the U.S. Government retains certain rights in this software. // @@ -40,7 +40,7 @@ namespace SEAMS { {"cosh", do_cosh, "cosh(x)", "Hyperbolic cosine of x."}, {"d2r", do_d2r, "d2r(x)", "Degrees to radians."}, {"erf", do_erf, "erf(x)", "Error Function of x"}, - {"erf", do_erfc, "erfc(x)", "Complementary Error Function of x"}, + {"erfc", do_erfc, "erfc(x)", "Complementary Error Function of x"}, {"exp", do_exp, "exp(x)", "Exponential: e^x"}, {"expm1", do_expm1, "expm1(x)", "Exponential: Accurate version of e^x - 1.0 for small x"}, {"floor", do_floor, "floor(x)", "Largest integer not greater than x."}, From 463d4e683726cdd7097808568833cd619eb932e4 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Mon, 13 May 2024 14:36:05 -0600 Subject: [PATCH 17/19] EXODUS: Python - fix copytransfer with additional variables --- packages/seacas/scripts/exodus3.in.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/seacas/scripts/exodus3.in.py b/packages/seacas/scripts/exodus3.in.py index a9c573c1e5..7075b31438 100644 --- a/packages/seacas/scripts/exodus3.in.py +++ b/packages/seacas/scripts/exodus3.in.py @@ -1,5 +1,5 @@ """ -exodus.py v 1.21.2 (seacas-py3) is a python wrapper of some of the exodus library +exodus.py v 1.21.3 (seacas-py3) is a python wrapper of some of the exodus library (Python 3 Version) Exodus is a common database for multiple application codes (mesh @@ -78,10 +78,10 @@ EXODUS_PY_COPYRIGHT_AND_LICENSE = __doc__ -EXODUS_PY_VERSION = "1.21.2 (seacas-py3)" +EXODUS_PY_VERSION = "1.21.3 (seacas-py3)" EXODUS_PY_COPYRIGHT = """ -You are using exodus.py v 1.21.2 (seacas-py3), a python wrapper of some of the exodus library. +You are using exodus.py v 1.21.3 (seacas-py3), a python wrapper of some of the exodus library. Copyright (c) 2013-2023 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of @@ -6761,7 +6761,10 @@ def internal_transfer_variables(exoFrom, exo_to, obj_type, additionalVariables, if nVars > 0: exo_to.set_variable_number(obj_type, nVars) origVarNames = exoFrom.get_variable_names(obj_type) - origVarNames.extend(newVariableNames) + varNames = [] + varNames.extend(origVarNames) + varNames.extend(newVariableNames) + truthTable = [] if nOrigVars > 0: truthTable = exoFrom.get_variable_truth_table(obj_type) @@ -6780,7 +6783,7 @@ def internal_transfer_variables(exoFrom, exo_to, obj_type, additionalVariables, truthTable = newTruth exo_to.set_variable_truth_table(obj_type, truthTable) for nameIndex in range(nVars): - varName = origVarNames[nameIndex] + varName = varNames[nameIndex] exo_to.put_variable_name(obj_type, varName, nameIndex + 1) truthIndex = 0 for blkId in blkIds: From 7990ec8edda57124a58a8052586c48620f0d92a7 Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Wed, 15 May 2024 17:29:43 -0600 Subject: [PATCH 18/19] APREPRO: Remove unused variable [ci skip] --- packages/seacas/libraries/aprepro_lib/apr_parser.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/seacas/libraries/aprepro_lib/apr_parser.cc b/packages/seacas/libraries/aprepro_lib/apr_parser.cc index 45a3392132..b31b887a42 100644 --- a/packages/seacas/libraries/aprepro_lib/apr_parser.cc +++ b/packages/seacas/libraries/aprepro_lib/apr_parser.cc @@ -380,7 +380,6 @@ namespace SEAMS { int yylen = 0; // Error handling. - int yynerrs_ = 0; int yyerrstatus_ = 0; /// The lookahead symbol. @@ -1843,7 +1842,6 @@ namespace SEAMS { yyerrlab: // If not already recovering from an error, report this error. if (!yyerrstatus_) { - ++yynerrs_; context yyctx(*this, yyla); std::string msg = yysyntax_error_(yyctx); error(YY_MOVE(msg)); From 91362787d0e3ea0bb46a0317747395d99f004a7d Mon Sep 17 00:00:00 2001 From: Greg Sjaardema Date: Thu, 16 May 2024 09:14:27 -0600 Subject: [PATCH 19/19] EXODUS: Import a specific exodus version from exomerge --- packages/seacas/scripts/exomerge2.py | 7 ++----- packages/seacas/scripts/exomerge3.py | 5 +---- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/seacas/scripts/exomerge2.py b/packages/seacas/scripts/exomerge2.py index 6ec456a6c7..0388975bf0 100755 --- a/packages/seacas/scripts/exomerge2.py +++ b/packages/seacas/scripts/exomerge2.py @@ -1,7 +1,7 @@ """ Exomerge is a lightweight Python interface for manipulating ExodusII files. -Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions +Copyright(C) 1999-2020, 2023, 2024 National Technology & Engineering Solutions of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government retains certain rights in this software. @@ -53,10 +53,7 @@ # import exodus module # (exodus.py should be in the same directory as this file) -try: - import exodus -except: - import exodus2 as exodus +import exodus2 as exodus # informal version number of this module __version__ = 8.6 diff --git a/packages/seacas/scripts/exomerge3.py b/packages/seacas/scripts/exomerge3.py index d07e1ea5e1..76779addcb 100644 --- a/packages/seacas/scripts/exomerge3.py +++ b/packages/seacas/scripts/exomerge3.py @@ -54,10 +54,7 @@ # import exodus module # (exodus.py should be in the same directory as this file) -try: - import exodus -except Exception: - import exodus3 as exodus +import exodus3 as exodus # informal version number of this module __version__ = "8.6.1"